123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327243282432924330243312433224333243342433524336243372433824339243402434124342243432434424345243462434724348243492435024351243522435324354243552435624357243582435924360243612436224363243642436524366243672436824369243702437124372243732437424375243762437724378243792438024381243822438324384243852438624387243882438924390243912439224393243942439524396243972439824399244002440124402244032440424405244062440724408244092441024411244122441324414244152441624417244182441924420244212442224423244242442524426244272442824429244302443124432244332443424435244362443724438244392444024441244422444324444244452444624447244482444924450244512445224453244542445524456244572445824459244602446124462244632446424465244662446724468244692447024471244722447324474244752447624477244782447924480244812448224483244842448524486244872448824489244902449124492244932449424495244962449724498244992450024501245022450324504245052450624507245082450924510245112451224513245142451524516245172451824519245202452124522245232452424525245262452724528245292453024531245322453324534245352453624537245382453924540245412454224543245442454524546245472454824549245502455124552245532455424555245562455724558245592456024561245622456324564245652456624567245682456924570245712457224573245742457524576245772457824579245802458124582245832458424585245862458724588245892459024591245922459324594245952459624597245982459924600246012460224603246042460524606246072460824609246102461124612246132461424615246162461724618246192462024621246222462324624246252462624627246282462924630246312463224633246342463524636246372463824639246402464124642246432464424645246462464724648246492465024651246522465324654246552465624657246582465924660246612466224663246642466524666246672466824669246702467124672246732467424675246762467724678246792468024681246822468324684246852468624687246882468924690246912469224693246942469524696246972469824699247002470124702247032470424705247062470724708247092471024711247122471324714247152471624717247182471924720247212472224723247242472524726247272472824729247302473124732247332473424735247362473724738247392474024741247422474324744247452474624747247482474924750247512475224753247542475524756247572475824759247602476124762247632476424765247662476724768247692477024771247722477324774247752477624777247782477924780247812478224783247842478524786247872478824789247902479124792247932479424795247962479724798247992480024801248022480324804248052480624807248082480924810248112481224813248142481524816248172481824819248202482124822248232482424825248262482724828248292483024831248322483324834248352483624837248382483924840248412484224843248442484524846248472484824849248502485124852248532485424855248562485724858248592486024861248622486324864248652486624867248682486924870248712487224873248742487524876248772487824879248802488124882248832488424885248862488724888248892489024891248922489324894248952489624897248982489924900249012490224903249042490524906249072490824909249102491124912249132491424915249162491724918249192492024921249222492324924249252492624927249282492924930249312493224933249342493524936249372493824939249402494124942249432494424945249462494724948249492495024951249522495324954249552495624957249582495924960249612496224963249642496524966249672496824969249702497124972249732497424975249762497724978249792498024981249822498324984249852498624987249882498924990249912499224993249942499524996249972499824999250002500125002250032500425005250062500725008250092501025011250122501325014250152501625017250182501925020250212502225023250242502525026250272502825029250302503125032250332503425035250362503725038250392504025041250422504325044250452504625047250482504925050250512505225053250542505525056250572505825059250602506125062250632506425065250662506725068250692507025071250722507325074250752507625077250782507925080250812508225083250842508525086250872508825089250902509125092250932509425095250962509725098250992510025101251022510325104251052510625107251082510925110251112511225113251142511525116251172511825119251202512125122251232512425125251262512725128251292513025131251322513325134251352513625137251382513925140251412514225143251442514525146251472514825149251502515125152251532515425155251562515725158251592516025161251622516325164251652516625167251682516925170251712517225173251742517525176251772517825179251802518125182251832518425185251862518725188251892519025191251922519325194251952519625197251982519925200252012520225203252042520525206252072520825209252102521125212252132521425215252162521725218252192522025221252222522325224252252522625227252282522925230252312523225233252342523525236252372523825239252402524125242252432524425245252462524725248252492525025251252522525325254252552525625257252582525925260252612526225263252642526525266252672526825269252702527125272252732527425275252762527725278252792528025281252822528325284252852528625287252882528925290252912529225293252942529525296252972529825299253002530125302253032530425305253062530725308253092531025311253122531325314253152531625317253182531925320253212532225323253242532525326253272532825329253302533125332253332533425335253362533725338253392534025341253422534325344253452534625347253482534925350253512535225353253542535525356253572535825359253602536125362253632536425365253662536725368253692537025371253722537325374253752537625377253782537925380253812538225383253842538525386253872538825389253902539125392253932539425395253962539725398253992540025401254022540325404254052540625407254082540925410254112541225413254142541525416254172541825419254202542125422254232542425425254262542725428254292543025431254322543325434254352543625437254382543925440254412544225443254442544525446254472544825449254502545125452254532545425455254562545725458254592546025461254622546325464254652546625467254682546925470254712547225473254742547525476254772547825479254802548125482254832548425485254862548725488254892549025491254922549325494254952549625497254982549925500255012550225503255042550525506255072550825509255102551125512255132551425515255162551725518255192552025521255222552325524255252552625527255282552925530255312553225533255342553525536255372553825539255402554125542255432554425545255462554725548255492555025551255522555325554255552555625557255582555925560255612556225563255642556525566255672556825569255702557125572255732557425575255762557725578255792558025581255822558325584255852558625587255882558925590255912559225593255942559525596255972559825599256002560125602256032560425605256062560725608256092561025611256122561325614256152561625617256182561925620256212562225623256242562525626256272562825629256302563125632256332563425635256362563725638256392564025641256422564325644256452564625647256482564925650256512565225653256542565525656256572565825659256602566125662256632566425665256662566725668256692567025671256722567325674256752567625677256782567925680256812568225683256842568525686256872568825689256902569125692256932569425695256962569725698256992570025701257022570325704257052570625707257082570925710257112571225713257142571525716257172571825719257202572125722257232572425725257262572725728257292573025731257322573325734257352573625737257382573925740257412574225743257442574525746257472574825749257502575125752257532575425755257562575725758257592576025761257622576325764257652576625767257682576925770257712577225773257742577525776257772577825779257802578125782257832578425785257862578725788257892579025791257922579325794257952579625797257982579925800258012580225803258042580525806258072580825809258102581125812258132581425815258162581725818258192582025821258222582325824258252582625827258282582925830258312583225833258342583525836258372583825839258402584125842258432584425845258462584725848258492585025851258522585325854258552585625857258582585925860258612586225863258642586525866258672586825869258702587125872258732587425875258762587725878258792588025881258822588325884258852588625887258882588925890258912589225893258942589525896258972589825899259002590125902259032590425905259062590725908259092591025911259122591325914259152591625917259182591925920259212592225923259242592525926259272592825929259302593125932259332593425935259362593725938259392594025941259422594325944259452594625947259482594925950259512595225953259542595525956259572595825959259602596125962259632596425965259662596725968259692597025971259722597325974259752597625977259782597925980259812598225983259842598525986259872598825989259902599125992259932599425995259962599725998259992600026001260022600326004260052600626007260082600926010260112601226013260142601526016260172601826019260202602126022260232602426025260262602726028260292603026031260322603326034260352603626037260382603926040260412604226043260442604526046260472604826049260502605126052260532605426055260562605726058260592606026061260622606326064260652606626067260682606926070260712607226073260742607526076260772607826079260802608126082260832608426085260862608726088260892609026091260922609326094260952609626097260982609926100261012610226103261042610526106261072610826109261102611126112261132611426115261162611726118261192612026121261222612326124261252612626127261282612926130261312613226133261342613526136261372613826139261402614126142261432614426145261462614726148261492615026151261522615326154261552615626157261582615926160261612616226163261642616526166261672616826169261702617126172261732617426175261762617726178261792618026181261822618326184261852618626187261882618926190261912619226193261942619526196261972619826199262002620126202262032620426205262062620726208262092621026211262122621326214262152621626217262182621926220262212622226223262242622526226262272622826229262302623126232262332623426235262362623726238262392624026241262422624326244262452624626247262482624926250262512625226253262542625526256262572625826259262602626126262262632626426265262662626726268262692627026271262722627326274262752627626277262782627926280262812628226283262842628526286262872628826289262902629126292262932629426295262962629726298262992630026301263022630326304263052630626307263082630926310263112631226313263142631526316263172631826319263202632126322263232632426325263262632726328263292633026331263322633326334263352633626337263382633926340263412634226343263442634526346263472634826349263502635126352263532635426355263562635726358263592636026361263622636326364263652636626367263682636926370263712637226373263742637526376263772637826379263802638126382263832638426385263862638726388263892639026391263922639326394263952639626397263982639926400264012640226403264042640526406264072640826409264102641126412264132641426415264162641726418264192642026421264222642326424264252642626427264282642926430264312643226433264342643526436264372643826439264402644126442264432644426445264462644726448264492645026451264522645326454264552645626457264582645926460264612646226463264642646526466264672646826469264702647126472264732647426475264762647726478264792648026481264822648326484264852648626487264882648926490264912649226493264942649526496264972649826499265002650126502265032650426505265062650726508265092651026511265122651326514265152651626517265182651926520265212652226523265242652526526265272652826529265302653126532265332653426535265362653726538265392654026541265422654326544265452654626547265482654926550265512655226553265542655526556265572655826559265602656126562265632656426565265662656726568265692657026571265722657326574265752657626577265782657926580265812658226583265842658526586265872658826589265902659126592265932659426595265962659726598265992660026601266022660326604266052660626607266082660926610266112661226613266142661526616266172661826619266202662126622266232662426625266262662726628266292663026631266322663326634266352663626637266382663926640266412664226643266442664526646266472664826649266502665126652266532665426655266562665726658266592666026661266622666326664266652666626667266682666926670266712667226673266742667526676266772667826679266802668126682266832668426685266862668726688266892669026691266922669326694266952669626697266982669926700267012670226703267042670526706267072670826709267102671126712267132671426715267162671726718267192672026721267222672326724267252672626727267282672926730267312673226733267342673526736267372673826739267402674126742267432674426745267462674726748267492675026751267522675326754267552675626757267582675926760267612676226763267642676526766267672676826769267702677126772267732677426775267762677726778267792678026781267822678326784267852678626787267882678926790267912679226793267942679526796267972679826799268002680126802268032680426805268062680726808268092681026811268122681326814268152681626817268182681926820268212682226823268242682526826268272682826829268302683126832268332683426835268362683726838268392684026841268422684326844268452684626847268482684926850268512685226853268542685526856268572685826859268602686126862268632686426865268662686726868268692687026871268722687326874268752687626877268782687926880268812688226883268842688526886268872688826889268902689126892268932689426895268962689726898268992690026901269022690326904269052690626907269082690926910269112691226913269142691526916269172691826919269202692126922269232692426925269262692726928269292693026931269322693326934269352693626937269382693926940269412694226943269442694526946269472694826949269502695126952269532695426955269562695726958269592696026961269622696326964269652696626967269682696926970269712697226973269742697526976269772697826979269802698126982269832698426985269862698726988269892699026991269922699326994269952699626997269982699927000270012700227003270042700527006270072700827009270102701127012270132701427015270162701727018270192702027021270222702327024270252702627027270282702927030270312703227033270342703527036270372703827039270402704127042270432704427045270462704727048270492705027051270522705327054270552705627057270582705927060270612706227063270642706527066270672706827069270702707127072270732707427075270762707727078270792708027081270822708327084270852708627087270882708927090270912709227093270942709527096270972709827099271002710127102271032710427105271062710727108271092711027111271122711327114271152711627117271182711927120271212712227123271242712527126271272712827129271302713127132271332713427135271362713727138271392714027141271422714327144271452714627147271482714927150271512715227153271542715527156271572715827159271602716127162271632716427165271662716727168271692717027171271722717327174271752717627177271782717927180271812718227183271842718527186271872718827189271902719127192271932719427195271962719727198271992720027201272022720327204272052720627207272082720927210272112721227213272142721527216272172721827219272202722127222272232722427225272262722727228272292723027231272322723327234272352723627237272382723927240272412724227243272442724527246272472724827249272502725127252272532725427255272562725727258272592726027261272622726327264272652726627267272682726927270272712727227273272742727527276272772727827279272802728127282272832728427285272862728727288272892729027291272922729327294272952729627297272982729927300273012730227303273042730527306273072730827309273102731127312273132731427315273162731727318273192732027321273222732327324273252732627327273282732927330273312733227333273342733527336273372733827339273402734127342273432734427345273462734727348273492735027351273522735327354273552735627357273582735927360273612736227363273642736527366273672736827369273702737127372273732737427375273762737727378273792738027381273822738327384273852738627387273882738927390273912739227393273942739527396273972739827399274002740127402274032740427405274062740727408274092741027411274122741327414274152741627417274182741927420274212742227423274242742527426274272742827429274302743127432274332743427435274362743727438274392744027441274422744327444274452744627447274482744927450274512745227453274542745527456274572745827459274602746127462274632746427465274662746727468274692747027471274722747327474274752747627477274782747927480274812748227483274842748527486274872748827489274902749127492274932749427495274962749727498274992750027501275022750327504275052750627507275082750927510275112751227513275142751527516275172751827519275202752127522275232752427525275262752727528275292753027531275322753327534275352753627537275382753927540275412754227543275442754527546275472754827549275502755127552275532755427555275562755727558275592756027561275622756327564275652756627567275682756927570275712757227573275742757527576275772757827579275802758127582275832758427585275862758727588275892759027591275922759327594275952759627597275982759927600276012760227603276042760527606276072760827609276102761127612276132761427615276162761727618276192762027621276222762327624276252762627627276282762927630276312763227633276342763527636276372763827639276402764127642276432764427645276462764727648276492765027651276522765327654276552765627657276582765927660276612766227663276642766527666276672766827669276702767127672276732767427675276762767727678276792768027681276822768327684276852768627687276882768927690276912769227693276942769527696276972769827699277002770127702277032770427705277062770727708277092771027711277122771327714277152771627717277182771927720277212772227723277242772527726277272772827729277302773127732277332773427735277362773727738277392774027741277422774327744277452774627747277482774927750277512775227753277542775527756277572775827759277602776127762277632776427765277662776727768277692777027771277722777327774277752777627777277782777927780277812778227783277842778527786277872778827789277902779127792277932779427795277962779727798277992780027801278022780327804278052780627807278082780927810278112781227813278142781527816278172781827819278202782127822278232782427825278262782727828278292783027831278322783327834278352783627837278382783927840278412784227843278442784527846278472784827849278502785127852278532785427855278562785727858278592786027861278622786327864278652786627867278682786927870278712787227873278742787527876278772787827879278802788127882278832788427885278862788727888278892789027891278922789327894278952789627897278982789927900279012790227903279042790527906279072790827909279102791127912279132791427915279162791727918279192792027921279222792327924279252792627927279282792927930279312793227933279342793527936279372793827939279402794127942279432794427945279462794727948279492795027951279522795327954279552795627957279582795927960279612796227963279642796527966279672796827969279702797127972279732797427975279762797727978279792798027981279822798327984279852798627987279882798927990279912799227993279942799527996279972799827999280002800128002280032800428005280062800728008280092801028011280122801328014280152801628017280182801928020280212802228023280242802528026280272802828029280302803128032280332803428035280362803728038280392804028041280422804328044280452804628047280482804928050280512805228053280542805528056280572805828059280602806128062280632806428065280662806728068280692807028071280722807328074280752807628077280782807928080280812808228083280842808528086280872808828089280902809128092280932809428095280962809728098280992810028101281022810328104281052810628107281082810928110281112811228113281142811528116281172811828119281202812128122281232812428125281262812728128281292813028131281322813328134281352813628137281382813928140281412814228143281442814528146281472814828149281502815128152281532815428155281562815728158281592816028161281622816328164281652816628167281682816928170281712817228173281742817528176281772817828179281802818128182281832818428185281862818728188281892819028191281922819328194281952819628197281982819928200282012820228203282042820528206282072820828209282102821128212282132821428215282162821728218282192822028221282222822328224282252822628227282282822928230282312823228233282342823528236282372823828239282402824128242282432824428245282462824728248282492825028251282522825328254282552825628257282582825928260282612826228263282642826528266282672826828269282702827128272282732827428275282762827728278282792828028281282822828328284282852828628287282882828928290282912829228293282942829528296282972829828299283002830128302283032830428305283062830728308283092831028311283122831328314283152831628317283182831928320283212832228323283242832528326283272832828329283302833128332283332833428335283362833728338283392834028341283422834328344283452834628347283482834928350283512835228353283542835528356283572835828359283602836128362283632836428365283662836728368283692837028371283722837328374283752837628377283782837928380283812838228383283842838528386283872838828389283902839128392283932839428395283962839728398283992840028401284022840328404284052840628407284082840928410284112841228413284142841528416284172841828419284202842128422284232842428425284262842728428284292843028431284322843328434284352843628437284382843928440284412844228443284442844528446284472844828449284502845128452284532845428455284562845728458284592846028461284622846328464284652846628467284682846928470284712847228473284742847528476284772847828479284802848128482284832848428485284862848728488284892849028491284922849328494284952849628497284982849928500285012850228503285042850528506285072850828509285102851128512285132851428515285162851728518285192852028521285222852328524285252852628527285282852928530285312853228533285342853528536285372853828539285402854128542285432854428545285462854728548285492855028551285522855328554285552855628557285582855928560285612856228563285642856528566285672856828569285702857128572285732857428575285762857728578285792858028581285822858328584285852858628587285882858928590285912859228593285942859528596285972859828599286002860128602286032860428605286062860728608286092861028611286122861328614286152861628617286182861928620286212862228623286242862528626286272862828629286302863128632286332863428635286362863728638286392864028641286422864328644286452864628647286482864928650286512865228653286542865528656286572865828659286602866128662286632866428665286662866728668286692867028671286722867328674286752867628677286782867928680286812868228683286842868528686286872868828689286902869128692286932869428695286962869728698286992870028701287022870328704287052870628707287082870928710287112871228713287142871528716287172871828719287202872128722287232872428725287262872728728287292873028731287322873328734287352873628737287382873928740287412874228743287442874528746287472874828749287502875128752287532875428755287562875728758287592876028761287622876328764287652876628767287682876928770287712877228773287742877528776287772877828779287802878128782287832878428785287862878728788287892879028791287922879328794287952879628797287982879928800288012880228803288042880528806288072880828809288102881128812288132881428815288162881728818288192882028821288222882328824288252882628827288282882928830288312883228833288342883528836288372883828839288402884128842288432884428845288462884728848288492885028851288522885328854288552885628857288582885928860288612886228863288642886528866288672886828869288702887128872288732887428875288762887728878288792888028881288822888328884288852888628887288882888928890288912889228893288942889528896288972889828899289002890128902289032890428905289062890728908289092891028911289122891328914289152891628917289182891928920289212892228923289242892528926289272892828929289302893128932289332893428935289362893728938289392894028941289422894328944289452894628947289482894928950289512895228953289542895528956289572895828959289602896128962289632896428965289662896728968289692897028971289722897328974289752897628977289782897928980289812898228983289842898528986289872898828989289902899128992289932899428995289962899728998289992900029001290022900329004290052900629007290082900929010290112901229013290142901529016290172901829019290202902129022290232902429025290262902729028290292903029031290322903329034290352903629037290382903929040290412904229043290442904529046290472904829049290502905129052290532905429055290562905729058290592906029061290622906329064290652906629067290682906929070290712907229073290742907529076290772907829079290802908129082290832908429085290862908729088290892909029091290922909329094290952909629097290982909929100291012910229103291042910529106291072910829109291102911129112291132911429115291162911729118291192912029121291222912329124291252912629127291282912929130291312913229133291342913529136291372913829139291402914129142291432914429145291462914729148291492915029151291522915329154291552915629157291582915929160291612916229163291642916529166291672916829169291702917129172291732917429175291762917729178291792918029181291822918329184291852918629187291882918929190291912919229193291942919529196291972919829199292002920129202292032920429205292062920729208292092921029211292122921329214292152921629217292182921929220292212922229223292242922529226292272922829229292302923129232292332923429235292362923729238292392924029241292422924329244292452924629247292482924929250292512925229253292542925529256292572925829259292602926129262292632926429265292662926729268292692927029271292722927329274292752927629277292782927929280292812928229283292842928529286292872928829289292902929129292292932929429295292962929729298292992930029301293022930329304293052930629307293082930929310293112931229313293142931529316293172931829319293202932129322293232932429325293262932729328293292933029331293322933329334293352933629337293382933929340293412934229343293442934529346293472934829349293502935129352293532935429355293562935729358293592936029361293622936329364293652936629367293682936929370293712937229373293742937529376293772937829379293802938129382293832938429385293862938729388293892939029391293922939329394293952939629397293982939929400294012940229403294042940529406294072940829409294102941129412294132941429415294162941729418294192942029421294222942329424294252942629427294282942929430294312943229433294342943529436294372943829439294402944129442294432944429445294462944729448294492945029451294522945329454294552945629457294582945929460294612946229463294642946529466294672946829469294702947129472294732947429475294762947729478294792948029481294822948329484294852948629487294882948929490294912949229493294942949529496294972949829499295002950129502295032950429505295062950729508295092951029511295122951329514295152951629517295182951929520295212952229523295242952529526295272952829529295302953129532295332953429535295362953729538295392954029541295422954329544295452954629547295482954929550295512955229553295542955529556295572955829559295602956129562295632956429565295662956729568295692957029571295722957329574295752957629577295782957929580295812958229583295842958529586295872958829589295902959129592295932959429595295962959729598295992960029601296022960329604296052960629607296082960929610296112961229613296142961529616296172961829619296202962129622296232962429625296262962729628296292963029631296322963329634296352963629637296382963929640296412964229643296442964529646296472964829649296502965129652296532965429655296562965729658296592966029661296622966329664296652966629667296682966929670296712967229673296742967529676296772967829679296802968129682296832968429685296862968729688296892969029691296922969329694296952969629697296982969929700297012970229703297042970529706297072970829709297102971129712297132971429715297162971729718297192972029721297222972329724297252972629727297282972929730297312973229733297342973529736297372973829739297402974129742297432974429745297462974729748297492975029751297522975329754297552975629757297582975929760297612976229763297642976529766297672976829769297702977129772297732977429775297762977729778297792978029781297822978329784297852978629787297882978929790297912979229793297942979529796297972979829799298002980129802298032980429805298062980729808298092981029811298122981329814298152981629817298182981929820298212982229823298242982529826298272982829829298302983129832298332983429835298362983729838298392984029841298422984329844298452984629847298482984929850298512985229853298542985529856298572985829859298602986129862298632986429865298662986729868298692987029871298722987329874298752987629877298782987929880298812988229883298842988529886298872988829889298902989129892298932989429895298962989729898298992990029901299022990329904299052990629907299082990929910299112991229913299142991529916299172991829919299202992129922299232992429925299262992729928299292993029931299322993329934299352993629937299382993929940299412994229943299442994529946299472994829949299502995129952299532995429955299562995729958299592996029961299622996329964299652996629967299682996929970299712997229973299742997529976299772997829979299802998129982299832998429985299862998729988299892999029991299922999329994299952999629997299982999930000300013000230003300043000530006300073000830009300103001130012300133001430015300163001730018300193002030021300223002330024300253002630027300283002930030300313003230033300343003530036300373003830039300403004130042300433004430045300463004730048300493005030051300523005330054300553005630057300583005930060300613006230063300643006530066300673006830069300703007130072300733007430075300763007730078300793008030081300823008330084300853008630087300883008930090300913009230093300943009530096300973009830099301003010130102301033010430105301063010730108301093011030111301123011330114301153011630117301183011930120301213012230123301243012530126301273012830129301303013130132301333013430135301363013730138301393014030141301423014330144301453014630147301483014930150301513015230153301543015530156301573015830159301603016130162301633016430165301663016730168301693017030171301723017330174301753017630177301783017930180301813018230183301843018530186301873018830189301903019130192301933019430195301963019730198301993020030201302023020330204302053020630207302083020930210302113021230213302143021530216302173021830219302203022130222302233022430225302263022730228302293023030231302323023330234302353023630237302383023930240302413024230243302443024530246302473024830249302503025130252302533025430255302563025730258302593026030261302623026330264302653026630267302683026930270302713027230273302743027530276302773027830279302803028130282302833028430285302863028730288302893029030291302923029330294302953029630297302983029930300303013030230303303043030530306303073030830309303103031130312303133031430315303163031730318303193032030321303223032330324303253032630327303283032930330303313033230333303343033530336303373033830339303403034130342303433034430345303463034730348303493035030351303523035330354303553035630357303583035930360303613036230363303643036530366303673036830369303703037130372303733037430375303763037730378303793038030381303823038330384303853038630387303883038930390303913039230393303943039530396303973039830399304003040130402304033040430405304063040730408304093041030411304123041330414304153041630417304183041930420304213042230423304243042530426304273042830429304303043130432304333043430435304363043730438304393044030441304423044330444304453044630447304483044930450304513045230453304543045530456304573045830459304603046130462304633046430465304663046730468304693047030471304723047330474304753047630477304783047930480304813048230483304843048530486304873048830489304903049130492304933049430495304963049730498304993050030501305023050330504305053050630507305083050930510305113051230513305143051530516305173051830519305203052130522305233052430525305263052730528305293053030531305323053330534305353053630537305383053930540305413054230543305443054530546305473054830549305503055130552305533055430555305563055730558305593056030561305623056330564305653056630567305683056930570305713057230573305743057530576305773057830579305803058130582305833058430585305863058730588305893059030591305923059330594305953059630597305983059930600306013060230603306043060530606306073060830609306103061130612306133061430615306163061730618306193062030621306223062330624306253062630627306283062930630306313063230633306343063530636306373063830639306403064130642306433064430645306463064730648306493065030651306523065330654306553065630657306583065930660306613066230663306643066530666306673066830669306703067130672306733067430675306763067730678306793068030681306823068330684306853068630687306883068930690306913069230693306943069530696306973069830699307003070130702307033070430705307063070730708307093071030711307123071330714307153071630717307183071930720307213072230723307243072530726307273072830729307303073130732307333073430735307363073730738307393074030741307423074330744307453074630747307483074930750307513075230753307543075530756307573075830759307603076130762307633076430765307663076730768307693077030771307723077330774307753077630777307783077930780307813078230783307843078530786307873078830789307903079130792307933079430795307963079730798307993080030801308023080330804308053080630807308083080930810308113081230813308143081530816308173081830819308203082130822308233082430825308263082730828308293083030831308323083330834308353083630837308383083930840308413084230843308443084530846308473084830849308503085130852308533085430855308563085730858308593086030861308623086330864308653086630867308683086930870308713087230873308743087530876308773087830879308803088130882308833088430885308863088730888308893089030891308923089330894308953089630897308983089930900309013090230903309043090530906309073090830909309103091130912309133091430915309163091730918309193092030921309223092330924309253092630927309283092930930309313093230933309343093530936309373093830939309403094130942309433094430945309463094730948309493095030951309523095330954309553095630957309583095930960309613096230963309643096530966309673096830969309703097130972309733097430975309763097730978309793098030981309823098330984309853098630987309883098930990309913099230993309943099530996309973099830999310003100131002310033100431005310063100731008310093101031011310123101331014310153101631017310183101931020310213102231023310243102531026310273102831029310303103131032310333103431035310363103731038310393104031041310423104331044310453104631047310483104931050310513105231053310543105531056310573105831059310603106131062310633106431065310663106731068310693107031071310723107331074310753107631077310783107931080310813108231083310843108531086310873108831089310903109131092310933109431095310963109731098310993110031101311023110331104311053110631107311083110931110311113111231113311143111531116311173111831119311203112131122311233112431125311263112731128311293113031131311323113331134311353113631137311383113931140311413114231143311443114531146311473114831149311503115131152311533115431155311563115731158311593116031161311623116331164311653116631167311683116931170311713117231173311743117531176311773117831179311803118131182311833118431185311863118731188311893119031191311923119331194311953119631197311983119931200312013120231203312043120531206312073120831209312103121131212312133121431215312163121731218312193122031221312223122331224312253122631227312283122931230312313123231233312343123531236312373123831239312403124131242312433124431245312463124731248312493125031251312523125331254312553125631257312583125931260312613126231263312643126531266312673126831269312703127131272312733127431275312763127731278312793128031281312823128331284312853128631287312883128931290312913129231293312943129531296312973129831299313003130131302313033130431305313063130731308313093131031311313123131331314313153131631317313183131931320313213132231323313243132531326313273132831329313303133131332313333133431335313363133731338313393134031341313423134331344313453134631347313483134931350313513135231353313543135531356313573135831359313603136131362313633136431365313663136731368313693137031371313723137331374313753137631377313783137931380313813138231383313843138531386313873138831389313903139131392313933139431395313963139731398313993140031401314023140331404314053140631407314083140931410314113141231413314143141531416314173141831419314203142131422314233142431425314263142731428314293143031431314323143331434314353143631437314383143931440314413144231443314443144531446314473144831449314503145131452314533145431455314563145731458314593146031461314623146331464314653146631467314683146931470314713147231473314743147531476314773147831479314803148131482314833148431485314863148731488314893149031491314923149331494314953149631497314983149931500315013150231503315043150531506315073150831509315103151131512315133151431515315163151731518315193152031521315223152331524315253152631527315283152931530315313153231533315343153531536315373153831539315403154131542315433154431545315463154731548315493155031551315523155331554315553155631557315583155931560315613156231563315643156531566315673156831569315703157131572315733157431575315763157731578315793158031581315823158331584315853158631587315883158931590315913159231593315943159531596315973159831599316003160131602316033160431605316063160731608316093161031611316123161331614316153161631617316183161931620316213162231623316243162531626316273162831629316303163131632316333163431635316363163731638316393164031641316423164331644316453164631647316483164931650316513165231653316543165531656316573165831659316603166131662316633166431665316663166731668316693167031671316723167331674316753167631677316783167931680316813168231683316843168531686316873168831689316903169131692316933169431695316963169731698316993170031701317023170331704317053170631707317083170931710317113171231713317143171531716317173171831719317203172131722317233172431725317263172731728317293173031731317323173331734317353173631737317383173931740317413174231743317443174531746317473174831749317503175131752317533175431755317563175731758317593176031761317623176331764317653176631767317683176931770317713177231773317743177531776317773177831779317803178131782317833178431785317863178731788317893179031791317923179331794317953179631797317983179931800318013180231803318043180531806318073180831809318103181131812318133181431815318163181731818318193182031821318223182331824318253182631827318283182931830318313183231833318343183531836318373183831839318403184131842318433184431845318463184731848318493185031851318523185331854318553185631857318583185931860318613186231863318643186531866318673186831869318703187131872318733187431875318763187731878318793188031881318823188331884318853188631887318883188931890318913189231893318943189531896318973189831899319003190131902319033190431905319063190731908319093191031911319123191331914319153191631917319183191931920319213192231923319243192531926319273192831929319303193131932319333193431935319363193731938319393194031941319423194331944319453194631947319483194931950319513195231953319543195531956319573195831959319603196131962319633196431965319663196731968319693197031971319723197331974319753197631977319783197931980319813198231983319843198531986319873198831989319903199131992319933199431995319963199731998319993200032001320023200332004320053200632007320083200932010320113201232013320143201532016320173201832019320203202132022320233202432025320263202732028320293203032031320323203332034320353203632037320383203932040320413204232043320443204532046320473204832049320503205132052320533205432055320563205732058320593206032061320623206332064320653206632067320683206932070320713207232073320743207532076320773207832079320803208132082320833208432085320863208732088320893209032091320923209332094320953209632097320983209932100321013210232103321043210532106321073210832109321103211132112321133211432115321163211732118321193212032121321223212332124321253212632127321283212932130321313213232133321343213532136321373213832139321403214132142321433214432145321463214732148321493215032151321523215332154321553215632157321583215932160321613216232163321643216532166321673216832169321703217132172321733217432175321763217732178321793218032181321823218332184321853218632187321883218932190321913219232193321943219532196321973219832199322003220132202322033220432205322063220732208322093221032211322123221332214322153221632217322183221932220322213222232223322243222532226322273222832229322303223132232322333223432235322363223732238322393224032241322423224332244322453224632247322483224932250322513225232253322543225532256322573225832259322603226132262322633226432265322663226732268322693227032271322723227332274322753227632277322783227932280322813228232283322843228532286322873228832289322903229132292322933229432295322963229732298322993230032301323023230332304323053230632307323083230932310323113231232313323143231532316323173231832319323203232132322323233232432325323263232732328323293233032331323323233332334323353233632337323383233932340323413234232343323443234532346323473234832349323503235132352323533235432355323563235732358323593236032361323623236332364323653236632367323683236932370323713237232373323743237532376323773237832379323803238132382323833238432385323863238732388323893239032391323923239332394323953239632397323983239932400324013240232403324043240532406324073240832409324103241132412324133241432415324163241732418324193242032421324223242332424324253242632427324283242932430324313243232433324343243532436324373243832439324403244132442324433244432445324463244732448324493245032451324523245332454324553245632457324583245932460324613246232463324643246532466324673246832469324703247132472324733247432475324763247732478324793248032481324823248332484324853248632487324883248932490324913249232493324943249532496324973249832499325003250132502325033250432505325063250732508325093251032511325123251332514325153251632517325183251932520325213252232523325243252532526325273252832529325303253132532325333253432535325363253732538325393254032541325423254332544325453254632547325483254932550325513255232553325543255532556325573255832559325603256132562325633256432565325663256732568325693257032571325723257332574325753257632577325783257932580325813258232583325843258532586325873258832589325903259132592325933259432595325963259732598325993260032601326023260332604326053260632607326083260932610326113261232613326143261532616326173261832619326203262132622326233262432625326263262732628326293263032631326323263332634326353263632637326383263932640326413264232643326443264532646326473264832649326503265132652326533265432655326563265732658326593266032661326623266332664326653266632667326683266932670326713267232673326743267532676326773267832679326803268132682326833268432685326863268732688326893269032691326923269332694326953269632697326983269932700327013270232703327043270532706327073270832709327103271132712327133271432715327163271732718327193272032721327223272332724327253272632727327283272932730327313273232733327343273532736327373273832739327403274132742327433274432745327463274732748327493275032751327523275332754327553275632757327583275932760327613276232763327643276532766327673276832769327703277132772327733277432775327763277732778327793278032781327823278332784327853278632787327883278932790327913279232793327943279532796327973279832799328003280132802328033280432805328063280732808328093281032811328123281332814328153281632817328183281932820328213282232823328243282532826328273282832829328303283132832328333283432835328363283732838328393284032841328423284332844328453284632847328483284932850328513285232853328543285532856328573285832859328603286132862328633286432865328663286732868328693287032871328723287332874328753287632877328783287932880328813288232883328843288532886328873288832889328903289132892328933289432895328963289732898328993290032901329023290332904329053290632907329083290932910329113291232913329143291532916329173291832919329203292132922329233292432925329263292732928329293293032931329323293332934329353293632937329383293932940329413294232943329443294532946329473294832949329503295132952329533295432955329563295732958329593296032961329623296332964329653296632967329683296932970329713297232973329743297532976329773297832979329803298132982329833298432985329863298732988329893299032991329923299332994329953299632997329983299933000330013300233003330043300533006330073300833009330103301133012330133301433015330163301733018330193302033021330223302333024330253302633027330283302933030330313303233033330343303533036330373303833039330403304133042330433304433045330463304733048330493305033051330523305333054330553305633057330583305933060330613306233063330643306533066330673306833069330703307133072330733307433075330763307733078330793308033081330823308333084330853308633087330883308933090330913309233093330943309533096330973309833099331003310133102331033310433105331063310733108331093311033111331123311333114331153311633117331183311933120331213312233123331243312533126331273312833129331303313133132331333313433135331363313733138331393314033141331423314333144331453314633147331483314933150331513315233153331543315533156331573315833159331603316133162331633316433165331663316733168331693317033171331723317333174331753317633177331783317933180331813318233183331843318533186331873318833189331903319133192331933319433195331963319733198331993320033201332023320333204332053320633207332083320933210332113321233213332143321533216332173321833219332203322133222332233322433225332263322733228332293323033231332323323333234332353323633237332383323933240332413324233243332443324533246332473324833249332503325133252332533325433255332563325733258332593326033261332623326333264332653326633267332683326933270332713327233273332743327533276332773327833279332803328133282332833328433285332863328733288332893329033291332923329333294332953329633297332983329933300333013330233303333043330533306333073330833309333103331133312333133331433315333163331733318333193332033321333223332333324333253332633327333283332933330333313333233333333343333533336333373333833339333403334133342333433334433345333463334733348333493335033351333523335333354333553335633357333583335933360333613336233363333643336533366333673336833369333703337133372333733337433375333763337733378333793338033381333823338333384333853338633387333883338933390333913339233393333943339533396333973339833399334003340133402334033340433405334063340733408334093341033411334123341333414334153341633417334183341933420334213342233423334243342533426334273342833429334303343133432334333343433435334363343733438334393344033441334423344333444334453344633447334483344933450334513345233453334543345533456334573345833459334603346133462334633346433465334663346733468334693347033471334723347333474334753347633477334783347933480334813348233483334843348533486334873348833489334903349133492334933349433495334963349733498334993350033501335023350333504335053350633507335083350933510335113351233513335143351533516335173351833519335203352133522335233352433525335263352733528335293353033531335323353333534335353353633537335383353933540335413354233543335443354533546335473354833549335503355133552335533355433555335563355733558335593356033561335623356333564335653356633567335683356933570335713357233573335743357533576335773357833579335803358133582335833358433585335863358733588335893359033591335923359333594335953359633597335983359933600336013360233603336043360533606336073360833609336103361133612336133361433615336163361733618336193362033621336223362333624336253362633627336283362933630336313363233633336343363533636336373363833639336403364133642336433364433645336463364733648336493365033651336523365333654336553365633657336583365933660336613366233663336643366533666336673366833669336703367133672336733367433675336763367733678336793368033681336823368333684336853368633687336883368933690336913369233693336943369533696336973369833699337003370133702337033370433705337063370733708337093371033711337123371333714337153371633717337183371933720337213372233723337243372533726337273372833729337303373133732337333373433735337363373733738337393374033741337423374333744337453374633747337483374933750337513375233753337543375533756337573375833759337603376133762337633376433765337663376733768337693377033771337723377333774337753377633777337783377933780337813378233783337843378533786337873378833789337903379133792337933379433795337963379733798337993380033801338023380333804338053380633807338083380933810338113381233813338143381533816338173381833819338203382133822338233382433825338263382733828338293383033831338323383333834338353383633837338383383933840338413384233843338443384533846338473384833849338503385133852338533385433855338563385733858338593386033861338623386333864338653386633867338683386933870338713387233873338743387533876338773387833879338803388133882338833388433885338863388733888338893389033891338923389333894338953389633897338983389933900339013390233903339043390533906339073390833909339103391133912339133391433915339163391733918339193392033921339223392333924339253392633927339283392933930339313393233933339343393533936339373393833939339403394133942339433394433945339463394733948339493395033951339523395333954339553395633957339583395933960339613396233963339643396533966339673396833969339703397133972339733397433975339763397733978339793398033981339823398333984339853398633987339883398933990339913399233993339943399533996339973399833999340003400134002340033400434005340063400734008340093401034011340123401334014340153401634017340183401934020340213402234023340243402534026340273402834029340303403134032340333403434035340363403734038340393404034041340423404334044340453404634047340483404934050340513405234053340543405534056340573405834059340603406134062340633406434065340663406734068340693407034071340723407334074340753407634077340783407934080340813408234083340843408534086340873408834089340903409134092340933409434095340963409734098340993410034101341023410334104341053410634107341083410934110341113411234113341143411534116341173411834119341203412134122341233412434125341263412734128341293413034131341323413334134341353413634137341383413934140341413414234143341443414534146341473414834149341503415134152341533415434155341563415734158341593416034161341623416334164341653416634167341683416934170341713417234173341743417534176341773417834179341803418134182341833418434185341863418734188341893419034191341923419334194341953419634197341983419934200342013420234203342043420534206342073420834209342103421134212342133421434215342163421734218342193422034221342223422334224342253422634227342283422934230342313423234233342343423534236342373423834239342403424134242342433424434245342463424734248342493425034251342523425334254342553425634257342583425934260342613426234263342643426534266342673426834269342703427134272342733427434275342763427734278342793428034281342823428334284342853428634287342883428934290342913429234293342943429534296342973429834299343003430134302343033430434305343063430734308343093431034311343123431334314343153431634317343183431934320343213432234323343243432534326343273432834329343303433134332343333433434335343363433734338343393434034341343423434334344343453434634347343483434934350343513435234353343543435534356343573435834359343603436134362343633436434365343663436734368343693437034371343723437334374343753437634377343783437934380343813438234383343843438534386343873438834389343903439134392343933439434395343963439734398343993440034401344023440334404344053440634407344083440934410344113441234413344143441534416344173441834419344203442134422344233442434425344263442734428344293443034431344323443334434344353443634437344383443934440344413444234443344443444534446344473444834449344503445134452344533445434455344563445734458344593446034461344623446334464344653446634467344683446934470344713447234473344743447534476344773447834479344803448134482344833448434485344863448734488344893449034491344923449334494344953449634497344983449934500345013450234503345043450534506345073450834509345103451134512345133451434515345163451734518345193452034521345223452334524345253452634527345283452934530345313453234533345343453534536345373453834539345403454134542345433454434545345463454734548345493455034551345523455334554345553455634557345583455934560345613456234563345643456534566345673456834569345703457134572345733457434575345763457734578345793458034581345823458334584345853458634587345883458934590345913459234593345943459534596345973459834599346003460134602346033460434605346063460734608346093461034611346123461334614346153461634617346183461934620346213462234623346243462534626346273462834629346303463134632346333463434635346363463734638346393464034641346423464334644346453464634647346483464934650346513465234653346543465534656346573465834659346603466134662346633466434665346663466734668346693467034671346723467334674346753467634677346783467934680346813468234683346843468534686346873468834689346903469134692346933469434695346963469734698346993470034701347023470334704347053470634707347083470934710347113471234713347143471534716347173471834719347203472134722347233472434725347263472734728347293473034731347323473334734347353473634737347383473934740347413474234743347443474534746347473474834749347503475134752347533475434755347563475734758347593476034761347623476334764347653476634767347683476934770347713477234773347743477534776347773477834779347803478134782347833478434785347863478734788347893479034791347923479334794347953479634797347983479934800348013480234803348043480534806348073480834809348103481134812348133481434815348163481734818348193482034821348223482334824348253482634827348283482934830348313483234833348343483534836348373483834839348403484134842348433484434845348463484734848348493485034851348523485334854348553485634857348583485934860348613486234863348643486534866348673486834869348703487134872348733487434875348763487734878348793488034881348823488334884348853488634887348883488934890348913489234893348943489534896348973489834899349003490134902349033490434905349063490734908349093491034911349123491334914349153491634917349183491934920349213492234923349243492534926349273492834929349303493134932349333493434935349363493734938349393494034941349423494334944349453494634947349483494934950349513495234953349543495534956349573495834959349603496134962349633496434965349663496734968349693497034971349723497334974349753497634977349783497934980349813498234983349843498534986349873498834989349903499134992349933499434995349963499734998349993500035001350023500335004350053500635007350083500935010350113501235013350143501535016350173501835019350203502135022350233502435025350263502735028350293503035031350323503335034350353503635037350383503935040350413504235043350443504535046350473504835049350503505135052350533505435055350563505735058350593506035061350623506335064350653506635067350683506935070350713507235073350743507535076350773507835079350803508135082350833508435085350863508735088350893509035091350923509335094350953509635097350983509935100351013510235103351043510535106351073510835109351103511135112351133511435115351163511735118351193512035121351223512335124351253512635127351283512935130351313513235133351343513535136351373513835139351403514135142351433514435145351463514735148351493515035151351523515335154351553515635157351583515935160351613516235163351643516535166351673516835169351703517135172351733517435175351763517735178351793518035181351823518335184351853518635187351883518935190351913519235193351943519535196351973519835199352003520135202352033520435205352063520735208352093521035211352123521335214352153521635217352183521935220352213522235223352243522535226352273522835229352303523135232352333523435235352363523735238352393524035241352423524335244352453524635247352483524935250352513525235253352543525535256352573525835259352603526135262352633526435265352663526735268352693527035271352723527335274352753527635277352783527935280352813528235283352843528535286352873528835289352903529135292352933529435295352963529735298352993530035301353023530335304353053530635307353083530935310353113531235313353143531535316353173531835319353203532135322353233532435325353263532735328353293533035331353323533335334353353533635337353383533935340353413534235343353443534535346353473534835349353503535135352353533535435355353563535735358353593536035361353623536335364353653536635367353683536935370353713537235373353743537535376353773537835379353803538135382353833538435385353863538735388353893539035391353923539335394353953539635397353983539935400354013540235403354043540535406354073540835409354103541135412354133541435415354163541735418354193542035421354223542335424354253542635427354283542935430354313543235433354343543535436354373543835439354403544135442354433544435445354463544735448354493545035451354523545335454354553545635457354583545935460354613546235463354643546535466354673546835469354703547135472354733547435475354763547735478354793548035481354823548335484354853548635487354883548935490354913549235493354943549535496354973549835499355003550135502355033550435505355063550735508355093551035511355123551335514355153551635517355183551935520355213552235523355243552535526355273552835529355303553135532355333553435535355363553735538355393554035541355423554335544355453554635547355483554935550355513555235553355543555535556355573555835559355603556135562355633556435565355663556735568355693557035571355723557335574355753557635577355783557935580355813558235583355843558535586355873558835589355903559135592355933559435595355963559735598355993560035601356023560335604356053560635607356083560935610356113561235613356143561535616356173561835619356203562135622356233562435625356263562735628356293563035631356323563335634356353563635637356383563935640356413564235643356443564535646356473564835649356503565135652356533565435655356563565735658356593566035661356623566335664356653566635667356683566935670356713567235673356743567535676356773567835679356803568135682356833568435685356863568735688356893569035691356923569335694356953569635697356983569935700357013570235703357043570535706357073570835709357103571135712357133571435715357163571735718357193572035721357223572335724357253572635727357283572935730357313573235733357343573535736357373573835739357403574135742357433574435745357463574735748357493575035751357523575335754357553575635757357583575935760357613576235763357643576535766357673576835769357703577135772357733577435775357763577735778357793578035781357823578335784357853578635787357883578935790357913579235793357943579535796357973579835799358003580135802358033580435805358063580735808358093581035811358123581335814358153581635817358183581935820358213582235823358243582535826358273582835829358303583135832358333583435835358363583735838358393584035841358423584335844358453584635847358483584935850358513585235853358543585535856358573585835859358603586135862358633586435865358663586735868358693587035871358723587335874358753587635877358783587935880358813588235883358843588535886358873588835889358903589135892358933589435895358963589735898358993590035901359023590335904359053590635907359083590935910359113591235913359143591535916359173591835919359203592135922359233592435925359263592735928359293593035931359323593335934359353593635937359383593935940359413594235943359443594535946359473594835949359503595135952359533595435955359563595735958359593596035961359623596335964359653596635967359683596935970359713597235973359743597535976359773597835979359803598135982359833598435985359863598735988359893599035991359923599335994359953599635997359983599936000360013600236003360043600536006360073600836009360103601136012360133601436015360163601736018360193602036021360223602336024360253602636027360283602936030360313603236033360343603536036360373603836039360403604136042360433604436045360463604736048360493605036051360523605336054360553605636057360583605936060360613606236063360643606536066360673606836069360703607136072360733607436075360763607736078360793608036081360823608336084360853608636087360883608936090360913609236093360943609536096360973609836099361003610136102361033610436105361063610736108361093611036111361123611336114361153611636117361183611936120361213612236123361243612536126361273612836129361303613136132361333613436135361363613736138361393614036141361423614336144361453614636147361483614936150361513615236153361543615536156361573615836159361603616136162361633616436165361663616736168361693617036171361723617336174361753617636177361783617936180361813618236183361843618536186361873618836189361903619136192361933619436195361963619736198361993620036201362023620336204362053620636207362083620936210362113621236213362143621536216362173621836219362203622136222362233622436225362263622736228362293623036231362323623336234362353623636237362383623936240362413624236243362443624536246362473624836249362503625136252362533625436255362563625736258362593626036261362623626336264362653626636267362683626936270362713627236273362743627536276362773627836279362803628136282362833628436285362863628736288362893629036291362923629336294362953629636297362983629936300363013630236303363043630536306363073630836309363103631136312363133631436315363163631736318363193632036321363223632336324363253632636327363283632936330363313633236333363343633536336363373633836339363403634136342363433634436345363463634736348363493635036351363523635336354363553635636357363583635936360363613636236363363643636536366363673636836369363703637136372363733637436375363763637736378363793638036381363823638336384363853638636387363883638936390363913639236393363943639536396363973639836399364003640136402364033640436405364063640736408364093641036411364123641336414364153641636417364183641936420364213642236423364243642536426364273642836429364303643136432364333643436435364363643736438364393644036441364423644336444364453644636447364483644936450364513645236453364543645536456364573645836459364603646136462364633646436465364663646736468364693647036471364723647336474364753647636477364783647936480364813648236483364843648536486364873648836489364903649136492364933649436495364963649736498364993650036501365023650336504365053650636507365083650936510365113651236513365143651536516365173651836519365203652136522365233652436525365263652736528365293653036531365323653336534365353653636537365383653936540365413654236543365443654536546365473654836549365503655136552365533655436555365563655736558365593656036561365623656336564365653656636567365683656936570365713657236573365743657536576365773657836579365803658136582365833658436585365863658736588365893659036591365923659336594365953659636597365983659936600366013660236603366043660536606366073660836609366103661136612366133661436615366163661736618366193662036621366223662336624366253662636627366283662936630366313663236633366343663536636366373663836639366403664136642366433664436645366463664736648366493665036651366523665336654366553665636657366583665936660366613666236663366643666536666366673666836669366703667136672366733667436675366763667736678366793668036681366823668336684366853668636687366883668936690366913669236693366943669536696366973669836699367003670136702367033670436705367063670736708367093671036711367123671336714367153671636717367183671936720367213672236723367243672536726367273672836729367303673136732367333673436735367363673736738367393674036741367423674336744367453674636747367483674936750367513675236753367543675536756367573675836759367603676136762367633676436765367663676736768367693677036771367723677336774367753677636777367783677936780367813678236783367843678536786367873678836789367903679136792367933679436795367963679736798367993680036801368023680336804368053680636807368083680936810368113681236813368143681536816368173681836819368203682136822368233682436825368263682736828368293683036831368323683336834368353683636837368383683936840368413684236843368443684536846368473684836849368503685136852368533685436855368563685736858368593686036861368623686336864368653686636867368683686936870368713687236873368743687536876368773687836879368803688136882368833688436885368863688736888368893689036891368923689336894368953689636897368983689936900369013690236903369043690536906369073690836909369103691136912369133691436915369163691736918369193692036921369223692336924369253692636927369283692936930369313693236933369343693536936369373693836939369403694136942369433694436945369463694736948369493695036951369523695336954369553695636957369583695936960369613696236963369643696536966369673696836969369703697136972369733697436975369763697736978369793698036981369823698336984369853698636987369883698936990369913699236993369943699536996369973699836999370003700137002370033700437005370063700737008370093701037011370123701337014370153701637017370183701937020370213702237023370243702537026370273702837029370303703137032370333703437035370363703737038370393704037041370423704337044370453704637047370483704937050370513705237053370543705537056370573705837059370603706137062370633706437065370663706737068370693707037071370723707337074370753707637077370783707937080370813708237083370843708537086370873708837089370903709137092370933709437095370963709737098370993710037101371023710337104371053710637107371083710937110371113711237113371143711537116371173711837119371203712137122371233712437125371263712737128371293713037131371323713337134371353713637137371383713937140371413714237143371443714537146371473714837149371503715137152371533715437155371563715737158371593716037161371623716337164371653716637167371683716937170371713717237173371743717537176371773717837179371803718137182371833718437185371863718737188371893719037191371923719337194371953719637197371983719937200372013720237203372043720537206372073720837209372103721137212372133721437215372163721737218372193722037221372223722337224372253722637227372283722937230372313723237233372343723537236372373723837239372403724137242372433724437245372463724737248372493725037251372523725337254372553725637257372583725937260372613726237263372643726537266372673726837269372703727137272372733727437275372763727737278372793728037281372823728337284372853728637287372883728937290372913729237293372943729537296372973729837299373003730137302373033730437305373063730737308373093731037311373123731337314373153731637317373183731937320373213732237323373243732537326373273732837329373303733137332373333733437335373363733737338373393734037341373423734337344373453734637347373483734937350373513735237353373543735537356373573735837359373603736137362373633736437365373663736737368373693737037371373723737337374373753737637377373783737937380373813738237383373843738537386373873738837389373903739137392373933739437395373963739737398373993740037401374023740337404374053740637407374083740937410374113741237413374143741537416374173741837419374203742137422374233742437425374263742737428374293743037431374323743337434374353743637437374383743937440374413744237443374443744537446374473744837449374503745137452374533745437455374563745737458374593746037461374623746337464374653746637467374683746937470374713747237473374743747537476374773747837479374803748137482374833748437485374863748737488374893749037491374923749337494374953749637497374983749937500375013750237503375043750537506375073750837509375103751137512375133751437515375163751737518375193752037521375223752337524375253752637527375283752937530375313753237533375343753537536375373753837539375403754137542375433754437545375463754737548375493755037551375523755337554375553755637557375583755937560375613756237563375643756537566375673756837569375703757137572375733757437575375763757737578375793758037581375823758337584375853758637587375883758937590375913759237593375943759537596375973759837599376003760137602376033760437605376063760737608376093761037611376123761337614376153761637617376183761937620376213762237623376243762537626376273762837629376303763137632376333763437635376363763737638376393764037641376423764337644376453764637647376483764937650376513765237653376543765537656376573765837659376603766137662376633766437665376663766737668376693767037671376723767337674376753767637677376783767937680376813768237683376843768537686376873768837689376903769137692376933769437695376963769737698376993770037701377023770337704377053770637707377083770937710377113771237713377143771537716377173771837719377203772137722377233772437725377263772737728377293773037731377323773337734377353773637737377383773937740377413774237743377443774537746377473774837749377503775137752377533775437755377563775737758377593776037761377623776337764377653776637767377683776937770377713777237773377743777537776377773777837779377803778137782377833778437785377863778737788377893779037791377923779337794377953779637797377983779937800378013780237803378043780537806378073780837809378103781137812378133781437815378163781737818378193782037821378223782337824378253782637827378283782937830378313783237833378343783537836378373783837839378403784137842378433784437845378463784737848378493785037851378523785337854378553785637857378583785937860378613786237863378643786537866378673786837869378703787137872378733787437875378763787737878378793788037881378823788337884378853788637887378883788937890378913789237893378943789537896378973789837899379003790137902379033790437905379063790737908379093791037911379123791337914379153791637917379183791937920379213792237923379243792537926379273792837929379303793137932379333793437935379363793737938379393794037941379423794337944379453794637947379483794937950379513795237953379543795537956379573795837959379603796137962379633796437965379663796737968379693797037971379723797337974379753797637977379783797937980379813798237983379843798537986379873798837989379903799137992379933799437995379963799737998379993800038001380023800338004380053800638007380083800938010380113801238013380143801538016380173801838019380203802138022380233802438025380263802738028380293803038031380323803338034380353803638037380383803938040380413804238043380443804538046380473804838049380503805138052380533805438055380563805738058380593806038061380623806338064380653806638067380683806938070380713807238073380743807538076380773807838079380803808138082380833808438085380863808738088380893809038091380923809338094380953809638097380983809938100381013810238103381043810538106381073810838109381103811138112381133811438115381163811738118381193812038121381223812338124381253812638127381283812938130381313813238133381343813538136381373813838139381403814138142381433814438145381463814738148381493815038151381523815338154381553815638157381583815938160381613816238163381643816538166381673816838169381703817138172381733817438175381763817738178381793818038181381823818338184381853818638187381883818938190381913819238193381943819538196381973819838199382003820138202382033820438205382063820738208382093821038211382123821338214382153821638217382183821938220382213822238223382243822538226382273822838229382303823138232382333823438235382363823738238382393824038241382423824338244382453824638247382483824938250382513825238253382543825538256382573825838259382603826138262382633826438265382663826738268382693827038271382723827338274382753827638277382783827938280382813828238283382843828538286382873828838289382903829138292382933829438295382963829738298382993830038301383023830338304383053830638307383083830938310383113831238313383143831538316383173831838319383203832138322383233832438325383263832738328383293833038331383323833338334383353833638337383383833938340383413834238343383443834538346383473834838349383503835138352383533835438355383563835738358383593836038361383623836338364383653836638367383683836938370383713837238373383743837538376383773837838379383803838138382383833838438385383863838738388383893839038391383923839338394383953839638397383983839938400384013840238403384043840538406384073840838409384103841138412384133841438415384163841738418384193842038421384223842338424384253842638427384283842938430384313843238433384343843538436384373843838439384403844138442384433844438445384463844738448384493845038451384523845338454384553845638457384583845938460384613846238463384643846538466384673846838469384703847138472384733847438475384763847738478384793848038481384823848338484384853848638487384883848938490384913849238493384943849538496384973849838499385003850138502385033850438505385063850738508385093851038511385123851338514385153851638517385183851938520385213852238523385243852538526385273852838529385303853138532385333853438535385363853738538385393854038541385423854338544385453854638547385483854938550385513855238553385543855538556385573855838559385603856138562385633856438565385663856738568385693857038571385723857338574385753857638577385783857938580385813858238583385843858538586385873858838589385903859138592385933859438595385963859738598385993860038601386023860338604386053860638607386083860938610386113861238613386143861538616386173861838619386203862138622386233862438625386263862738628386293863038631386323863338634386353863638637386383863938640386413864238643386443864538646386473864838649386503865138652386533865438655386563865738658386593866038661386623866338664386653866638667386683866938670386713867238673386743867538676386773867838679386803868138682386833868438685386863868738688386893869038691386923869338694386953869638697386983869938700387013870238703387043870538706387073870838709387103871138712387133871438715387163871738718387193872038721387223872338724387253872638727387283872938730387313873238733387343873538736387373873838739387403874138742387433874438745387463874738748387493875038751387523875338754387553875638757387583875938760387613876238763387643876538766387673876838769387703877138772387733877438775387763877738778387793878038781387823878338784387853878638787387883878938790387913879238793387943879538796387973879838799388003880138802388033880438805388063880738808388093881038811388123881338814388153881638817388183881938820388213882238823388243882538826388273882838829388303883138832388333883438835388363883738838388393884038841388423884338844388453884638847388483884938850388513885238853388543885538856388573885838859388603886138862388633886438865388663886738868388693887038871388723887338874388753887638877388783887938880388813888238883388843888538886388873888838889388903889138892388933889438895388963889738898388993890038901389023890338904389053890638907389083890938910389113891238913389143891538916389173891838919389203892138922389233892438925389263892738928389293893038931389323893338934389353893638937389383893938940389413894238943389443894538946389473894838949389503895138952389533895438955389563895738958389593896038961389623896338964389653896638967389683896938970389713897238973389743897538976389773897838979389803898138982389833898438985389863898738988389893899038991389923899338994389953899638997389983899939000390013900239003390043900539006390073900839009390103901139012390133901439015390163901739018390193902039021390223902339024390253902639027390283902939030390313903239033390343903539036390373903839039390403904139042390433904439045390463904739048390493905039051390523905339054390553905639057390583905939060390613906239063390643906539066390673906839069390703907139072390733907439075390763907739078390793908039081390823908339084390853908639087390883908939090390913909239093390943909539096390973909839099391003910139102391033910439105391063910739108391093911039111391123911339114391153911639117391183911939120391213912239123391243912539126391273912839129391303913139132391333913439135391363913739138391393914039141391423914339144391453914639147391483914939150391513915239153391543915539156391573915839159391603916139162391633916439165391663916739168391693917039171391723917339174391753917639177391783917939180391813918239183391843918539186391873918839189391903919139192391933919439195391963919739198391993920039201392023920339204392053920639207392083920939210392113921239213392143921539216392173921839219392203922139222392233922439225392263922739228392293923039231392323923339234392353923639237392383923939240392413924239243392443924539246392473924839249392503925139252392533925439255392563925739258392593926039261392623926339264392653926639267392683926939270392713927239273392743927539276392773927839279392803928139282392833928439285392863928739288392893929039291392923929339294392953929639297392983929939300393013930239303393043930539306393073930839309393103931139312393133931439315393163931739318393193932039321393223932339324393253932639327393283932939330393313933239333393343933539336393373933839339393403934139342393433934439345393463934739348393493935039351393523935339354393553935639357393583935939360393613936239363393643936539366393673936839369393703937139372393733937439375393763937739378393793938039381393823938339384393853938639387393883938939390393913939239393393943939539396393973939839399394003940139402394033940439405394063940739408394093941039411394123941339414394153941639417394183941939420394213942239423394243942539426394273942839429394303943139432394333943439435394363943739438394393944039441394423944339444394453944639447394483944939450394513945239453394543945539456394573945839459394603946139462394633946439465394663946739468394693947039471394723947339474394753947639477394783947939480394813948239483394843948539486394873948839489394903949139492394933949439495394963949739498394993950039501395023950339504395053950639507395083950939510395113951239513395143951539516395173951839519395203952139522395233952439525395263952739528395293953039531395323953339534395353953639537395383953939540395413954239543395443954539546395473954839549395503955139552395533955439555395563955739558395593956039561395623956339564395653956639567395683956939570395713957239573395743957539576395773957839579395803958139582395833958439585395863958739588395893959039591395923959339594395953959639597395983959939600396013960239603396043960539606396073960839609396103961139612396133961439615396163961739618396193962039621396223962339624396253962639627396283962939630396313963239633396343963539636396373963839639396403964139642396433964439645396463964739648396493965039651396523965339654396553965639657396583965939660396613966239663396643966539666396673966839669396703967139672396733967439675396763967739678396793968039681396823968339684396853968639687396883968939690396913969239693396943969539696396973969839699397003970139702397033970439705397063970739708397093971039711397123971339714397153971639717397183971939720397213972239723397243972539726397273972839729397303973139732397333973439735397363973739738397393974039741397423974339744397453974639747397483974939750397513975239753397543975539756397573975839759397603976139762397633976439765397663976739768397693977039771397723977339774397753977639777397783977939780397813978239783397843978539786397873978839789397903979139792397933979439795397963979739798397993980039801398023980339804398053980639807398083980939810398113981239813398143981539816398173981839819398203982139822398233982439825398263982739828398293983039831398323983339834398353983639837398383983939840398413984239843398443984539846398473984839849398503985139852398533985439855398563985739858398593986039861398623986339864398653986639867398683986939870398713987239873398743987539876398773987839879398803988139882398833988439885398863988739888398893989039891398923989339894398953989639897398983989939900399013990239903399043990539906399073990839909399103991139912399133991439915399163991739918399193992039921399223992339924399253992639927399283992939930399313993239933399343993539936399373993839939399403994139942399433994439945399463994739948399493995039951399523995339954399553995639957399583995939960399613996239963399643996539966399673996839969399703997139972399733997439975399763997739978399793998039981399823998339984399853998639987399883998939990399913999239993399943999539996399973999839999400004000140002400034000440005400064000740008400094001040011400124001340014400154001640017400184001940020400214002240023400244002540026400274002840029400304003140032400334003440035400364003740038400394004040041400424004340044400454004640047400484004940050400514005240053400544005540056400574005840059400604006140062400634006440065400664006740068400694007040071400724007340074400754007640077400784007940080400814008240083400844008540086400874008840089400904009140092400934009440095400964009740098400994010040101401024010340104401054010640107401084010940110401114011240113401144011540116401174011840119401204012140122401234012440125401264012740128401294013040131401324013340134401354013640137401384013940140401414014240143401444014540146401474014840149401504015140152401534015440155401564015740158401594016040161401624016340164401654016640167401684016940170401714017240173401744017540176401774017840179401804018140182401834018440185401864018740188401894019040191401924019340194401954019640197401984019940200402014020240203402044020540206402074020840209402104021140212402134021440215402164021740218402194022040221402224022340224402254022640227402284022940230402314023240233402344023540236402374023840239402404024140242402434024440245402464024740248402494025040251402524025340254402554025640257402584025940260402614026240263402644026540266402674026840269402704027140272402734027440275402764027740278402794028040281402824028340284402854028640287402884028940290402914029240293402944029540296402974029840299403004030140302403034030440305403064030740308403094031040311403124031340314403154031640317403184031940320403214032240323403244032540326403274032840329403304033140332403334033440335403364033740338403394034040341403424034340344403454034640347403484034940350403514035240353403544035540356403574035840359403604036140362403634036440365403664036740368403694037040371403724037340374403754037640377403784037940380403814038240383403844038540386403874038840389403904039140392403934039440395403964039740398403994040040401404024040340404404054040640407404084040940410404114041240413404144041540416404174041840419404204042140422404234042440425404264042740428404294043040431404324043340434404354043640437404384043940440404414044240443404444044540446404474044840449404504045140452404534045440455404564045740458404594046040461404624046340464404654046640467404684046940470404714047240473404744047540476404774047840479404804048140482404834048440485404864048740488404894049040491404924049340494404954049640497404984049940500405014050240503405044050540506405074050840509405104051140512405134051440515405164051740518405194052040521405224052340524405254052640527405284052940530405314053240533405344053540536405374053840539405404054140542405434054440545405464054740548405494055040551405524055340554405554055640557405584055940560405614056240563405644056540566405674056840569405704057140572405734057440575405764057740578405794058040581405824058340584405854058640587405884058940590405914059240593405944059540596405974059840599406004060140602406034060440605406064060740608406094061040611406124061340614406154061640617406184061940620406214062240623406244062540626406274062840629406304063140632406334063440635406364063740638406394064040641406424064340644406454064640647406484064940650406514065240653406544065540656406574065840659406604066140662406634066440665406664066740668406694067040671406724067340674406754067640677406784067940680406814068240683406844068540686406874068840689406904069140692406934069440695406964069740698406994070040701407024070340704407054070640707407084070940710407114071240713407144071540716407174071840719407204072140722407234072440725407264072740728407294073040731407324073340734407354073640737407384073940740407414074240743407444074540746407474074840749407504075140752407534075440755407564075740758407594076040761407624076340764407654076640767407684076940770407714077240773407744077540776407774077840779407804078140782407834078440785407864078740788407894079040791407924079340794407954079640797407984079940800408014080240803408044080540806408074080840809408104081140812408134081440815408164081740818408194082040821408224082340824408254082640827408284082940830408314083240833408344083540836408374083840839408404084140842408434084440845408464084740848408494085040851408524085340854408554085640857408584085940860408614086240863408644086540866408674086840869408704087140872408734087440875408764087740878408794088040881408824088340884408854088640887408884088940890408914089240893408944089540896408974089840899409004090140902409034090440905409064090740908409094091040911409124091340914409154091640917409184091940920409214092240923409244092540926409274092840929409304093140932409334093440935409364093740938409394094040941409424094340944409454094640947409484094940950409514095240953409544095540956409574095840959409604096140962409634096440965409664096740968409694097040971409724097340974409754097640977409784097940980409814098240983409844098540986409874098840989409904099140992409934099440995409964099740998409994100041001410024100341004410054100641007410084100941010410114101241013410144101541016410174101841019410204102141022410234102441025410264102741028410294103041031410324103341034410354103641037410384103941040410414104241043410444104541046410474104841049410504105141052410534105441055410564105741058410594106041061410624106341064410654106641067410684106941070410714107241073410744107541076410774107841079410804108141082410834108441085410864108741088410894109041091410924109341094410954109641097410984109941100411014110241103411044110541106411074110841109411104111141112411134111441115411164111741118411194112041121411224112341124411254112641127411284112941130411314113241133411344113541136411374113841139411404114141142411434114441145411464114741148411494115041151411524115341154411554115641157411584115941160411614116241163411644116541166411674116841169411704117141172411734117441175411764117741178411794118041181411824118341184411854118641187411884118941190411914119241193411944119541196411974119841199412004120141202412034120441205412064120741208412094121041211412124121341214412154121641217412184121941220412214122241223412244122541226412274122841229412304123141232412334123441235412364123741238412394124041241412424124341244412454124641247412484124941250412514125241253412544125541256412574125841259412604126141262412634126441265412664126741268412694127041271412724127341274412754127641277412784127941280412814128241283412844128541286412874128841289412904129141292412934129441295412964129741298412994130041301413024130341304413054130641307413084130941310413114131241313413144131541316413174131841319413204132141322413234132441325413264132741328413294133041331413324133341334413354133641337413384133941340413414134241343413444134541346413474134841349413504135141352413534135441355413564135741358413594136041361413624136341364413654136641367413684136941370413714137241373413744137541376413774137841379413804138141382413834138441385413864138741388413894139041391413924139341394413954139641397413984139941400414014140241403414044140541406414074140841409414104141141412414134141441415414164141741418414194142041421414224142341424414254142641427414284142941430414314143241433414344143541436414374143841439414404144141442414434144441445414464144741448414494145041451414524145341454414554145641457414584145941460414614146241463414644146541466414674146841469414704147141472414734147441475414764147741478414794148041481414824148341484414854148641487414884148941490414914149241493414944149541496414974149841499415004150141502415034150441505415064150741508415094151041511415124151341514415154151641517415184151941520415214152241523415244152541526415274152841529415304153141532415334153441535415364153741538415394154041541415424154341544415454154641547415484154941550415514155241553415544155541556415574155841559415604156141562415634156441565415664156741568415694157041571415724157341574415754157641577415784157941580415814158241583415844158541586415874158841589415904159141592415934159441595415964159741598415994160041601416024160341604416054160641607416084160941610416114161241613416144161541616416174161841619416204162141622416234162441625416264162741628416294163041631416324163341634416354163641637416384163941640416414164241643416444164541646416474164841649416504165141652416534165441655416564165741658416594166041661416624166341664416654166641667416684166941670416714167241673416744167541676416774167841679416804168141682416834168441685416864168741688416894169041691416924169341694416954169641697416984169941700417014170241703417044170541706417074170841709417104171141712417134171441715417164171741718417194172041721417224172341724417254172641727417284172941730417314173241733417344173541736417374173841739417404174141742417434174441745417464174741748417494175041751417524175341754417554175641757417584175941760417614176241763417644176541766417674176841769417704177141772417734177441775417764177741778417794178041781417824178341784417854178641787417884178941790417914179241793417944179541796417974179841799418004180141802418034180441805418064180741808418094181041811418124181341814418154181641817418184181941820418214182241823418244182541826418274182841829418304183141832418334183441835418364183741838418394184041841418424184341844418454184641847418484184941850418514185241853418544185541856418574185841859418604186141862418634186441865418664186741868418694187041871418724187341874418754187641877418784187941880418814188241883418844188541886418874188841889418904189141892418934189441895418964189741898418994190041901419024190341904419054190641907419084190941910419114191241913419144191541916419174191841919419204192141922419234192441925419264192741928419294193041931419324193341934419354193641937419384193941940419414194241943419444194541946419474194841949419504195141952419534195441955419564195741958419594196041961419624196341964419654196641967419684196941970419714197241973419744197541976419774197841979419804198141982419834198441985419864198741988419894199041991419924199341994419954199641997419984199942000420014200242003420044200542006420074200842009420104201142012420134201442015420164201742018420194202042021420224202342024420254202642027420284202942030420314203242033420344203542036420374203842039420404204142042420434204442045420464204742048420494205042051420524205342054420554205642057420584205942060420614206242063420644206542066420674206842069420704207142072420734207442075420764207742078420794208042081420824208342084420854208642087420884208942090420914209242093420944209542096420974209842099421004210142102421034210442105421064210742108421094211042111421124211342114421154211642117421184211942120421214212242123421244212542126421274212842129421304213142132421334213442135421364213742138421394214042141421424214342144421454214642147421484214942150421514215242153421544215542156421574215842159421604216142162421634216442165421664216742168421694217042171421724217342174421754217642177421784217942180421814218242183421844218542186421874218842189421904219142192421934219442195421964219742198421994220042201422024220342204422054220642207422084220942210422114221242213422144221542216422174221842219422204222142222422234222442225422264222742228422294223042231422324223342234422354223642237422384223942240422414224242243422444224542246422474224842249422504225142252422534225442255422564225742258422594226042261422624226342264422654226642267422684226942270422714227242273422744227542276422774227842279422804228142282422834228442285422864228742288422894229042291422924229342294422954229642297422984229942300423014230242303423044230542306423074230842309423104231142312423134231442315423164231742318423194232042321423224232342324423254232642327423284232942330423314233242333423344233542336423374233842339423404234142342423434234442345423464234742348423494235042351423524235342354423554235642357423584235942360423614236242363423644236542366423674236842369423704237142372423734237442375423764237742378423794238042381423824238342384423854238642387423884238942390423914239242393423944239542396423974239842399424004240142402424034240442405424064240742408424094241042411424124241342414424154241642417424184241942420424214242242423424244242542426424274242842429424304243142432424334243442435424364243742438424394244042441424424244342444424454244642447424484244942450424514245242453424544245542456424574245842459424604246142462424634246442465424664246742468424694247042471424724247342474424754247642477424784247942480424814248242483424844248542486424874248842489424904249142492424934249442495424964249742498424994250042501425024250342504425054250642507425084250942510425114251242513425144251542516425174251842519425204252142522425234252442525425264252742528425294253042531425324253342534425354253642537425384253942540425414254242543425444254542546425474254842549425504255142552425534255442555425564255742558425594256042561425624256342564425654256642567425684256942570425714257242573425744257542576425774257842579425804258142582425834258442585425864258742588425894259042591425924259342594425954259642597425984259942600426014260242603426044260542606426074260842609426104261142612426134261442615426164261742618426194262042621426224262342624426254262642627426284262942630426314263242633426344263542636426374263842639426404264142642426434264442645426464264742648426494265042651426524265342654426554265642657426584265942660426614266242663426644266542666426674266842669426704267142672426734267442675426764267742678426794268042681426824268342684426854268642687426884268942690426914269242693426944269542696426974269842699427004270142702427034270442705427064270742708427094271042711427124271342714427154271642717427184271942720427214272242723427244272542726427274272842729427304273142732427334273442735427364273742738427394274042741427424274342744427454274642747427484274942750427514275242753427544275542756427574275842759427604276142762427634276442765427664276742768427694277042771427724277342774427754277642777427784277942780427814278242783427844278542786427874278842789427904279142792427934279442795427964279742798427994280042801428024280342804428054280642807428084280942810428114281242813428144281542816428174281842819428204282142822428234282442825428264282742828428294283042831428324283342834428354283642837428384283942840428414284242843428444284542846428474284842849428504285142852428534285442855428564285742858428594286042861428624286342864428654286642867428684286942870428714287242873428744287542876428774287842879428804288142882428834288442885428864288742888428894289042891428924289342894428954289642897428984289942900429014290242903429044290542906429074290842909429104291142912429134291442915429164291742918429194292042921429224292342924429254292642927429284292942930429314293242933429344293542936429374293842939429404294142942429434294442945429464294742948429494295042951429524295342954429554295642957429584295942960429614296242963429644296542966429674296842969429704297142972429734297442975429764297742978429794298042981429824298342984429854298642987429884298942990429914299242993429944299542996429974299842999430004300143002430034300443005430064300743008430094301043011430124301343014430154301643017430184301943020430214302243023430244302543026430274302843029430304303143032430334303443035430364303743038430394304043041430424304343044430454304643047430484304943050430514305243053430544305543056430574305843059430604306143062430634306443065430664306743068430694307043071430724307343074430754307643077430784307943080430814308243083430844308543086430874308843089430904309143092430934309443095430964309743098430994310043101431024310343104431054310643107431084310943110431114311243113431144311543116431174311843119431204312143122431234312443125431264312743128431294313043131431324313343134431354313643137431384313943140431414314243143431444314543146431474314843149431504315143152431534315443155431564315743158431594316043161431624316343164431654316643167431684316943170431714317243173431744317543176431774317843179431804318143182431834318443185431864318743188431894319043191431924319343194431954319643197431984319943200432014320243203432044320543206432074320843209432104321143212432134321443215432164321743218432194322043221432224322343224432254322643227432284322943230432314323243233432344323543236432374323843239432404324143242432434324443245432464324743248432494325043251432524325343254432554325643257432584325943260432614326243263432644326543266432674326843269432704327143272432734327443275432764327743278432794328043281432824328343284432854328643287432884328943290432914329243293432944329543296432974329843299433004330143302433034330443305433064330743308433094331043311433124331343314433154331643317433184331943320433214332243323433244332543326433274332843329433304333143332433334333443335433364333743338433394334043341433424334343344433454334643347433484334943350433514335243353433544335543356433574335843359433604336143362433634336443365433664336743368433694337043371433724337343374433754337643377433784337943380433814338243383433844338543386433874338843389433904339143392433934339443395433964339743398433994340043401434024340343404434054340643407434084340943410434114341243413434144341543416434174341843419434204342143422434234342443425434264342743428434294343043431434324343343434434354343643437434384343943440434414344243443434444344543446434474344843449434504345143452434534345443455434564345743458434594346043461434624346343464434654346643467434684346943470434714347243473434744347543476434774347843479434804348143482434834348443485434864348743488434894349043491434924349343494434954349643497434984349943500435014350243503435044350543506435074350843509435104351143512435134351443515435164351743518435194352043521435224352343524435254352643527435284352943530435314353243533435344353543536435374353843539435404354143542435434354443545435464354743548435494355043551435524355343554435554355643557435584355943560435614356243563435644356543566435674356843569435704357143572435734357443575435764357743578435794358043581435824358343584435854358643587435884358943590435914359243593435944359543596435974359843599436004360143602436034360443605436064360743608436094361043611436124361343614436154361643617436184361943620436214362243623436244362543626436274362843629436304363143632436334363443635436364363743638436394364043641436424364343644436454364643647436484364943650436514365243653436544365543656436574365843659436604366143662436634366443665436664366743668436694367043671436724367343674436754367643677436784367943680436814368243683436844368543686436874368843689436904369143692436934369443695436964369743698436994370043701437024370343704437054370643707437084370943710437114371243713437144371543716437174371843719437204372143722437234372443725437264372743728437294373043731437324373343734437354373643737437384373943740437414374243743437444374543746437474374843749437504375143752437534375443755437564375743758437594376043761437624376343764437654376643767437684376943770437714377243773437744377543776437774377843779437804378143782437834378443785437864378743788437894379043791437924379343794437954379643797437984379943800438014380243803438044380543806438074380843809438104381143812438134381443815438164381743818438194382043821438224382343824438254382643827438284382943830438314383243833438344383543836438374383843839438404384143842438434384443845438464384743848438494385043851438524385343854438554385643857438584385943860438614386243863438644386543866438674386843869438704387143872438734387443875438764387743878438794388043881438824388343884438854388643887438884388943890438914389243893438944389543896438974389843899439004390143902439034390443905439064390743908439094391043911439124391343914439154391643917439184391943920439214392243923439244392543926439274392843929439304393143932439334393443935439364393743938439394394043941439424394343944439454394643947439484394943950439514395243953439544395543956439574395843959439604396143962439634396443965439664396743968439694397043971439724397343974439754397643977439784397943980439814398243983439844398543986439874398843989439904399143992439934399443995439964399743998439994400044001440024400344004440054400644007440084400944010440114401244013440144401544016440174401844019440204402144022440234402444025440264402744028440294403044031440324403344034440354403644037440384403944040440414404244043440444404544046440474404844049440504405144052440534405444055440564405744058440594406044061440624406344064440654406644067440684406944070440714407244073440744407544076440774407844079440804408144082440834408444085440864408744088440894409044091440924409344094440954409644097440984409944100441014410244103441044410544106441074410844109441104411144112441134411444115441164411744118441194412044121441224412344124441254412644127441284412944130441314413244133441344413544136441374413844139441404414144142441434414444145441464414744148441494415044151441524415344154441554415644157441584415944160441614416244163441644416544166441674416844169441704417144172441734417444175441764417744178441794418044181441824418344184441854418644187441884418944190441914419244193441944419544196441974419844199442004420144202442034420444205442064420744208442094421044211442124421344214442154421644217442184421944220442214422244223442244422544226442274422844229442304423144232442334423444235442364423744238442394424044241442424424344244442454424644247442484424944250442514425244253442544425544256442574425844259442604426144262442634426444265442664426744268442694427044271442724427344274442754427644277442784427944280442814428244283442844428544286442874428844289442904429144292442934429444295442964429744298442994430044301443024430344304443054430644307443084430944310443114431244313443144431544316443174431844319443204432144322443234432444325443264432744328443294433044331443324433344334443354433644337443384433944340443414434244343443444434544346443474434844349443504435144352443534435444355443564435744358443594436044361443624436344364443654436644367443684436944370443714437244373443744437544376443774437844379443804438144382443834438444385443864438744388443894439044391443924439344394443954439644397443984439944400444014440244403444044440544406444074440844409444104441144412444134441444415444164441744418444194442044421444224442344424444254442644427444284442944430444314443244433444344443544436444374443844439444404444144442444434444444445444464444744448444494445044451444524445344454444554445644457444584445944460444614446244463444644446544466444674446844469444704447144472444734447444475444764447744478444794448044481444824448344484444854448644487444884448944490444914449244493444944449544496444974449844499445004450144502445034450444505445064450744508445094451044511445124451344514445154451644517445184451944520445214452244523445244452544526445274452844529445304453144532445334453444535445364453744538445394454044541445424454344544445454454644547445484454944550445514455244553445544455544556445574455844559445604456144562445634456444565445664456744568445694457044571445724457344574445754457644577445784457944580445814458244583445844458544586445874458844589445904459144592445934459444595445964459744598445994460044601446024460344604446054460644607446084460944610446114461244613446144461544616446174461844619446204462144622446234462444625446264462744628446294463044631446324463344634446354463644637446384463944640446414464244643446444464544646446474464844649446504465144652446534465444655446564465744658446594466044661446624466344664446654466644667446684466944670446714467244673446744467544676446774467844679446804468144682446834468444685446864468744688446894469044691446924469344694446954469644697446984469944700447014470244703447044470544706447074470844709447104471144712447134471444715447164471744718447194472044721447224472344724447254472644727447284472944730447314473244733447344473544736447374473844739447404474144742447434474444745447464474744748447494475044751447524475344754447554475644757447584475944760447614476244763447644476544766447674476844769447704477144772447734477444775447764477744778447794478044781447824478344784447854478644787447884478944790447914479244793447944479544796447974479844799448004480144802448034480444805448064480744808448094481044811448124481344814448154481644817448184481944820448214482244823448244482544826448274482844829448304483144832448334483444835448364483744838448394484044841448424484344844448454484644847448484484944850448514485244853448544485544856448574485844859448604486144862448634486444865448664486744868448694487044871448724487344874448754487644877448784487944880448814488244883448844488544886448874488844889448904489144892448934489444895448964489744898448994490044901449024490344904449054490644907449084490944910449114491244913449144491544916449174491844919449204492144922449234492444925449264492744928449294493044931449324493344934449354493644937449384493944940449414494244943449444494544946449474494844949449504495144952449534495444955449564495744958449594496044961449624496344964449654496644967449684496944970449714497244973449744497544976449774497844979449804498144982449834498444985449864498744988449894499044991449924499344994449954499644997449984499945000450014500245003450044500545006450074500845009450104501145012450134501445015450164501745018450194502045021450224502345024450254502645027450284502945030450314503245033450344503545036450374503845039450404504145042450434504445045450464504745048450494505045051450524505345054450554505645057450584505945060450614506245063450644506545066450674506845069450704507145072450734507445075450764507745078450794508045081450824508345084450854508645087450884508945090450914509245093450944509545096450974509845099451004510145102451034510445105451064510745108451094511045111451124511345114451154511645117451184511945120451214512245123451244512545126451274512845129451304513145132451334513445135451364513745138451394514045141451424514345144451454514645147451484514945150451514515245153451544515545156451574515845159451604516145162451634516445165451664516745168451694517045171451724517345174451754517645177451784517945180451814518245183451844518545186451874518845189451904519145192451934519445195451964519745198451994520045201452024520345204452054520645207452084520945210452114521245213452144521545216452174521845219452204522145222452234522445225452264522745228452294523045231452324523345234452354523645237452384523945240452414524245243452444524545246452474524845249452504525145252452534525445255452564525745258452594526045261452624526345264452654526645267452684526945270452714527245273452744527545276452774527845279452804528145282452834528445285452864528745288452894529045291452924529345294452954529645297452984529945300453014530245303453044530545306453074530845309453104531145312453134531445315453164531745318453194532045321453224532345324453254532645327453284532945330453314533245333453344533545336453374533845339453404534145342453434534445345453464534745348453494535045351453524535345354453554535645357453584535945360453614536245363453644536545366453674536845369453704537145372453734537445375453764537745378453794538045381453824538345384453854538645387453884538945390453914539245393453944539545396453974539845399454004540145402454034540445405454064540745408454094541045411454124541345414454154541645417454184541945420454214542245423454244542545426454274542845429454304543145432454334543445435454364543745438454394544045441454424544345444454454544645447454484544945450454514545245453454544545545456454574545845459454604546145462454634546445465454664546745468454694547045471454724547345474454754547645477454784547945480454814548245483454844548545486454874548845489454904549145492454934549445495454964549745498454994550045501455024550345504455054550645507455084550945510455114551245513455144551545516455174551845519455204552145522455234552445525455264552745528455294553045531455324553345534455354553645537455384553945540455414554245543455444554545546455474554845549455504555145552455534555445555455564555745558455594556045561455624556345564455654556645567455684556945570455714557245573455744557545576455774557845579455804558145582455834558445585455864558745588455894559045591455924559345594455954559645597455984559945600456014560245603456044560545606456074560845609456104561145612456134561445615456164561745618456194562045621456224562345624456254562645627456284562945630456314563245633456344563545636456374563845639456404564145642456434564445645456464564745648456494565045651456524565345654456554565645657456584565945660456614566245663456644566545666456674566845669456704567145672456734567445675456764567745678456794568045681456824568345684456854568645687456884568945690456914569245693456944569545696456974569845699457004570145702457034570445705457064570745708457094571045711457124571345714457154571645717457184571945720457214572245723457244572545726457274572845729457304573145732457334573445735457364573745738457394574045741457424574345744457454574645747457484574945750457514575245753457544575545756457574575845759457604576145762457634576445765457664576745768457694577045771457724577345774457754577645777457784577945780457814578245783457844578545786457874578845789457904579145792457934579445795457964579745798457994580045801458024580345804458054580645807458084580945810458114581245813458144581545816458174581845819458204582145822458234582445825458264582745828458294583045831458324583345834458354583645837458384583945840458414584245843458444584545846458474584845849458504585145852458534585445855458564585745858458594586045861458624586345864458654586645867458684586945870458714587245873458744587545876458774587845879458804588145882458834588445885458864588745888458894589045891458924589345894458954589645897458984589945900459014590245903459044590545906459074590845909459104591145912459134591445915459164591745918459194592045921459224592345924459254592645927459284592945930459314593245933459344593545936459374593845939459404594145942459434594445945459464594745948459494595045951459524595345954459554595645957459584595945960459614596245963459644596545966459674596845969459704597145972459734597445975459764597745978459794598045981459824598345984459854598645987459884598945990459914599245993459944599545996459974599845999460004600146002460034600446005460064600746008460094601046011460124601346014460154601646017460184601946020460214602246023460244602546026460274602846029460304603146032460334603446035460364603746038460394604046041460424604346044460454604646047460484604946050460514605246053460544605546056460574605846059460604606146062460634606446065460664606746068460694607046071460724607346074460754607646077460784607946080460814608246083460844608546086460874608846089460904609146092460934609446095460964609746098460994610046101461024610346104461054610646107461084610946110461114611246113461144611546116461174611846119461204612146122461234612446125461264612746128461294613046131461324613346134461354613646137461384613946140461414614246143461444614546146461474614846149461504615146152461534615446155461564615746158461594616046161461624616346164461654616646167461684616946170461714617246173461744617546176461774617846179461804618146182461834618446185461864618746188461894619046191461924619346194461954619646197461984619946200462014620246203462044620546206462074620846209462104621146212462134621446215462164621746218462194622046221462224622346224462254622646227462284622946230462314623246233462344623546236462374623846239462404624146242462434624446245462464624746248462494625046251462524625346254462554625646257462584625946260462614626246263462644626546266462674626846269462704627146272462734627446275462764627746278462794628046281462824628346284462854628646287462884628946290462914629246293462944629546296462974629846299463004630146302463034630446305463064630746308463094631046311463124631346314463154631646317463184631946320463214632246323463244632546326463274632846329463304633146332463334633446335463364633746338463394634046341463424634346344463454634646347463484634946350463514635246353463544635546356463574635846359463604636146362463634636446365463664636746368463694637046371463724637346374463754637646377463784637946380463814638246383463844638546386463874638846389463904639146392463934639446395463964639746398463994640046401464024640346404464054640646407464084640946410464114641246413464144641546416464174641846419464204642146422464234642446425464264642746428464294643046431464324643346434464354643646437464384643946440464414644246443464444644546446464474644846449464504645146452464534645446455464564645746458464594646046461464624646346464464654646646467464684646946470464714647246473464744647546476464774647846479464804648146482464834648446485464864648746488464894649046491464924649346494464954649646497464984649946500465014650246503465044650546506465074650846509465104651146512465134651446515465164651746518465194652046521465224652346524465254652646527465284652946530465314653246533465344653546536465374653846539465404654146542465434654446545465464654746548465494655046551465524655346554465554655646557465584655946560465614656246563465644656546566465674656846569465704657146572465734657446575465764657746578465794658046581465824658346584465854658646587465884658946590465914659246593465944659546596465974659846599466004660146602466034660446605466064660746608466094661046611466124661346614466154661646617466184661946620466214662246623466244662546626466274662846629466304663146632466334663446635466364663746638466394664046641466424664346644466454664646647466484664946650466514665246653466544665546656466574665846659466604666146662466634666446665466664666746668466694667046671466724667346674466754667646677466784667946680466814668246683466844668546686466874668846689466904669146692466934669446695466964669746698466994670046701467024670346704467054670646707467084670946710467114671246713467144671546716467174671846719467204672146722467234672446725467264672746728467294673046731467324673346734467354673646737467384673946740467414674246743467444674546746467474674846749467504675146752467534675446755467564675746758467594676046761467624676346764467654676646767467684676946770467714677246773467744677546776467774677846779467804678146782467834678446785467864678746788467894679046791467924679346794467954679646797467984679946800468014680246803468044680546806468074680846809468104681146812468134681446815468164681746818468194682046821468224682346824468254682646827468284682946830468314683246833468344683546836468374683846839468404684146842468434684446845468464684746848468494685046851468524685346854468554685646857468584685946860468614686246863468644686546866468674686846869468704687146872468734687446875468764687746878468794688046881468824688346884468854688646887468884688946890468914689246893468944689546896468974689846899469004690146902469034690446905469064690746908469094691046911469124691346914469154691646917469184691946920469214692246923469244692546926469274692846929469304693146932469334693446935469364693746938469394694046941469424694346944469454694646947469484694946950469514695246953469544695546956469574695846959469604696146962469634696446965469664696746968469694697046971469724697346974469754697646977469784697946980469814698246983469844698546986469874698846989469904699146992469934699446995469964699746998469994700047001470024700347004470054700647007470084700947010470114701247013470144701547016470174701847019470204702147022470234702447025470264702747028470294703047031470324703347034470354703647037470384703947040470414704247043470444704547046470474704847049470504705147052470534705447055470564705747058470594706047061470624706347064470654706647067470684706947070470714707247073470744707547076470774707847079470804708147082470834708447085470864708747088470894709047091470924709347094470954709647097470984709947100471014710247103471044710547106471074710847109471104711147112471134711447115471164711747118471194712047121471224712347124471254712647127471284712947130471314713247133471344713547136471374713847139471404714147142471434714447145471464714747148471494715047151471524715347154471554715647157471584715947160471614716247163471644716547166471674716847169471704717147172471734717447175471764717747178471794718047181471824718347184471854718647187471884718947190471914719247193471944719547196471974719847199472004720147202472034720447205472064720747208472094721047211472124721347214472154721647217472184721947220472214722247223472244722547226472274722847229472304723147232472334723447235472364723747238472394724047241472424724347244472454724647247472484724947250472514725247253472544725547256472574725847259472604726147262472634726447265472664726747268472694727047271472724727347274472754727647277472784727947280472814728247283472844728547286472874728847289472904729147292472934729447295472964729747298472994730047301473024730347304473054730647307473084730947310473114731247313473144731547316473174731847319473204732147322473234732447325473264732747328473294733047331473324733347334473354733647337473384733947340473414734247343473444734547346473474734847349473504735147352473534735447355473564735747358473594736047361473624736347364473654736647367473684736947370473714737247373473744737547376473774737847379473804738147382473834738447385473864738747388473894739047391473924739347394473954739647397473984739947400474014740247403474044740547406474074740847409474104741147412474134741447415474164741747418474194742047421474224742347424474254742647427474284742947430474314743247433474344743547436474374743847439474404744147442474434744447445474464744747448474494745047451474524745347454474554745647457474584745947460474614746247463474644746547466474674746847469474704747147472474734747447475474764747747478474794748047481474824748347484474854748647487474884748947490474914749247493474944749547496474974749847499475004750147502475034750447505475064750747508475094751047511475124751347514475154751647517475184751947520475214752247523475244752547526475274752847529475304753147532475334753447535475364753747538475394754047541475424754347544475454754647547475484754947550475514755247553475544755547556475574755847559475604756147562475634756447565475664756747568475694757047571475724757347574475754757647577475784757947580475814758247583475844758547586475874758847589475904759147592475934759447595475964759747598475994760047601476024760347604476054760647607476084760947610476114761247613476144761547616476174761847619476204762147622476234762447625476264762747628476294763047631476324763347634476354763647637476384763947640476414764247643476444764547646476474764847649476504765147652476534765447655476564765747658476594766047661476624766347664476654766647667476684766947670476714767247673476744767547676476774767847679476804768147682476834768447685476864768747688476894769047691476924769347694476954769647697476984769947700477014770247703477044770547706477074770847709477104771147712477134771447715477164771747718477194772047721477224772347724477254772647727477284772947730477314773247733477344773547736477374773847739477404774147742477434774447745477464774747748477494775047751477524775347754477554775647757477584775947760477614776247763477644776547766477674776847769477704777147772477734777447775477764777747778477794778047781477824778347784477854778647787477884778947790477914779247793477944779547796477974779847799478004780147802478034780447805478064780747808478094781047811478124781347814478154781647817478184781947820478214782247823478244782547826478274782847829478304783147832478334783447835478364783747838478394784047841478424784347844478454784647847478484784947850478514785247853478544785547856478574785847859478604786147862478634786447865478664786747868478694787047871478724787347874478754787647877478784787947880478814788247883478844788547886478874788847889478904789147892478934789447895478964789747898478994790047901479024790347904479054790647907479084790947910479114791247913479144791547916479174791847919479204792147922479234792447925479264792747928479294793047931479324793347934479354793647937479384793947940479414794247943479444794547946479474794847949479504795147952479534795447955479564795747958479594796047961479624796347964479654796647967479684796947970479714797247973479744797547976479774797847979479804798147982479834798447985479864798747988479894799047991479924799347994479954799647997479984799948000480014800248003480044800548006480074800848009480104801148012480134801448015480164801748018480194802048021480224802348024480254802648027480284802948030480314803248033480344803548036480374803848039480404804148042480434804448045480464804748048480494805048051480524805348054480554805648057480584805948060480614806248063480644806548066480674806848069480704807148072480734807448075480764807748078480794808048081480824808348084480854808648087480884808948090480914809248093480944809548096480974809848099481004810148102481034810448105481064810748108481094811048111481124811348114481154811648117481184811948120481214812248123481244812548126481274812848129481304813148132481334813448135481364813748138481394814048141481424814348144481454814648147481484814948150481514815248153481544815548156481574815848159481604816148162481634816448165481664816748168481694817048171481724817348174481754817648177481784817948180481814818248183481844818548186481874818848189481904819148192481934819448195481964819748198481994820048201482024820348204482054820648207482084820948210482114821248213482144821548216482174821848219482204822148222482234822448225482264822748228482294823048231482324823348234482354823648237482384823948240482414824248243482444824548246482474824848249482504825148252482534825448255482564825748258482594826048261482624826348264482654826648267482684826948270482714827248273482744827548276482774827848279482804828148282482834828448285482864828748288482894829048291482924829348294482954829648297482984829948300483014830248303483044830548306483074830848309483104831148312483134831448315483164831748318483194832048321483224832348324483254832648327483284832948330483314833248333483344833548336483374833848339483404834148342483434834448345483464834748348483494835048351483524835348354483554835648357483584835948360483614836248363483644836548366483674836848369483704837148372483734837448375483764837748378483794838048381483824838348384483854838648387483884838948390483914839248393483944839548396483974839848399484004840148402484034840448405484064840748408484094841048411484124841348414484154841648417484184841948420484214842248423484244842548426484274842848429484304843148432484334843448435484364843748438484394844048441484424844348444484454844648447484484844948450484514845248453484544845548456484574845848459484604846148462484634846448465484664846748468484694847048471484724847348474484754847648477484784847948480484814848248483484844848548486484874848848489484904849148492484934849448495484964849748498484994850048501485024850348504485054850648507485084850948510485114851248513485144851548516485174851848519485204852148522485234852448525485264852748528485294853048531485324853348534485354853648537485384853948540485414854248543485444854548546485474854848549485504855148552485534855448555485564855748558485594856048561485624856348564485654856648567485684856948570485714857248573485744857548576485774857848579485804858148582485834858448585485864858748588485894859048591485924859348594485954859648597485984859948600486014860248603486044860548606486074860848609486104861148612486134861448615486164861748618486194862048621486224862348624486254862648627486284862948630486314863248633486344863548636486374863848639486404864148642486434864448645486464864748648486494865048651486524865348654486554865648657486584865948660486614866248663486644866548666486674866848669486704867148672486734867448675486764867748678486794868048681486824868348684486854868648687486884868948690486914869248693486944869548696486974869848699487004870148702487034870448705487064870748708487094871048711487124871348714487154871648717487184871948720487214872248723487244872548726487274872848729487304873148732487334873448735487364873748738487394874048741487424874348744487454874648747487484874948750487514875248753487544875548756487574875848759487604876148762487634876448765487664876748768487694877048771487724877348774487754877648777487784877948780487814878248783487844878548786487874878848789487904879148792487934879448795487964879748798487994880048801488024880348804488054880648807488084880948810488114881248813488144881548816488174881848819488204882148822488234882448825488264882748828488294883048831488324883348834488354883648837488384883948840488414884248843488444884548846488474884848849488504885148852488534885448855488564885748858488594886048861488624886348864488654886648867488684886948870488714887248873488744887548876488774887848879488804888148882488834888448885488864888748888488894889048891488924889348894488954889648897488984889948900489014890248903489044890548906489074890848909489104891148912489134891448915489164891748918489194892048921489224892348924489254892648927489284892948930489314893248933489344893548936489374893848939489404894148942489434894448945489464894748948489494895048951489524895348954489554895648957489584895948960489614896248963489644896548966489674896848969489704897148972489734897448975489764897748978489794898048981489824898348984489854898648987489884898948990489914899248993489944899548996489974899848999490004900149002490034900449005490064900749008490094901049011490124901349014490154901649017490184901949020490214902249023490244902549026490274902849029490304903149032490334903449035490364903749038490394904049041490424904349044490454904649047490484904949050490514905249053490544905549056490574905849059490604906149062490634906449065490664906749068490694907049071490724907349074490754907649077490784907949080490814908249083490844908549086490874908849089490904909149092490934909449095490964909749098490994910049101491024910349104491054910649107491084910949110491114911249113491144911549116491174911849119491204912149122491234912449125491264912749128491294913049131491324913349134491354913649137491384913949140491414914249143491444914549146491474914849149491504915149152491534915449155491564915749158491594916049161491624916349164491654916649167491684916949170491714917249173491744917549176491774917849179491804918149182491834918449185491864918749188491894919049191491924919349194491954919649197491984919949200492014920249203492044920549206492074920849209492104921149212492134921449215492164921749218492194922049221492224922349224492254922649227492284922949230492314923249233492344923549236492374923849239492404924149242492434924449245492464924749248492494925049251492524925349254492554925649257492584925949260492614926249263492644926549266492674926849269492704927149272492734927449275492764927749278492794928049281492824928349284492854928649287492884928949290492914929249293492944929549296492974929849299493004930149302493034930449305493064930749308493094931049311493124931349314493154931649317493184931949320493214932249323493244932549326493274932849329493304933149332493334933449335493364933749338493394934049341493424934349344493454934649347493484934949350493514935249353493544935549356493574935849359493604936149362493634936449365493664936749368493694937049371493724937349374493754937649377493784937949380493814938249383493844938549386493874938849389493904939149392493934939449395493964939749398493994940049401494024940349404494054940649407494084940949410494114941249413494144941549416494174941849419494204942149422494234942449425494264942749428494294943049431494324943349434494354943649437494384943949440494414944249443494444944549446494474944849449494504945149452494534945449455494564945749458494594946049461494624946349464494654946649467494684946949470494714947249473494744947549476494774947849479494804948149482494834948449485494864948749488494894949049491494924949349494494954949649497494984949949500495014950249503495044950549506495074950849509495104951149512495134951449515495164951749518495194952049521495224952349524495254952649527495284952949530495314953249533495344953549536495374953849539495404954149542495434954449545495464954749548495494955049551495524955349554495554955649557495584955949560495614956249563495644956549566495674956849569495704957149572495734957449575495764957749578495794958049581495824958349584495854958649587495884958949590495914959249593495944959549596495974959849599496004960149602496034960449605496064960749608496094961049611496124961349614496154961649617496184961949620496214962249623496244962549626496274962849629496304963149632496334963449635496364963749638496394964049641496424964349644496454964649647496484964949650496514965249653496544965549656496574965849659496604966149662496634966449665496664966749668496694967049671496724967349674496754967649677496784967949680496814968249683496844968549686496874968849689496904969149692496934969449695496964969749698496994970049701497024970349704497054970649707497084970949710497114971249713497144971549716497174971849719497204972149722497234972449725497264972749728497294973049731497324973349734497354973649737497384973949740497414974249743497444974549746497474974849749497504975149752497534975449755497564975749758497594976049761497624976349764497654976649767497684976949770497714977249773497744977549776497774977849779497804978149782497834978449785497864978749788497894979049791497924979349794497954979649797497984979949800498014980249803498044980549806498074980849809498104981149812498134981449815498164981749818498194982049821498224982349824498254982649827498284982949830498314983249833498344983549836498374983849839498404984149842498434984449845498464984749848498494985049851498524985349854498554985649857498584985949860498614986249863498644986549866498674986849869498704987149872498734987449875498764987749878498794988049881498824988349884498854988649887498884988949890498914989249893498944989549896498974989849899499004990149902499034990449905499064990749908499094991049911499124991349914499154991649917499184991949920499214992249923499244992549926499274992849929499304993149932499334993449935499364993749938499394994049941499424994349944499454994649947499484994949950499514995249953499544995549956499574995849959499604996149962499634996449965499664996749968499694997049971499724997349974499754997649977499784997949980499814998249983499844998549986499874998849989499904999149992499934999449995499964999749998499995000050001500025000350004500055000650007500085000950010500115001250013500145001550016500175001850019500205002150022500235002450025500265002750028500295003050031500325003350034500355003650037500385003950040500415004250043500445004550046500475004850049500505005150052500535005450055500565005750058500595006050061500625006350064500655006650067500685006950070500715007250073500745007550076500775007850079500805008150082500835008450085500865008750088500895009050091500925009350094500955009650097500985009950100501015010250103501045010550106501075010850109501105011150112501135011450115501165011750118501195012050121501225012350124501255012650127501285012950130501315013250133501345013550136501375013850139501405014150142501435014450145501465014750148501495015050151501525015350154501555015650157501585015950160501615016250163501645016550166501675016850169501705017150172501735017450175501765017750178501795018050181501825018350184501855018650187501885018950190501915019250193501945019550196501975019850199502005020150202502035020450205502065020750208502095021050211502125021350214502155021650217502185021950220502215022250223502245022550226502275022850229502305023150232502335023450235502365023750238502395024050241502425024350244502455024650247502485024950250502515025250253502545025550256502575025850259502605026150262502635026450265502665026750268502695027050271502725027350274502755027650277502785027950280502815028250283502845028550286502875028850289502905029150292502935029450295502965029750298502995030050301503025030350304503055030650307503085030950310503115031250313503145031550316503175031850319503205032150322503235032450325503265032750328503295033050331503325033350334503355033650337503385033950340503415034250343503445034550346503475034850349503505035150352503535035450355503565035750358503595036050361503625036350364503655036650367503685036950370503715037250373503745037550376503775037850379503805038150382503835038450385503865038750388503895039050391503925039350394503955039650397503985039950400504015040250403504045040550406504075040850409504105041150412504135041450415504165041750418504195042050421504225042350424504255042650427504285042950430504315043250433504345043550436504375043850439504405044150442504435044450445504465044750448504495045050451504525045350454504555045650457504585045950460504615046250463504645046550466504675046850469504705047150472504735047450475504765047750478504795048050481504825048350484504855048650487504885048950490504915049250493504945049550496504975049850499505005050150502505035050450505505065050750508505095051050511505125051350514505155051650517505185051950520505215052250523505245052550526505275052850529505305053150532505335053450535505365053750538505395054050541505425054350544505455054650547505485054950550505515055250553505545055550556505575055850559505605056150562505635056450565505665056750568505695057050571505725057350574505755057650577505785057950580505815058250583505845058550586505875058850589505905059150592505935059450595505965059750598505995060050601506025060350604506055060650607506085060950610506115061250613506145061550616506175061850619506205062150622506235062450625506265062750628506295063050631506325063350634506355063650637506385063950640506415064250643506445064550646506475064850649506505065150652506535065450655506565065750658506595066050661506625066350664506655066650667506685066950670506715067250673506745067550676506775067850679506805068150682506835068450685506865068750688506895069050691506925069350694506955069650697506985069950700507015070250703507045070550706507075070850709507105071150712507135071450715507165071750718507195072050721507225072350724507255072650727507285072950730507315073250733507345073550736507375073850739507405074150742507435074450745507465074750748507495075050751507525075350754507555075650757507585075950760507615076250763507645076550766507675076850769507705077150772507735077450775507765077750778507795078050781507825078350784507855078650787507885078950790507915079250793507945079550796507975079850799508005080150802508035080450805508065080750808508095081050811508125081350814508155081650817508185081950820508215082250823508245082550826508275082850829508305083150832508335083450835508365083750838508395084050841508425084350844508455084650847508485084950850508515085250853508545085550856508575085850859508605086150862508635086450865508665086750868508695087050871508725087350874508755087650877508785087950880508815088250883508845088550886508875088850889508905089150892508935089450895508965089750898508995090050901509025090350904509055090650907509085090950910509115091250913509145091550916509175091850919509205092150922509235092450925509265092750928509295093050931509325093350934509355093650937509385093950940509415094250943509445094550946509475094850949509505095150952509535095450955509565095750958509595096050961509625096350964509655096650967509685096950970509715097250973509745097550976509775097850979509805098150982509835098450985509865098750988509895099050991509925099350994509955099650997509985099951000510015100251003510045100551006510075100851009510105101151012510135101451015510165101751018510195102051021510225102351024510255102651027510285102951030510315103251033510345103551036510375103851039510405104151042510435104451045510465104751048510495105051051510525105351054510555105651057510585105951060510615106251063510645106551066510675106851069510705107151072510735107451075510765107751078510795108051081510825108351084510855108651087510885108951090510915109251093510945109551096510975109851099511005110151102511035110451105511065110751108511095111051111511125111351114511155111651117511185111951120511215112251123511245112551126511275112851129511305113151132511335113451135511365113751138511395114051141511425114351144511455114651147511485114951150511515115251153511545115551156511575115851159511605116151162511635116451165511665116751168511695117051171511725117351174511755117651177511785117951180511815118251183511845118551186511875118851189511905119151192511935119451195511965119751198511995120051201512025120351204512055120651207512085120951210512115121251213512145121551216512175121851219512205122151222512235122451225512265122751228512295123051231512325123351234512355123651237512385123951240512415124251243512445124551246512475124851249512505125151252512535125451255512565125751258512595126051261512625126351264512655126651267512685126951270512715127251273512745127551276512775127851279512805128151282512835128451285512865128751288512895129051291512925129351294512955129651297512985129951300513015130251303513045130551306513075130851309513105131151312513135131451315513165131751318513195132051321513225132351324513255132651327513285132951330513315133251333513345133551336513375133851339513405134151342513435134451345513465134751348513495135051351513525135351354513555135651357513585135951360513615136251363513645136551366513675136851369513705137151372513735137451375513765137751378513795138051381513825138351384513855138651387513885138951390513915139251393513945139551396513975139851399514005140151402514035140451405514065140751408514095141051411514125141351414514155141651417514185141951420514215142251423514245142551426514275142851429514305143151432514335143451435514365143751438514395144051441514425144351444514455144651447514485144951450514515145251453514545145551456514575145851459514605146151462514635146451465514665146751468514695147051471514725147351474514755147651477514785147951480514815148251483514845148551486514875148851489514905149151492514935149451495514965149751498514995150051501515025150351504515055150651507515085150951510515115151251513515145151551516515175151851519515205152151522515235152451525515265152751528515295153051531515325153351534515355153651537515385153951540515415154251543515445154551546515475154851549515505155151552515535155451555515565155751558515595156051561515625156351564515655156651567515685156951570515715157251573515745157551576515775157851579515805158151582515835158451585515865158751588515895159051591515925159351594515955159651597515985159951600516015160251603516045160551606516075160851609516105161151612516135161451615516165161751618516195162051621516225162351624516255162651627516285162951630516315163251633516345163551636516375163851639516405164151642516435164451645516465164751648516495165051651516525165351654516555165651657516585165951660516615166251663516645166551666516675166851669516705167151672516735167451675516765167751678516795168051681516825168351684516855168651687516885168951690516915169251693516945169551696516975169851699517005170151702517035170451705517065170751708517095171051711517125171351714517155171651717517185171951720517215172251723517245172551726517275172851729517305173151732517335173451735517365173751738517395174051741517425174351744517455174651747517485174951750517515175251753517545175551756517575175851759517605176151762517635176451765517665176751768517695177051771517725177351774517755177651777517785177951780517815178251783517845178551786517875178851789517905179151792517935179451795517965179751798517995180051801518025180351804518055180651807518085180951810518115181251813518145181551816518175181851819518205182151822518235182451825518265182751828518295183051831518325183351834518355183651837518385183951840518415184251843518445184551846518475184851849518505185151852518535185451855518565185751858518595186051861518625186351864518655186651867518685186951870518715187251873518745187551876518775187851879518805188151882518835188451885518865188751888518895189051891518925189351894518955189651897518985189951900519015190251903519045190551906519075190851909519105191151912519135191451915519165191751918519195192051921519225192351924519255192651927519285192951930519315193251933519345193551936519375193851939519405194151942519435194451945519465194751948519495195051951519525195351954519555195651957519585195951960519615196251963519645196551966519675196851969519705197151972519735197451975519765197751978519795198051981519825198351984519855198651987519885198951990519915199251993519945199551996519975199851999520005200152002520035200452005520065200752008520095201052011520125201352014520155201652017520185201952020520215202252023520245202552026520275202852029520305203152032520335203452035520365203752038520395204052041520425204352044520455204652047520485204952050520515205252053520545205552056520575205852059520605206152062520635206452065520665206752068520695207052071520725207352074520755207652077520785207952080520815208252083520845208552086520875208852089520905209152092520935209452095520965209752098520995210052101521025210352104521055210652107521085210952110521115211252113521145211552116521175211852119521205212152122521235212452125521265212752128521295213052131521325213352134521355213652137521385213952140521415214252143521445214552146521475214852149521505215152152521535215452155521565215752158521595216052161521625216352164521655216652167521685216952170521715217252173521745217552176521775217852179521805218152182521835218452185521865218752188521895219052191521925219352194521955219652197521985219952200522015220252203522045220552206522075220852209522105221152212522135221452215522165221752218522195222052221522225222352224522255222652227522285222952230522315223252233522345223552236522375223852239522405224152242522435224452245522465224752248522495225052251522525225352254522555225652257522585225952260522615226252263522645226552266522675226852269522705227152272522735227452275522765227752278522795228052281522825228352284522855228652287522885228952290522915229252293522945229552296522975229852299523005230152302523035230452305523065230752308523095231052311523125231352314523155231652317523185231952320523215232252323523245232552326523275232852329523305233152332523335233452335523365233752338523395234052341523425234352344523455234652347523485234952350523515235252353523545235552356523575235852359523605236152362523635236452365523665236752368523695237052371523725237352374523755237652377523785237952380523815238252383523845238552386523875238852389523905239152392523935239452395523965239752398523995240052401524025240352404524055240652407524085240952410524115241252413524145241552416524175241852419524205242152422524235242452425524265242752428524295243052431524325243352434524355243652437524385243952440524415244252443524445244552446524475244852449524505245152452524535245452455524565245752458524595246052461524625246352464524655246652467524685246952470524715247252473524745247552476524775247852479524805248152482524835248452485524865248752488524895249052491524925249352494524955249652497524985249952500525015250252503525045250552506525075250852509525105251152512525135251452515525165251752518525195252052521525225252352524525255252652527525285252952530525315253252533525345253552536525375253852539525405254152542525435254452545525465254752548525495255052551525525255352554525555255652557525585255952560525615256252563525645256552566525675256852569525705257152572525735257452575525765257752578525795258052581525825258352584525855258652587525885258952590525915259252593525945259552596525975259852599526005260152602526035260452605526065260752608526095261052611526125261352614526155261652617526185261952620526215262252623526245262552626526275262852629526305263152632526335263452635526365263752638526395264052641526425264352644526455264652647526485264952650526515265252653526545265552656526575265852659526605266152662526635266452665526665266752668526695267052671526725267352674526755267652677526785267952680526815268252683526845268552686526875268852689526905269152692526935269452695526965269752698526995270052701527025270352704527055270652707527085270952710527115271252713527145271552716527175271852719527205272152722527235272452725527265272752728527295273052731527325273352734527355273652737527385273952740527415274252743527445274552746527475274852749527505275152752527535275452755527565275752758527595276052761527625276352764527655276652767527685276952770527715277252773527745277552776527775277852779527805278152782527835278452785527865278752788527895279052791527925279352794527955279652797527985279952800528015280252803528045280552806528075280852809528105281152812528135281452815528165281752818528195282052821528225282352824528255282652827528285282952830528315283252833528345283552836528375283852839528405284152842528435284452845528465284752848528495285052851528525285352854528555285652857528585285952860528615286252863528645286552866528675286852869528705287152872528735287452875528765287752878528795288052881528825288352884528855288652887528885288952890528915289252893528945289552896528975289852899529005290152902529035290452905529065290752908529095291052911529125291352914529155291652917529185291952920529215292252923529245292552926529275292852929529305293152932529335293452935529365293752938529395294052941529425294352944529455294652947529485294952950529515295252953529545295552956529575295852959529605296152962529635296452965529665296752968529695297052971529725297352974529755297652977529785297952980529815298252983529845298552986529875298852989529905299152992529935299452995529965299752998529995300053001530025300353004530055300653007530085300953010530115301253013530145301553016530175301853019530205302153022530235302453025530265302753028530295303053031530325303353034530355303653037530385303953040530415304253043530445304553046530475304853049530505305153052530535305453055530565305753058530595306053061530625306353064530655306653067530685306953070530715307253073530745307553076530775307853079530805308153082530835308453085530865308753088530895309053091530925309353094530955309653097530985309953100531015310253103531045310553106531075310853109531105311153112531135311453115531165311753118531195312053121531225312353124531255312653127531285312953130531315313253133531345313553136531375313853139531405314153142531435314453145531465314753148531495315053151531525315353154531555315653157531585315953160531615316253163531645316553166531675316853169531705317153172531735317453175531765317753178531795318053181531825318353184531855318653187531885318953190531915319253193531945319553196531975319853199532005320153202532035320453205532065320753208532095321053211532125321353214532155321653217532185321953220532215322253223532245322553226532275322853229532305323153232532335323453235532365323753238532395324053241532425324353244532455324653247532485324953250532515325253253532545325553256532575325853259532605326153262532635326453265532665326753268532695327053271532725327353274532755327653277532785327953280532815328253283532845328553286532875328853289532905329153292532935329453295532965329753298532995330053301533025330353304533055330653307533085330953310533115331253313533145331553316533175331853319533205332153322533235332453325533265332753328533295333053331533325333353334533355333653337533385333953340533415334253343533445334553346533475334853349533505335153352533535335453355533565335753358533595336053361533625336353364533655336653367533685336953370533715337253373533745337553376533775337853379533805338153382533835338453385533865338753388533895339053391533925339353394533955339653397533985339953400534015340253403534045340553406534075340853409534105341153412534135341453415534165341753418534195342053421534225342353424534255342653427534285342953430534315343253433534345343553436534375343853439534405344153442534435344453445534465344753448534495345053451534525345353454534555345653457534585345953460534615346253463534645346553466534675346853469534705347153472534735347453475534765347753478534795348053481534825348353484534855348653487534885348953490534915349253493534945349553496534975349853499535005350153502535035350453505535065350753508535095351053511535125351353514535155351653517535185351953520535215352253523535245352553526535275352853529535305353153532535335353453535535365353753538535395354053541535425354353544535455354653547535485354953550535515355253553535545355553556535575355853559535605356153562535635356453565535665356753568535695357053571535725357353574535755357653577535785357953580535815358253583535845358553586535875358853589535905359153592535935359453595535965359753598535995360053601536025360353604536055360653607536085360953610536115361253613536145361553616536175361853619536205362153622536235362453625536265362753628536295363053631536325363353634536355363653637536385363953640536415364253643536445364553646536475364853649536505365153652536535365453655536565365753658536595366053661536625366353664536655366653667536685366953670536715367253673536745367553676536775367853679536805368153682536835368453685536865368753688536895369053691536925369353694536955369653697536985369953700537015370253703537045370553706537075370853709537105371153712537135371453715537165371753718537195372053721537225372353724537255372653727537285372953730537315373253733537345373553736537375373853739537405374153742537435374453745537465374753748537495375053751537525375353754537555375653757537585375953760537615376253763537645376553766537675376853769537705377153772537735377453775537765377753778537795378053781537825378353784537855378653787537885378953790537915379253793537945379553796537975379853799538005380153802538035380453805538065380753808538095381053811538125381353814538155381653817538185381953820538215382253823538245382553826538275382853829538305383153832538335383453835538365383753838538395384053841538425384353844538455384653847538485384953850538515385253853538545385553856538575385853859538605386153862538635386453865538665386753868538695387053871538725387353874538755387653877538785387953880538815388253883538845388553886538875388853889538905389153892538935389453895538965389753898538995390053901539025390353904539055390653907539085390953910539115391253913539145391553916539175391853919539205392153922539235392453925539265392753928539295393053931539325393353934539355393653937539385393953940539415394253943539445394553946539475394853949539505395153952539535395453955539565395753958539595396053961539625396353964539655396653967539685396953970539715397253973539745397553976539775397853979539805398153982539835398453985539865398753988539895399053991539925399353994539955399653997539985399954000540015400254003540045400554006540075400854009540105401154012540135401454015540165401754018540195402054021540225402354024540255402654027540285402954030540315403254033540345403554036540375403854039540405404154042540435404454045540465404754048540495405054051540525405354054540555405654057540585405954060540615406254063540645406554066540675406854069540705407154072540735407454075540765407754078540795408054081540825408354084540855408654087540885408954090540915409254093540945409554096540975409854099541005410154102541035410454105541065410754108541095411054111541125411354114541155411654117541185411954120541215412254123541245412554126541275412854129541305413154132541335413454135541365413754138541395414054141541425414354144541455414654147541485414954150541515415254153541545415554156541575415854159541605416154162541635416454165541665416754168541695417054171541725417354174541755417654177541785417954180541815418254183541845418554186541875418854189541905419154192541935419454195541965419754198541995420054201542025420354204542055420654207542085420954210542115421254213542145421554216542175421854219542205422154222542235422454225542265422754228542295423054231542325423354234542355423654237542385423954240542415424254243542445424554246542475424854249542505425154252542535425454255542565425754258542595426054261542625426354264542655426654267542685426954270542715427254273542745427554276542775427854279542805428154282542835428454285542865428754288542895429054291542925429354294542955429654297542985429954300543015430254303543045430554306543075430854309543105431154312543135431454315543165431754318543195432054321543225432354324543255432654327543285432954330543315433254333543345433554336543375433854339543405434154342543435434454345543465434754348543495435054351543525435354354543555435654357543585435954360543615436254363543645436554366543675436854369543705437154372543735437454375543765437754378543795438054381543825438354384543855438654387543885438954390543915439254393543945439554396543975439854399544005440154402544035440454405544065440754408544095441054411544125441354414544155441654417544185441954420544215442254423544245442554426544275442854429544305443154432544335443454435544365443754438544395444054441544425444354444544455444654447544485444954450544515445254453544545445554456544575445854459544605446154462544635446454465544665446754468544695447054471544725447354474544755447654477544785447954480544815448254483544845448554486544875448854489544905449154492544935449454495544965449754498544995450054501545025450354504545055450654507545085450954510545115451254513545145451554516545175451854519545205452154522545235452454525545265452754528545295453054531545325453354534545355453654537545385453954540545415454254543545445454554546545475454854549545505455154552545535455454555545565455754558545595456054561545625456354564545655456654567545685456954570545715457254573545745457554576545775457854579545805458154582545835458454585545865458754588545895459054591545925459354594545955459654597545985459954600546015460254603546045460554606546075460854609546105461154612546135461454615546165461754618546195462054621546225462354624546255462654627546285462954630546315463254633546345463554636546375463854639546405464154642546435464454645546465464754648546495465054651546525465354654546555465654657546585465954660546615466254663546645466554666546675466854669546705467154672546735467454675546765467754678546795468054681546825468354684546855468654687546885468954690546915469254693546945469554696546975469854699547005470154702547035470454705547065470754708547095471054711547125471354714547155471654717547185471954720547215472254723547245472554726547275472854729547305473154732547335473454735547365473754738547395474054741547425474354744547455474654747547485474954750547515475254753547545475554756547575475854759547605476154762547635476454765547665476754768547695477054771547725477354774547755477654777547785477954780547815478254783547845478554786547875478854789547905479154792547935479454795547965479754798547995480054801548025480354804548055480654807548085480954810548115481254813548145481554816548175481854819548205482154822548235482454825548265482754828548295483054831548325483354834548355483654837548385483954840548415484254843548445484554846548475484854849548505485154852548535485454855548565485754858548595486054861548625486354864548655486654867548685486954870548715487254873548745487554876548775487854879548805488154882548835488454885548865488754888548895489054891548925489354894548955489654897548985489954900549015490254903549045490554906549075490854909549105491154912549135491454915549165491754918549195492054921549225492354924549255492654927549285492954930549315493254933549345493554936549375493854939549405494154942549435494454945549465494754948549495495054951549525495354954549555495654957549585495954960549615496254963549645496554966549675496854969549705497154972549735497454975549765497754978549795498054981549825498354984549855498654987549885498954990549915499254993549945499554996549975499854999550005500155002550035500455005550065500755008550095501055011550125501355014550155501655017550185501955020550215502255023550245502555026550275502855029550305503155032550335503455035550365503755038550395504055041550425504355044550455504655047550485504955050550515505255053550545505555056550575505855059550605506155062550635506455065550665506755068550695507055071550725507355074550755507655077550785507955080550815508255083550845508555086550875508855089550905509155092550935509455095550965509755098550995510055101551025510355104551055510655107551085510955110551115511255113551145511555116551175511855119551205512155122551235512455125551265512755128551295513055131551325513355134551355513655137551385513955140551415514255143551445514555146551475514855149551505515155152551535515455155551565515755158551595516055161551625516355164551655516655167551685516955170551715517255173551745517555176551775517855179551805518155182551835518455185551865518755188551895519055191551925519355194551955519655197551985519955200552015520255203552045520555206552075520855209552105521155212552135521455215552165521755218552195522055221552225522355224552255522655227552285522955230552315523255233552345523555236552375523855239552405524155242552435524455245552465524755248552495525055251552525525355254552555525655257552585525955260552615526255263552645526555266552675526855269552705527155272552735527455275552765527755278552795528055281552825528355284552855528655287552885528955290552915529255293552945529555296552975529855299553005530155302553035530455305553065530755308553095531055311553125531355314553155531655317553185531955320553215532255323553245532555326553275532855329553305533155332553335533455335553365533755338553395534055341553425534355344553455534655347553485534955350553515535255353553545535555356553575535855359553605536155362553635536455365553665536755368553695537055371553725537355374553755537655377553785537955380553815538255383553845538555386553875538855389553905539155392553935539455395553965539755398553995540055401554025540355404554055540655407554085540955410554115541255413554145541555416554175541855419554205542155422554235542455425554265542755428554295543055431554325543355434554355543655437554385543955440554415544255443554445544555446554475544855449554505545155452554535545455455554565545755458554595546055461554625546355464554655546655467554685546955470554715547255473554745547555476554775547855479554805548155482554835548455485554865548755488554895549055491554925549355494554955549655497554985549955500555015550255503555045550555506555075550855509555105551155512555135551455515555165551755518555195552055521555225552355524555255552655527555285552955530555315553255533555345553555536555375553855539555405554155542555435554455545555465554755548555495555055551555525555355554555555555655557555585555955560555615556255563555645556555566555675556855569555705557155572555735557455575555765557755578555795558055581555825558355584555855558655587555885558955590555915559255593555945559555596555975559855599556005560155602556035560455605556065560755608556095561055611556125561355614556155561655617556185561955620556215562255623556245562555626556275562855629556305563155632556335563455635556365563755638556395564055641556425564355644556455564655647556485564955650556515565255653556545565555656556575565855659556605566155662556635566455665556665566755668556695567055671556725567355674556755567655677556785567955680556815568255683556845568555686556875568855689556905569155692556935569455695556965569755698556995570055701557025570355704557055570655707557085570955710557115571255713557145571555716557175571855719557205572155722557235572455725557265572755728557295573055731557325573355734557355573655737557385573955740557415574255743557445574555746557475574855749557505575155752557535575455755557565575755758557595576055761557625576355764557655576655767557685576955770557715577255773557745577555776557775577855779557805578155782557835578455785557865578755788557895579055791557925579355794557955579655797557985579955800558015580255803558045580555806558075580855809558105581155812558135581455815558165581755818558195582055821558225582355824558255582655827558285582955830558315583255833558345583555836558375583855839558405584155842558435584455845558465584755848558495585055851558525585355854558555585655857558585585955860558615586255863558645586555866558675586855869558705587155872558735587455875558765587755878558795588055881558825588355884558855588655887558885588955890558915589255893558945589555896558975589855899559005590155902559035590455905559065590755908559095591055911559125591355914559155591655917559185591955920559215592255923559245592555926559275592855929559305593155932559335593455935559365593755938559395594055941559425594355944559455594655947559485594955950559515595255953559545595555956559575595855959559605596155962559635596455965559665596755968559695597055971559725597355974559755597655977559785597955980559815598255983559845598555986559875598855989559905599155992559935599455995559965599755998559995600056001560025600356004560055600656007560085600956010560115601256013560145601556016560175601856019560205602156022560235602456025560265602756028560295603056031560325603356034560355603656037560385603956040560415604256043560445604556046560475604856049560505605156052560535605456055560565605756058560595606056061560625606356064560655606656067560685606956070560715607256073560745607556076560775607856079560805608156082560835608456085560865608756088560895609056091560925609356094560955609656097560985609956100561015610256103561045610556106561075610856109561105611156112561135611456115561165611756118561195612056121561225612356124561255612656127561285612956130561315613256133561345613556136561375613856139561405614156142561435614456145561465614756148561495615056151561525615356154561555615656157561585615956160561615616256163561645616556166561675616856169561705617156172561735617456175561765617756178561795618056181561825618356184561855618656187561885618956190561915619256193561945619556196561975619856199562005620156202562035620456205562065620756208562095621056211562125621356214562155621656217562185621956220562215622256223562245622556226562275622856229562305623156232562335623456235562365623756238562395624056241562425624356244562455624656247562485624956250562515625256253562545625556256562575625856259562605626156262562635626456265562665626756268562695627056271562725627356274562755627656277562785627956280562815628256283562845628556286562875628856289562905629156292562935629456295562965629756298562995630056301563025630356304563055630656307563085630956310563115631256313563145631556316563175631856319563205632156322563235632456325563265632756328563295633056331563325633356334563355633656337563385633956340563415634256343563445634556346563475634856349563505635156352563535635456355563565635756358563595636056361563625636356364563655636656367563685636956370563715637256373563745637556376563775637856379563805638156382563835638456385563865638756388563895639056391563925639356394563955639656397563985639956400564015640256403564045640556406564075640856409564105641156412564135641456415564165641756418564195642056421564225642356424564255642656427564285642956430564315643256433564345643556436564375643856439564405644156442564435644456445564465644756448564495645056451564525645356454564555645656457564585645956460564615646256463564645646556466564675646856469564705647156472564735647456475564765647756478564795648056481564825648356484564855648656487564885648956490564915649256493564945649556496564975649856499565005650156502565035650456505565065650756508565095651056511565125651356514565155651656517565185651956520565215652256523565245652556526565275652856529565305653156532565335653456535565365653756538565395654056541565425654356544565455654656547565485654956550565515655256553565545655556556565575655856559565605656156562565635656456565565665656756568565695657056571565725657356574565755657656577565785657956580565815658256583565845658556586565875658856589565905659156592565935659456595565965659756598565995660056601566025660356604566055660656607566085660956610566115661256613566145661556616566175661856619566205662156622566235662456625566265662756628566295663056631566325663356634566355663656637566385663956640566415664256643566445664556646566475664856649566505665156652566535665456655566565665756658566595666056661566625666356664566655666656667566685666956670566715667256673566745667556676566775667856679566805668156682566835668456685566865668756688566895669056691566925669356694566955669656697566985669956700567015670256703567045670556706567075670856709567105671156712567135671456715567165671756718567195672056721567225672356724567255672656727567285672956730567315673256733567345673556736567375673856739567405674156742567435674456745567465674756748567495675056751567525675356754567555675656757567585675956760567615676256763567645676556766567675676856769567705677156772567735677456775567765677756778567795678056781567825678356784567855678656787567885678956790567915679256793567945679556796567975679856799568005680156802568035680456805568065680756808568095681056811568125681356814568155681656817568185681956820568215682256823568245682556826568275682856829568305683156832568335683456835568365683756838568395684056841568425684356844568455684656847568485684956850568515685256853568545685556856568575685856859568605686156862568635686456865568665686756868568695687056871568725687356874568755687656877568785687956880568815688256883568845688556886568875688856889568905689156892568935689456895568965689756898568995690056901569025690356904569055690656907569085690956910569115691256913569145691556916569175691856919569205692156922569235692456925569265692756928569295693056931569325693356934569355693656937569385693956940569415694256943569445694556946569475694856949569505695156952569535695456955569565695756958569595696056961569625696356964569655696656967569685696956970569715697256973569745697556976569775697856979569805698156982569835698456985569865698756988569895699056991569925699356994569955699656997569985699957000570015700257003570045700557006570075700857009570105701157012570135701457015570165701757018570195702057021570225702357024570255702657027570285702957030570315703257033570345703557036570375703857039570405704157042570435704457045570465704757048570495705057051570525705357054570555705657057570585705957060570615706257063570645706557066570675706857069570705707157072570735707457075570765707757078570795708057081570825708357084570855708657087570885708957090570915709257093570945709557096570975709857099571005710157102571035710457105571065710757108571095711057111571125711357114571155711657117571185711957120571215712257123571245712557126571275712857129571305713157132571335713457135571365713757138571395714057141571425714357144571455714657147571485714957150571515715257153571545715557156571575715857159571605716157162571635716457165571665716757168571695717057171571725717357174571755717657177571785717957180571815718257183571845718557186571875718857189571905719157192571935719457195571965719757198571995720057201572025720357204572055720657207572085720957210572115721257213572145721557216572175721857219572205722157222572235722457225572265722757228572295723057231572325723357234572355723657237572385723957240572415724257243572445724557246572475724857249572505725157252572535725457255572565725757258572595726057261572625726357264572655726657267572685726957270572715727257273572745727557276572775727857279572805728157282572835728457285572865728757288572895729057291572925729357294572955729657297572985729957300573015730257303573045730557306573075730857309573105731157312573135731457315573165731757318573195732057321573225732357324573255732657327573285732957330573315733257333573345733557336573375733857339573405734157342573435734457345573465734757348573495735057351573525735357354573555735657357573585735957360573615736257363573645736557366573675736857369573705737157372573735737457375573765737757378573795738057381573825738357384573855738657387573885738957390573915739257393573945739557396573975739857399574005740157402574035740457405574065740757408574095741057411574125741357414574155741657417574185741957420574215742257423574245742557426574275742857429574305743157432574335743457435574365743757438574395744057441574425744357444574455744657447574485744957450574515745257453574545745557456574575745857459574605746157462574635746457465574665746757468574695747057471574725747357474574755747657477574785747957480574815748257483574845748557486574875748857489574905749157492574935749457495574965749757498574995750057501575025750357504575055750657507575085750957510575115751257513575145751557516575175751857519575205752157522575235752457525575265752757528575295753057531575325753357534575355753657537575385753957540575415754257543575445754557546575475754857549575505755157552575535755457555575565755757558575595756057561575625756357564575655756657567575685756957570575715757257573575745757557576575775757857579575805758157582575835758457585575865758757588575895759057591575925759357594575955759657597575985759957600576015760257603576045760557606576075760857609576105761157612576135761457615576165761757618576195762057621576225762357624576255762657627576285762957630576315763257633576345763557636576375763857639576405764157642576435764457645576465764757648576495765057651576525765357654576555765657657576585765957660576615766257663576645766557666576675766857669576705767157672576735767457675576765767757678576795768057681576825768357684576855768657687576885768957690576915769257693576945769557696576975769857699577005770157702577035770457705577065770757708577095771057711577125771357714577155771657717577185771957720577215772257723577245772557726577275772857729577305773157732577335773457735577365773757738577395774057741577425774357744577455774657747577485774957750577515775257753577545775557756577575775857759577605776157762577635776457765577665776757768577695777057771577725777357774577755777657777577785777957780577815778257783577845778557786577875778857789577905779157792577935779457795577965779757798577995780057801578025780357804578055780657807578085780957810578115781257813578145781557816578175781857819578205782157822578235782457825578265782757828578295783057831578325783357834578355783657837578385783957840578415784257843578445784557846578475784857849578505785157852578535785457855578565785757858578595786057861578625786357864578655786657867578685786957870578715787257873578745787557876578775787857879578805788157882578835788457885578865788757888578895789057891578925789357894578955789657897578985789957900579015790257903579045790557906579075790857909579105791157912579135791457915579165791757918579195792057921579225792357924579255792657927579285792957930579315793257933579345793557936579375793857939579405794157942579435794457945579465794757948579495795057951579525795357954579555795657957579585795957960579615796257963579645796557966579675796857969579705797157972579735797457975579765797757978579795798057981579825798357984579855798657987579885798957990579915799257993579945799557996579975799857999580005800158002580035800458005580065800758008580095801058011580125801358014580155801658017580185801958020580215802258023580245802558026580275802858029580305803158032580335803458035580365803758038580395804058041580425804358044580455804658047580485804958050580515805258053580545805558056580575805858059580605806158062580635806458065580665806758068580695807058071580725807358074580755807658077580785807958080580815808258083580845808558086580875808858089580905809158092580935809458095580965809758098580995810058101581025810358104581055810658107581085810958110581115811258113581145811558116581175811858119581205812158122581235812458125581265812758128581295813058131581325813358134581355813658137581385813958140581415814258143581445814558146581475814858149581505815158152581535815458155581565815758158581595816058161581625816358164581655816658167581685816958170581715817258173581745817558176581775817858179581805818158182581835818458185581865818758188581895819058191581925819358194581955819658197581985819958200582015820258203582045820558206582075820858209582105821158212582135821458215582165821758218582195822058221582225822358224582255822658227582285822958230582315823258233582345823558236582375823858239582405824158242582435824458245582465824758248582495825058251582525825358254582555825658257582585825958260582615826258263582645826558266582675826858269582705827158272582735827458275582765827758278582795828058281582825828358284582855828658287582885828958290582915829258293582945829558296582975829858299583005830158302583035830458305583065830758308583095831058311583125831358314583155831658317583185831958320583215832258323583245832558326583275832858329583305833158332583335833458335583365833758338583395834058341583425834358344583455834658347583485834958350583515835258353583545835558356583575835858359583605836158362583635836458365583665836758368583695837058371583725837358374583755837658377583785837958380583815838258383583845838558386583875838858389583905839158392583935839458395583965839758398583995840058401584025840358404584055840658407584085840958410584115841258413584145841558416584175841858419584205842158422584235842458425584265842758428584295843058431584325843358434584355843658437584385843958440584415844258443584445844558446584475844858449584505845158452584535845458455584565845758458584595846058461584625846358464584655846658467584685846958470584715847258473584745847558476584775847858479584805848158482584835848458485584865848758488584895849058491584925849358494584955849658497584985849958500585015850258503585045850558506585075850858509585105851158512585135851458515585165851758518585195852058521585225852358524585255852658527585285852958530585315853258533585345853558536585375853858539585405854158542585435854458545585465854758548585495855058551585525855358554585555855658557585585855958560585615856258563585645856558566585675856858569585705857158572585735857458575585765857758578585795858058581585825858358584585855858658587585885858958590585915859258593585945859558596585975859858599586005860158602586035860458605586065860758608586095861058611586125861358614586155861658617586185861958620586215862258623586245862558626586275862858629586305863158632586335863458635586365863758638586395864058641586425864358644586455864658647586485864958650586515865258653586545865558656586575865858659586605866158662586635866458665586665866758668586695867058671586725867358674586755867658677586785867958680586815868258683586845868558686586875868858689586905869158692586935869458695586965869758698586995870058701587025870358704587055870658707587085870958710587115871258713587145871558716587175871858719587205872158722587235872458725587265872758728587295873058731587325873358734587355873658737587385873958740587415874258743587445874558746587475874858749587505875158752587535875458755587565875758758587595876058761587625876358764587655876658767587685876958770587715877258773587745877558776587775877858779587805878158782587835878458785587865878758788587895879058791587925879358794587955879658797587985879958800588015880258803588045880558806588075880858809588105881158812588135881458815588165881758818588195882058821588225882358824588255882658827588285882958830588315883258833588345883558836588375883858839588405884158842588435884458845588465884758848588495885058851588525885358854588555885658857588585885958860588615886258863588645886558866588675886858869588705887158872588735887458875588765887758878588795888058881588825888358884588855888658887588885888958890588915889258893588945889558896588975889858899589005890158902589035890458905589065890758908589095891058911589125891358914589155891658917589185891958920589215892258923589245892558926589275892858929589305893158932589335893458935589365893758938589395894058941589425894358944589455894658947589485894958950589515895258953589545895558956589575895858959589605896158962589635896458965589665896758968589695897058971589725897358974589755897658977589785897958980589815898258983589845898558986589875898858989589905899158992589935899458995589965899758998589995900059001590025900359004590055900659007590085900959010590115901259013590145901559016590175901859019590205902159022590235902459025590265902759028590295903059031590325903359034590355903659037590385903959040590415904259043590445904559046590475904859049590505905159052590535905459055590565905759058590595906059061590625906359064590655906659067590685906959070590715907259073590745907559076590775907859079590805908159082590835908459085590865908759088590895909059091590925909359094590955909659097590985909959100591015910259103591045910559106591075910859109591105911159112591135911459115591165911759118591195912059121591225912359124591255912659127591285912959130591315913259133591345913559136591375913859139591405914159142591435914459145591465914759148591495915059151591525915359154591555915659157591585915959160591615916259163591645916559166591675916859169591705917159172591735917459175591765917759178591795918059181591825918359184591855918659187591885918959190591915919259193591945919559196591975919859199592005920159202592035920459205592065920759208592095921059211592125921359214592155921659217592185921959220592215922259223592245922559226592275922859229592305923159232592335923459235592365923759238592395924059241592425924359244592455924659247592485924959250592515925259253592545925559256592575925859259592605926159262592635926459265592665926759268592695927059271592725927359274592755927659277592785927959280592815928259283592845928559286592875928859289592905929159292592935929459295592965929759298592995930059301593025930359304593055930659307593085930959310593115931259313593145931559316593175931859319593205932159322593235932459325593265932759328593295933059331593325933359334593355933659337593385933959340593415934259343593445934559346593475934859349593505935159352593535935459355593565935759358593595936059361593625936359364593655936659367593685936959370593715937259373593745937559376593775937859379593805938159382593835938459385593865938759388593895939059391593925939359394593955939659397593985939959400594015940259403594045940559406594075940859409594105941159412594135941459415594165941759418594195942059421594225942359424594255942659427594285942959430594315943259433594345943559436594375943859439594405944159442594435944459445594465944759448594495945059451594525945359454594555945659457594585945959460594615946259463594645946559466594675946859469594705947159472594735947459475594765947759478594795948059481594825948359484594855948659487594885948959490594915949259493594945949559496594975949859499595005950159502595035950459505595065950759508595095951059511595125951359514595155951659517595185951959520595215952259523595245952559526595275952859529595305953159532595335953459535595365953759538595395954059541595425954359544595455954659547595485954959550595515955259553595545955559556595575955859559595605956159562595635956459565595665956759568595695957059571595725957359574595755957659577595785957959580595815958259583595845958559586595875958859589595905959159592595935959459595595965959759598595995960059601596025960359604596055960659607596085960959610596115961259613596145961559616596175961859619596205962159622596235962459625596265962759628596295963059631596325963359634596355963659637596385963959640596415964259643596445964559646596475964859649596505965159652596535965459655596565965759658596595966059661596625966359664596655966659667596685966959670596715967259673596745967559676596775967859679596805968159682596835968459685596865968759688596895969059691596925969359694596955969659697596985969959700597015970259703597045970559706597075970859709597105971159712597135971459715597165971759718597195972059721597225972359724597255972659727597285972959730597315973259733597345973559736597375973859739597405974159742597435974459745597465974759748597495975059751597525975359754597555975659757597585975959760597615976259763597645976559766597675976859769597705977159772597735977459775597765977759778597795978059781597825978359784597855978659787597885978959790597915979259793597945979559796597975979859799598005980159802598035980459805598065980759808598095981059811598125981359814598155981659817598185981959820598215982259823598245982559826598275982859829598305983159832598335983459835598365983759838598395984059841598425984359844598455984659847598485984959850598515985259853598545985559856598575985859859598605986159862598635986459865598665986759868598695987059871598725987359874598755987659877598785987959880598815988259883598845988559886598875988859889598905989159892598935989459895598965989759898598995990059901599025990359904599055990659907599085990959910599115991259913599145991559916599175991859919599205992159922599235992459925599265992759928599295993059931599325993359934599355993659937599385993959940599415994259943599445994559946599475994859949599505995159952599535995459955599565995759958599595996059961599625996359964599655996659967599685996959970599715997259973599745997559976599775997859979599805998159982599835998459985599865998759988599895999059991599925999359994599955999659997599985999960000600016000260003600046000560006600076000860009600106001160012600136001460015600166001760018600196002060021600226002360024600256002660027600286002960030600316003260033600346003560036600376003860039600406004160042600436004460045600466004760048600496005060051600526005360054600556005660057600586005960060600616006260063600646006560066600676006860069600706007160072600736007460075600766007760078600796008060081600826008360084600856008660087600886008960090600916009260093600946009560096600976009860099601006010160102601036010460105601066010760108601096011060111601126011360114601156011660117601186011960120601216012260123601246012560126601276012860129601306013160132601336013460135601366013760138601396014060141601426014360144601456014660147601486014960150601516015260153601546015560156601576015860159601606016160162601636016460165601666016760168601696017060171601726017360174601756017660177601786017960180601816018260183601846018560186601876018860189601906019160192601936019460195601966019760198601996020060201602026020360204602056020660207602086020960210602116021260213602146021560216602176021860219602206022160222602236022460225602266022760228602296023060231602326023360234602356023660237602386023960240602416024260243602446024560246602476024860249602506025160252602536025460255602566025760258602596026060261602626026360264602656026660267602686026960270602716027260273602746027560276602776027860279602806028160282602836028460285602866028760288602896029060291602926029360294602956029660297602986029960300603016030260303603046030560306603076030860309603106031160312603136031460315603166031760318603196032060321603226032360324603256032660327603286032960330603316033260333603346033560336603376033860339603406034160342603436034460345603466034760348603496035060351603526035360354603556035660357603586035960360603616036260363603646036560366603676036860369603706037160372603736037460375603766037760378603796038060381603826038360384603856038660387603886038960390603916039260393603946039560396603976039860399604006040160402604036040460405604066040760408604096041060411604126041360414604156041660417604186041960420604216042260423604246042560426604276042860429604306043160432604336043460435604366043760438604396044060441604426044360444604456044660447604486044960450604516045260453604546045560456604576045860459604606046160462604636046460465604666046760468604696047060471604726047360474604756047660477604786047960480604816048260483604846048560486604876048860489604906049160492604936049460495604966049760498604996050060501605026050360504605056050660507605086050960510605116051260513605146051560516605176051860519605206052160522605236052460525605266052760528605296053060531605326053360534605356053660537605386053960540605416054260543605446054560546605476054860549605506055160552605536055460555605566055760558605596056060561605626056360564605656056660567605686056960570605716057260573605746057560576605776057860579605806058160582605836058460585605866058760588605896059060591605926059360594605956059660597605986059960600606016060260603606046060560606606076060860609606106061160612606136061460615606166061760618606196062060621606226062360624606256062660627606286062960630606316063260633606346063560636606376063860639606406064160642606436064460645606466064760648606496065060651606526065360654606556065660657606586065960660606616066260663606646066560666606676066860669606706067160672606736067460675606766067760678606796068060681606826068360684606856068660687606886068960690606916069260693606946069560696606976069860699607006070160702607036070460705607066070760708607096071060711607126071360714607156071660717607186071960720607216072260723607246072560726607276072860729607306073160732607336073460735607366073760738607396074060741607426074360744607456074660747607486074960750607516075260753607546075560756607576075860759607606076160762607636076460765607666076760768607696077060771607726077360774607756077660777607786077960780607816078260783607846078560786607876078860789607906079160792607936079460795607966079760798607996080060801608026080360804608056080660807608086080960810608116081260813608146081560816608176081860819608206082160822608236082460825608266082760828608296083060831608326083360834608356083660837608386083960840608416084260843608446084560846608476084860849608506085160852608536085460855608566085760858608596086060861608626086360864608656086660867608686086960870608716087260873608746087560876608776087860879608806088160882608836088460885608866088760888608896089060891608926089360894608956089660897608986089960900609016090260903609046090560906609076090860909609106091160912609136091460915609166091760918609196092060921609226092360924609256092660927609286092960930609316093260933609346093560936609376093860939609406094160942609436094460945609466094760948609496095060951609526095360954609556095660957609586095960960609616096260963609646096560966609676096860969609706097160972609736097460975609766097760978609796098060981609826098360984609856098660987609886098960990609916099260993609946099560996609976099860999610006100161002610036100461005610066100761008610096101061011610126101361014610156101661017610186101961020610216102261023610246102561026610276102861029610306103161032610336103461035610366103761038610396104061041610426104361044610456104661047610486104961050610516105261053610546105561056610576105861059610606106161062610636106461065610666106761068610696107061071610726107361074610756107661077610786107961080610816108261083610846108561086610876108861089610906109161092610936109461095610966109761098610996110061101611026110361104611056110661107611086110961110611116111261113611146111561116611176111861119611206112161122611236112461125611266112761128611296113061131611326113361134611356113661137611386113961140611416114261143611446114561146611476114861149611506115161152611536115461155611566115761158611596116061161611626116361164611656116661167611686116961170611716117261173611746117561176611776117861179611806118161182611836118461185611866118761188611896119061191611926119361194611956119661197611986119961200612016120261203612046120561206612076120861209612106121161212612136121461215612166121761218612196122061221612226122361224612256122661227612286122961230612316123261233612346123561236612376123861239612406124161242612436124461245612466124761248612496125061251612526125361254612556125661257612586125961260612616126261263612646126561266612676126861269612706127161272612736127461275612766127761278612796128061281612826128361284612856128661287612886128961290612916129261293612946129561296612976129861299613006130161302613036130461305613066130761308613096131061311613126131361314613156131661317613186131961320613216132261323613246132561326613276132861329613306133161332613336133461335613366133761338613396134061341613426134361344613456134661347613486134961350613516135261353613546135561356613576135861359613606136161362613636136461365613666136761368613696137061371613726137361374613756137661377613786137961380613816138261383613846138561386613876138861389613906139161392613936139461395613966139761398613996140061401614026140361404614056140661407614086140961410614116141261413614146141561416614176141861419614206142161422614236142461425614266142761428614296143061431614326143361434614356143661437614386143961440614416144261443614446144561446614476144861449614506145161452614536145461455614566145761458614596146061461614626146361464614656146661467614686146961470614716147261473614746147561476614776147861479614806148161482614836148461485614866148761488614896149061491614926149361494614956149661497614986149961500615016150261503615046150561506615076150861509615106151161512615136151461515615166151761518615196152061521615226152361524615256152661527615286152961530615316153261533615346153561536615376153861539615406154161542615436154461545615466154761548615496155061551615526155361554615556155661557615586155961560615616156261563615646156561566615676156861569615706157161572615736157461575615766157761578615796158061581615826158361584615856158661587615886158961590615916159261593615946159561596615976159861599616006160161602616036160461605616066160761608616096161061611616126161361614616156161661617616186161961620616216162261623616246162561626616276162861629616306163161632616336163461635616366163761638616396164061641616426164361644616456164661647616486164961650616516165261653616546165561656616576165861659616606166161662616636166461665616666166761668616696167061671616726167361674616756167661677616786167961680616816168261683616846168561686616876168861689616906169161692616936169461695616966169761698616996170061701617026170361704617056170661707617086170961710617116171261713617146171561716617176171861719617206172161722617236172461725617266172761728617296173061731617326173361734617356173661737617386173961740617416174261743617446174561746617476174861749617506175161752617536175461755617566175761758617596176061761617626176361764617656176661767617686176961770617716177261773617746177561776617776177861779617806178161782617836178461785617866178761788617896179061791617926179361794617956179661797617986179961800618016180261803618046180561806618076180861809618106181161812618136181461815618166181761818618196182061821618226182361824618256182661827618286182961830618316183261833618346183561836618376183861839618406184161842618436184461845618466184761848618496185061851618526185361854618556185661857618586185961860618616186261863618646186561866618676186861869618706187161872618736187461875618766187761878618796188061881618826188361884618856188661887618886188961890618916189261893618946189561896618976189861899619006190161902619036190461905619066190761908619096191061911619126191361914619156191661917619186191961920619216192261923619246192561926619276192861929619306193161932619336193461935619366193761938619396194061941619426194361944619456194661947619486194961950619516195261953619546195561956619576195861959619606196161962619636196461965619666196761968619696197061971619726197361974619756197661977619786197961980619816198261983619846198561986619876198861989619906199161992619936199461995619966199761998619996200062001620026200362004620056200662007620086200962010620116201262013620146201562016620176201862019620206202162022620236202462025620266202762028620296203062031620326203362034620356203662037620386203962040620416204262043620446204562046620476204862049620506205162052620536205462055620566205762058620596206062061620626206362064620656206662067620686206962070620716207262073620746207562076620776207862079620806208162082620836208462085620866208762088620896209062091620926209362094620956209662097620986209962100621016210262103621046210562106621076210862109621106211162112621136211462115621166211762118621196212062121621226212362124621256212662127621286212962130621316213262133621346213562136621376213862139621406214162142621436214462145621466214762148621496215062151621526215362154621556215662157621586215962160621616216262163621646216562166621676216862169621706217162172621736217462175621766217762178621796218062181621826218362184621856218662187621886218962190621916219262193621946219562196621976219862199622006220162202622036220462205622066220762208622096221062211622126221362214622156221662217622186221962220622216222262223622246222562226622276222862229622306223162232622336223462235622366223762238622396224062241622426224362244622456224662247622486224962250622516225262253622546225562256622576225862259622606226162262622636226462265622666226762268622696227062271622726227362274622756227662277622786227962280622816228262283622846228562286622876228862289622906229162292622936229462295622966229762298622996230062301623026230362304623056230662307623086230962310623116231262313623146231562316623176231862319623206232162322623236232462325623266232762328623296233062331623326233362334623356233662337623386233962340623416234262343623446234562346623476234862349623506235162352623536235462355623566235762358623596236062361623626236362364623656236662367623686236962370623716237262373623746237562376623776237862379623806238162382623836238462385623866238762388623896239062391623926239362394623956239662397623986239962400624016240262403624046240562406624076240862409624106241162412624136241462415624166241762418624196242062421624226242362424624256242662427624286242962430624316243262433624346243562436624376243862439624406244162442624436244462445624466244762448624496245062451624526245362454624556245662457624586245962460624616246262463624646246562466624676246862469624706247162472624736247462475624766247762478624796248062481624826248362484624856248662487624886248962490624916249262493624946249562496624976249862499625006250162502625036250462505625066250762508625096251062511625126251362514625156251662517625186251962520625216252262523625246252562526625276252862529625306253162532625336253462535625366253762538625396254062541625426254362544625456254662547625486254962550625516255262553625546255562556625576255862559625606256162562625636256462565625666256762568625696257062571625726257362574625756257662577625786257962580625816258262583625846258562586625876258862589625906259162592625936259462595625966259762598625996260062601626026260362604626056260662607626086260962610626116261262613626146261562616626176261862619626206262162622626236262462625626266262762628626296263062631626326263362634626356263662637626386263962640626416264262643626446264562646626476264862649626506265162652626536265462655626566265762658626596266062661626626266362664626656266662667626686266962670626716267262673626746267562676626776267862679626806268162682626836268462685626866268762688626896269062691626926269362694626956269662697626986269962700627016270262703627046270562706627076270862709627106271162712627136271462715627166271762718627196272062721627226272362724627256272662727627286272962730627316273262733627346273562736627376273862739627406274162742627436274462745627466274762748627496275062751627526275362754627556275662757627586275962760627616276262763627646276562766627676276862769627706277162772627736277462775627766277762778627796278062781627826278362784627856278662787627886278962790627916279262793627946279562796627976279862799628006280162802628036280462805628066280762808628096281062811628126281362814628156281662817628186281962820628216282262823628246282562826628276282862829628306283162832628336283462835628366283762838628396284062841628426284362844628456284662847628486284962850628516285262853628546285562856628576285862859628606286162862628636286462865628666286762868628696287062871628726287362874628756287662877628786287962880628816288262883628846288562886628876288862889628906289162892628936289462895628966289762898628996290062901629026290362904629056290662907629086290962910629116291262913629146291562916629176291862919629206292162922629236292462925629266292762928629296293062931629326293362934629356293662937629386293962940629416294262943629446294562946629476294862949629506295162952629536295462955629566295762958629596296062961629626296362964629656296662967629686296962970629716297262973629746297562976629776297862979629806298162982629836298462985629866298762988629896299062991629926299362994629956299662997629986299963000630016300263003630046300563006630076300863009630106301163012630136301463015630166301763018630196302063021630226302363024630256302663027630286302963030630316303263033630346303563036630376303863039630406304163042630436304463045630466304763048630496305063051630526305363054630556305663057630586305963060630616306263063630646306563066630676306863069630706307163072630736307463075630766307763078630796308063081630826308363084630856308663087630886308963090630916309263093630946309563096630976309863099631006310163102631036310463105631066310763108631096311063111631126311363114631156311663117631186311963120631216312263123631246312563126631276312863129631306313163132631336313463135631366313763138631396314063141631426314363144631456314663147631486314963150631516315263153631546315563156631576315863159631606316163162631636316463165631666316763168631696317063171631726317363174631756317663177631786317963180631816318263183631846318563186631876318863189631906319163192631936319463195631966319763198631996320063201632026320363204632056320663207632086320963210632116321263213632146321563216632176321863219632206322163222632236322463225632266322763228632296323063231632326323363234632356323663237632386323963240632416324263243632446324563246632476324863249632506325163252632536325463255632566325763258632596326063261632626326363264632656326663267632686326963270632716327263273632746327563276632776327863279632806328163282632836328463285632866328763288632896329063291632926329363294632956329663297632986329963300633016330263303633046330563306633076330863309633106331163312633136331463315633166331763318633196332063321633226332363324633256332663327633286332963330633316333263333633346333563336633376333863339633406334163342633436334463345633466334763348633496335063351633526335363354633556335663357633586335963360633616336263363633646336563366633676336863369633706337163372633736337463375633766337763378633796338063381633826338363384633856338663387633886338963390633916339263393633946339563396633976339863399634006340163402634036340463405634066340763408634096341063411634126341363414634156341663417634186341963420634216342263423634246342563426634276342863429634306343163432634336343463435634366343763438634396344063441634426344363444634456344663447634486344963450634516345263453634546345563456634576345863459634606346163462634636346463465634666346763468634696347063471634726347363474634756347663477634786347963480634816348263483634846348563486634876348863489634906349163492634936349463495634966349763498634996350063501635026350363504635056350663507635086350963510635116351263513635146351563516635176351863519635206352163522635236352463525635266352763528635296353063531635326353363534635356353663537635386353963540635416354263543635446354563546635476354863549635506355163552635536355463555635566355763558635596356063561635626356363564635656356663567635686356963570635716357263573635746357563576635776357863579635806358163582635836358463585635866358763588635896359063591635926359363594635956359663597635986359963600636016360263603636046360563606636076360863609636106361163612636136361463615636166361763618636196362063621636226362363624636256362663627636286362963630636316363263633636346363563636636376363863639636406364163642636436364463645636466364763648636496365063651636526365363654636556365663657636586365963660636616366263663636646366563666636676366863669636706367163672636736367463675636766367763678636796368063681636826368363684636856368663687636886368963690636916369263693636946369563696636976369863699637006370163702637036370463705637066370763708637096371063711637126371363714637156371663717637186371963720637216372263723637246372563726637276372863729637306373163732637336373463735637366373763738637396374063741637426374363744637456374663747637486374963750637516375263753637546375563756637576375863759637606376163762637636376463765637666376763768637696377063771637726377363774637756377663777637786377963780637816378263783637846378563786637876378863789637906379163792637936379463795637966379763798637996380063801638026380363804638056380663807638086380963810638116381263813638146381563816638176381863819638206382163822638236382463825638266382763828638296383063831638326383363834638356383663837638386383963840638416384263843638446384563846638476384863849638506385163852638536385463855638566385763858638596386063861638626386363864638656386663867638686386963870638716387263873638746387563876638776387863879638806388163882638836388463885638866388763888638896389063891638926389363894638956389663897638986389963900639016390263903639046390563906639076390863909639106391163912639136391463915639166391763918639196392063921639226392363924639256392663927639286392963930639316393263933639346393563936639376393863939639406394163942639436394463945639466394763948639496395063951639526395363954639556395663957639586395963960639616396263963639646396563966639676396863969639706397163972639736397463975639766397763978639796398063981639826398363984639856398663987639886398963990639916399263993639946399563996639976399863999640006400164002640036400464005640066400764008640096401064011640126401364014640156401664017640186401964020640216402264023640246402564026640276402864029640306403164032640336403464035640366403764038640396404064041640426404364044640456404664047640486404964050640516405264053640546405564056640576405864059640606406164062640636406464065640666406764068640696407064071640726407364074640756407664077640786407964080640816408264083640846408564086640876408864089640906409164092640936409464095640966409764098640996410064101641026410364104641056410664107641086410964110641116411264113641146411564116641176411864119641206412164122641236412464125641266412764128641296413064131641326413364134641356413664137641386413964140641416414264143641446414564146641476414864149641506415164152641536415464155641566415764158641596416064161641626416364164641656416664167641686416964170641716417264173641746417564176641776417864179641806418164182641836418464185641866418764188641896419064191641926419364194641956419664197641986419964200642016420264203642046420564206642076420864209642106421164212642136421464215642166421764218642196422064221642226422364224642256422664227642286422964230642316423264233642346423564236642376423864239642406424164242642436424464245642466424764248642496425064251642526425364254642556425664257642586425964260642616426264263642646426564266642676426864269642706427164272642736427464275642766427764278642796428064281642826428364284642856428664287642886428964290642916429264293642946429564296642976429864299643006430164302643036430464305643066430764308643096431064311643126431364314643156431664317643186431964320643216432264323643246432564326643276432864329643306433164332643336433464335643366433764338643396434064341643426434364344643456434664347643486434964350643516435264353643546435564356643576435864359643606436164362643636436464365643666436764368643696437064371643726437364374643756437664377643786437964380643816438264383643846438564386643876438864389643906439164392643936439464395643966439764398643996440064401644026440364404644056440664407644086440964410644116441264413644146441564416644176441864419644206442164422644236442464425644266442764428644296443064431644326443364434644356443664437644386443964440644416444264443644446444564446644476444864449644506445164452644536445464455644566445764458644596446064461644626446364464644656446664467644686446964470644716447264473644746447564476644776447864479644806448164482644836448464485644866448764488644896449064491644926449364494644956449664497644986449964500645016450264503645046450564506645076450864509645106451164512645136451464515645166451764518645196452064521645226452364524645256452664527645286452964530645316453264533645346453564536645376453864539645406454164542645436454464545645466454764548645496455064551645526455364554645556455664557645586455964560645616456264563645646456564566645676456864569645706457164572645736457464575645766457764578645796458064581645826458364584645856458664587645886458964590645916459264593645946459564596645976459864599646006460164602646036460464605646066460764608646096461064611646126461364614646156461664617646186461964620646216462264623646246462564626646276462864629646306463164632646336463464635646366463764638646396464064641646426464364644646456464664647646486464964650646516465264653646546465564656646576465864659646606466164662646636466464665646666466764668646696467064671646726467364674646756467664677646786467964680646816468264683646846468564686646876468864689646906469164692646936469464695646966469764698646996470064701647026470364704647056470664707647086470964710647116471264713647146471564716647176471864719647206472164722647236472464725647266472764728647296473064731647326473364734647356473664737647386473964740647416474264743647446474564746647476474864749647506475164752647536475464755647566475764758647596476064761647626476364764647656476664767647686476964770647716477264773647746477564776647776477864779647806478164782647836478464785647866478764788647896479064791647926479364794647956479664797647986479964800648016480264803648046480564806648076480864809648106481164812648136481464815648166481764818648196482064821648226482364824648256482664827648286482964830648316483264833648346483564836648376483864839648406484164842648436484464845648466484764848648496485064851648526485364854648556485664857648586485964860648616486264863648646486564866648676486864869648706487164872648736487464875648766487764878648796488064881648826488364884648856488664887648886488964890648916489264893648946489564896648976489864899649006490164902649036490464905649066490764908649096491064911649126491364914649156491664917649186491964920649216492264923649246492564926649276492864929649306493164932649336493464935649366493764938649396494064941649426494364944649456494664947649486494964950649516495264953649546495564956649576495864959649606496164962649636496464965649666496764968649696497064971649726497364974649756497664977649786497964980649816498264983649846498564986649876498864989649906499164992649936499464995649966499764998649996500065001650026500365004650056500665007650086500965010650116501265013650146501565016650176501865019650206502165022650236502465025650266502765028650296503065031650326503365034650356503665037650386503965040650416504265043650446504565046650476504865049650506505165052650536505465055650566505765058650596506065061650626506365064650656506665067650686506965070650716507265073650746507565076650776507865079650806508165082650836508465085650866508765088650896509065091650926509365094650956509665097650986509965100651016510265103651046510565106651076510865109651106511165112651136511465115651166511765118651196512065121651226512365124651256512665127651286512965130651316513265133651346513565136651376513865139651406514165142651436514465145651466514765148651496515065151651526515365154651556515665157651586515965160651616516265163651646516565166651676516865169651706517165172651736517465175651766517765178651796518065181651826518365184651856518665187651886518965190651916519265193651946519565196651976519865199652006520165202652036520465205652066520765208652096521065211652126521365214652156521665217652186521965220652216522265223652246522565226652276522865229652306523165232652336523465235652366523765238652396524065241652426524365244652456524665247652486524965250652516525265253652546525565256652576525865259652606526165262652636526465265652666526765268652696527065271652726527365274652756527665277652786527965280652816528265283652846528565286652876528865289652906529165292652936529465295652966529765298652996530065301653026530365304653056530665307653086530965310653116531265313653146531565316653176531865319653206532165322653236532465325653266532765328653296533065331653326533365334653356533665337653386533965340653416534265343653446534565346653476534865349653506535165352653536535465355653566535765358653596536065361653626536365364653656536665367653686536965370653716537265373653746537565376653776537865379653806538165382653836538465385653866538765388653896539065391653926539365394653956539665397653986539965400654016540265403654046540565406654076540865409654106541165412654136541465415654166541765418654196542065421654226542365424654256542665427654286542965430654316543265433654346543565436654376543865439654406544165442654436544465445654466544765448654496545065451654526545365454654556545665457654586545965460654616546265463654646546565466654676546865469654706547165472654736547465475654766547765478654796548065481654826548365484654856548665487654886548965490654916549265493654946549565496654976549865499655006550165502655036550465505655066550765508655096551065511655126551365514655156551665517655186551965520655216552265523655246552565526655276552865529655306553165532655336553465535655366553765538655396554065541655426554365544655456554665547655486554965550655516555265553655546555565556655576555865559655606556165562655636556465565655666556765568655696557065571655726557365574655756557665577655786557965580655816558265583655846558565586655876558865589655906559165592655936559465595655966559765598655996560065601656026560365604656056560665607656086560965610656116561265613656146561565616656176561865619656206562165622656236562465625656266562765628656296563065631656326563365634656356563665637656386563965640656416564265643656446564565646656476564865649656506565165652656536565465655656566565765658656596566065661656626566365664656656566665667656686566965670656716567265673656746567565676656776567865679656806568165682656836568465685656866568765688656896569065691656926569365694656956569665697656986569965700657016570265703657046570565706657076570865709657106571165712657136571465715657166571765718657196572065721657226572365724657256572665727657286572965730657316573265733657346573565736657376573865739657406574165742657436574465745657466574765748657496575065751657526575365754657556575665757657586575965760657616576265763657646576565766657676576865769657706577165772657736577465775657766577765778657796578065781657826578365784657856578665787657886578965790657916579265793657946579565796657976579865799658006580165802658036580465805658066580765808658096581065811658126581365814658156581665817658186581965820658216582265823658246582565826658276582865829658306583165832658336583465835658366583765838658396584065841658426584365844658456584665847658486584965850658516585265853658546585565856658576585865859658606586165862658636586465865658666586765868658696587065871658726587365874658756587665877658786587965880658816588265883658846588565886658876588865889658906589165892658936589465895658966589765898658996590065901659026590365904659056590665907659086590965910659116591265913659146591565916659176591865919659206592165922659236592465925659266592765928659296593065931659326593365934659356593665937659386593965940659416594265943659446594565946659476594865949659506595165952659536595465955659566595765958659596596065961659626596365964659656596665967659686596965970659716597265973659746597565976659776597865979659806598165982659836598465985659866598765988659896599065991659926599365994659956599665997659986599966000660016600266003660046600566006660076600866009660106601166012660136601466015660166601766018660196602066021660226602366024660256602666027660286602966030660316603266033660346603566036660376603866039660406604166042660436604466045660466604766048660496605066051660526605366054660556605666057660586605966060660616606266063660646606566066660676606866069660706607166072660736607466075660766607766078660796608066081660826608366084660856608666087660886608966090660916609266093660946609566096660976609866099661006610166102661036610466105661066610766108661096611066111661126611366114661156611666117661186611966120661216612266123661246612566126661276612866129661306613166132661336613466135661366613766138661396614066141661426614366144661456614666147661486614966150661516615266153661546615566156661576615866159661606616166162661636616466165661666616766168661696617066171661726617366174661756617666177661786617966180661816618266183661846618566186661876618866189661906619166192661936619466195661966619766198661996620066201662026620366204662056620666207662086620966210662116621266213662146621566216662176621866219662206622166222662236622466225662266622766228662296623066231662326623366234662356623666237662386623966240662416624266243662446624566246662476624866249662506625166252662536625466255662566625766258662596626066261662626626366264662656626666267662686626966270662716627266273662746627566276662776627866279662806628166282662836628466285662866628766288662896629066291662926629366294662956629666297662986629966300663016630266303663046630566306663076630866309663106631166312663136631466315663166631766318663196632066321663226632366324663256632666327663286632966330663316633266333663346633566336663376633866339663406634166342663436634466345663466634766348663496635066351663526635366354663556635666357663586635966360663616636266363663646636566366663676636866369663706637166372663736637466375663766637766378663796638066381663826638366384663856638666387663886638966390663916639266393663946639566396663976639866399664006640166402664036640466405664066640766408664096641066411664126641366414664156641666417664186641966420664216642266423664246642566426664276642866429664306643166432664336643466435664366643766438664396644066441664426644366444664456644666447664486644966450664516645266453664546645566456664576645866459664606646166462664636646466465664666646766468664696647066471664726647366474664756647666477664786647966480664816648266483664846648566486664876648866489664906649166492664936649466495664966649766498664996650066501665026650366504665056650666507665086650966510665116651266513665146651566516665176651866519665206652166522665236652466525665266652766528665296653066531665326653366534665356653666537665386653966540665416654266543665446654566546665476654866549665506655166552665536655466555665566655766558665596656066561665626656366564665656656666567665686656966570665716657266573665746657566576665776657866579665806658166582665836658466585665866658766588665896659066591665926659366594665956659666597665986659966600666016660266603666046660566606666076660866609666106661166612666136661466615666166661766618666196662066621666226662366624666256662666627666286662966630666316663266633666346663566636666376663866639666406664166642666436664466645666466664766648666496665066651666526665366654666556665666657666586665966660666616666266663666646666566666666676666866669666706667166672666736667466675666766667766678666796668066681666826668366684666856668666687666886668966690666916669266693666946669566696666976669866699667006670166702667036670466705667066670766708667096671066711667126671366714667156671666717667186671966720667216672266723667246672566726667276672866729667306673166732667336673466735667366673766738667396674066741667426674366744667456674666747667486674966750667516675266753667546675566756667576675866759667606676166762667636676466765667666676766768667696677066771667726677366774667756677666777667786677966780667816678266783667846678566786667876678866789667906679166792667936679466795667966679766798667996680066801668026680366804668056680666807668086680966810668116681266813668146681566816668176681866819668206682166822668236682466825668266682766828668296683066831668326683366834668356683666837668386683966840668416684266843668446684566846668476684866849668506685166852668536685466855668566685766858668596686066861668626686366864668656686666867668686686966870668716687266873668746687566876668776687866879668806688166882668836688466885668866688766888668896689066891668926689366894668956689666897668986689966900669016690266903669046690566906669076690866909669106691166912669136691466915669166691766918669196692066921669226692366924669256692666927669286692966930669316693266933669346693566936669376693866939669406694166942669436694466945669466694766948669496695066951669526695366954669556695666957669586695966960669616696266963669646696566966669676696866969669706697166972669736697466975669766697766978669796698066981669826698366984669856698666987669886698966990669916699266993669946699566996669976699866999670006700167002670036700467005670066700767008670096701067011670126701367014670156701667017670186701967020670216702267023670246702567026670276702867029670306703167032670336703467035670366703767038670396704067041670426704367044670456704667047670486704967050670516705267053670546705567056670576705867059670606706167062670636706467065670666706767068670696707067071670726707367074670756707667077670786707967080670816708267083670846708567086670876708867089670906709167092670936709467095670966709767098670996710067101671026710367104671056710667107671086710967110671116711267113671146711567116671176711867119671206712167122671236712467125671266712767128671296713067131671326713367134671356713667137671386713967140671416714267143671446714567146671476714867149671506715167152671536715467155671566715767158671596716067161671626716367164671656716667167671686716967170671716717267173671746717567176671776717867179671806718167182671836718467185671866718767188671896719067191671926719367194671956719667197671986719967200672016720267203672046720567206672076720867209672106721167212672136721467215672166721767218672196722067221672226722367224672256722667227672286722967230672316723267233672346723567236672376723867239672406724167242672436724467245672466724767248672496725067251672526725367254672556725667257672586725967260672616726267263672646726567266672676726867269672706727167272672736727467275672766727767278672796728067281672826728367284672856728667287672886728967290672916729267293672946729567296672976729867299673006730167302673036730467305673066730767308673096731067311673126731367314673156731667317673186731967320673216732267323673246732567326673276732867329673306733167332673336733467335673366733767338673396734067341673426734367344673456734667347673486734967350673516735267353673546735567356673576735867359673606736167362673636736467365673666736767368673696737067371673726737367374673756737667377673786737967380673816738267383673846738567386673876738867389673906739167392673936739467395673966739767398673996740067401674026740367404674056740667407674086740967410674116741267413674146741567416674176741867419674206742167422674236742467425674266742767428674296743067431674326743367434674356743667437674386743967440674416744267443674446744567446674476744867449674506745167452674536745467455674566745767458674596746067461674626746367464674656746667467674686746967470674716747267473674746747567476674776747867479674806748167482674836748467485674866748767488674896749067491674926749367494674956749667497674986749967500675016750267503675046750567506675076750867509675106751167512675136751467515675166751767518675196752067521675226752367524675256752667527675286752967530675316753267533675346753567536675376753867539675406754167542675436754467545675466754767548675496755067551675526755367554675556755667557675586755967560675616756267563675646756567566675676756867569675706757167572675736757467575675766757767578675796758067581675826758367584675856758667587675886758967590675916759267593675946759567596675976759867599676006760167602676036760467605676066760767608676096761067611676126761367614676156761667617676186761967620676216762267623676246762567626676276762867629676306763167632676336763467635676366763767638676396764067641676426764367644676456764667647676486764967650676516765267653676546765567656676576765867659676606766167662676636766467665676666766767668676696767067671676726767367674676756767667677676786767967680676816768267683676846768567686676876768867689676906769167692676936769467695676966769767698676996770067701677026770367704677056770667707677086770967710677116771267713677146771567716677176771867719677206772167722677236772467725677266772767728677296773067731677326773367734677356773667737677386773967740677416774267743677446774567746677476774867749677506775167752677536775467755677566775767758677596776067761677626776367764677656776667767677686776967770677716777267773677746777567776677776777867779677806778167782677836778467785677866778767788677896779067791677926779367794677956779667797677986779967800678016780267803678046780567806678076780867809678106781167812678136781467815678166781767818678196782067821678226782367824678256782667827678286782967830678316783267833678346783567836678376783867839678406784167842678436784467845678466784767848678496785067851678526785367854678556785667857678586785967860678616786267863678646786567866678676786867869678706787167872678736787467875678766787767878678796788067881678826788367884678856788667887678886788967890678916789267893678946789567896678976789867899679006790167902679036790467905679066790767908679096791067911679126791367914679156791667917679186791967920679216792267923679246792567926679276792867929679306793167932679336793467935679366793767938679396794067941679426794367944679456794667947679486794967950679516795267953679546795567956679576795867959679606796167962679636796467965679666796767968679696797067971679726797367974679756797667977679786797967980679816798267983679846798567986679876798867989679906799167992679936799467995679966799767998679996800068001680026800368004680056800668007680086800968010680116801268013680146801568016680176801868019680206802168022680236802468025680266802768028680296803068031680326803368034680356803668037680386803968040680416804268043680446804568046680476804868049680506805168052680536805468055680566805768058680596806068061680626806368064680656806668067680686806968070680716807268073680746807568076680776807868079680806808168082680836808468085680866808768088680896809068091680926809368094680956809668097680986809968100681016810268103681046810568106681076810868109681106811168112681136811468115681166811768118681196812068121681226812368124681256812668127681286812968130681316813268133681346813568136681376813868139681406814168142681436814468145681466814768148681496815068151681526815368154681556815668157681586815968160681616816268163681646816568166681676816868169681706817168172681736817468175681766817768178681796818068181681826818368184681856818668187681886818968190681916819268193681946819568196681976819868199682006820168202682036820468205682066820768208682096821068211682126821368214682156821668217682186821968220682216822268223682246822568226682276822868229682306823168232682336823468235682366823768238682396824068241682426824368244682456824668247682486824968250682516825268253682546825568256682576825868259682606826168262682636826468265682666826768268682696827068271682726827368274682756827668277682786827968280682816828268283682846828568286682876828868289682906829168292682936829468295682966829768298682996830068301683026830368304683056830668307683086830968310683116831268313683146831568316683176831868319683206832168322683236832468325683266832768328683296833068331683326833368334683356833668337683386833968340683416834268343683446834568346683476834868349683506835168352683536835468355683566835768358683596836068361683626836368364683656836668367683686836968370683716837268373683746837568376683776837868379683806838168382683836838468385683866838768388683896839068391683926839368394683956839668397683986839968400684016840268403684046840568406684076840868409684106841168412684136841468415684166841768418684196842068421684226842368424684256842668427684286842968430684316843268433684346843568436684376843868439684406844168442684436844468445684466844768448684496845068451684526845368454684556845668457684586845968460684616846268463684646846568466684676846868469684706847168472684736847468475684766847768478684796848068481684826848368484684856848668487684886848968490684916849268493684946849568496684976849868499685006850168502685036850468505685066850768508685096851068511685126851368514685156851668517685186851968520685216852268523685246852568526685276852868529685306853168532685336853468535685366853768538685396854068541685426854368544685456854668547685486854968550685516855268553685546855568556685576855868559685606856168562685636856468565685666856768568685696857068571685726857368574685756857668577685786857968580685816858268583685846858568586685876858868589685906859168592685936859468595685966859768598685996860068601686026860368604686056860668607686086860968610686116861268613686146861568616686176861868619686206862168622686236862468625686266862768628686296863068631686326863368634686356863668637686386863968640686416864268643686446864568646686476864868649686506865168652686536865468655686566865768658686596866068661686626866368664686656866668667686686866968670686716867268673686746867568676686776867868679686806868168682686836868468685686866868768688686896869068691686926869368694686956869668697686986869968700687016870268703687046870568706687076870868709687106871168712687136871468715687166871768718687196872068721687226872368724687256872668727687286872968730687316873268733687346873568736687376873868739687406874168742687436874468745687466874768748687496875068751687526875368754687556875668757687586875968760687616876268763687646876568766687676876868769687706877168772687736877468775687766877768778687796878068781687826878368784687856878668787687886878968790687916879268793687946879568796687976879868799688006880168802688036880468805688066880768808688096881068811688126881368814688156881668817688186881968820688216882268823688246882568826688276882868829688306883168832688336883468835688366883768838688396884068841688426884368844688456884668847688486884968850688516885268853688546885568856688576885868859688606886168862688636886468865688666886768868688696887068871688726887368874688756887668877688786887968880688816888268883688846888568886688876888868889688906889168892688936889468895688966889768898688996890068901689026890368904689056890668907689086890968910689116891268913689146891568916689176891868919689206892168922689236892468925689266892768928689296893068931689326893368934689356893668937689386893968940689416894268943689446894568946689476894868949689506895168952689536895468955689566895768958689596896068961689626896368964689656896668967689686896968970689716897268973689746897568976689776897868979689806898168982689836898468985689866898768988689896899068991689926899368994689956899668997689986899969000690016900269003690046900569006690076900869009690106901169012690136901469015690166901769018690196902069021690226902369024690256902669027690286902969030690316903269033690346903569036690376903869039690406904169042690436904469045690466904769048690496905069051690526905369054690556905669057690586905969060690616906269063690646906569066690676906869069690706907169072690736907469075690766907769078690796908069081690826908369084690856908669087690886908969090690916909269093690946909569096690976909869099691006910169102691036910469105691066910769108691096911069111691126911369114691156911669117691186911969120691216912269123691246912569126691276912869129691306913169132691336913469135691366913769138691396914069141691426914369144691456914669147691486914969150691516915269153691546915569156691576915869159691606916169162691636916469165691666916769168691696917069171691726917369174691756917669177691786917969180691816918269183691846918569186691876918869189691906919169192691936919469195691966919769198691996920069201692026920369204692056920669207692086920969210692116921269213692146921569216692176921869219692206922169222692236922469225692266922769228692296923069231692326923369234692356923669237692386923969240692416924269243692446924569246692476924869249692506925169252692536925469255692566925769258692596926069261692626926369264692656926669267692686926969270692716927269273692746927569276692776927869279692806928169282692836928469285692866928769288692896929069291692926929369294692956929669297692986929969300693016930269303693046930569306693076930869309693106931169312693136931469315693166931769318693196932069321693226932369324693256932669327693286932969330693316933269333693346933569336693376933869339693406934169342693436934469345693466934769348693496935069351693526935369354693556935669357693586935969360693616936269363693646936569366693676936869369693706937169372693736937469375693766937769378693796938069381693826938369384693856938669387693886938969390693916939269393693946939569396693976939869399694006940169402694036940469405694066940769408694096941069411694126941369414694156941669417694186941969420694216942269423694246942569426694276942869429694306943169432694336943469435694366943769438694396944069441694426944369444694456944669447694486944969450694516945269453694546945569456694576945869459694606946169462694636946469465694666946769468694696947069471694726947369474694756947669477694786947969480694816948269483694846948569486694876948869489694906949169492694936949469495694966949769498694996950069501695026950369504695056950669507695086950969510695116951269513695146951569516695176951869519695206952169522695236952469525695266952769528695296953069531695326953369534695356953669537695386953969540695416954269543695446954569546695476954869549695506955169552695536955469555695566955769558695596956069561695626956369564695656956669567695686956969570695716957269573695746957569576695776957869579695806958169582695836958469585695866958769588695896959069591695926959369594695956959669597695986959969600696016960269603696046960569606696076960869609696106961169612696136961469615696166961769618696196962069621696226962369624696256962669627696286962969630696316963269633696346963569636696376963869639696406964169642696436964469645696466964769648696496965069651696526965369654696556965669657696586965969660696616966269663696646966569666696676966869669696706967169672696736967469675696766967769678696796968069681696826968369684696856968669687696886968969690696916969269693696946969569696696976969869699697006970169702697036970469705697066970769708697096971069711697126971369714697156971669717697186971969720697216972269723697246972569726697276972869729697306973169732697336973469735697366973769738697396974069741697426974369744697456974669747697486974969750697516975269753697546975569756697576975869759697606976169762697636976469765697666976769768697696977069771697726977369774697756977669777697786977969780697816978269783697846978569786697876978869789697906979169792697936979469795697966979769798697996980069801698026980369804698056980669807698086980969810698116981269813698146981569816698176981869819698206982169822698236982469825698266982769828698296983069831698326983369834698356983669837698386983969840698416984269843698446984569846698476984869849698506985169852698536985469855698566985769858698596986069861698626986369864698656986669867698686986969870698716987269873698746987569876698776987869879698806988169882698836988469885698866988769888698896989069891698926989369894698956989669897698986989969900699016990269903699046990569906699076990869909699106991169912699136991469915699166991769918699196992069921699226992369924699256992669927699286992969930699316993269933699346993569936699376993869939699406994169942699436994469945699466994769948699496995069951699526995369954699556995669957699586995969960699616996269963699646996569966699676996869969699706997169972699736997469975699766997769978699796998069981699826998369984699856998669987699886998969990699916999269993699946999569996699976999869999700007000170002700037000470005700067000770008700097001070011700127001370014700157001670017700187001970020700217002270023700247002570026700277002870029700307003170032700337003470035700367003770038700397004070041700427004370044700457004670047700487004970050700517005270053700547005570056700577005870059700607006170062700637006470065700667006770068700697007070071700727007370074700757007670077700787007970080700817008270083700847008570086700877008870089700907009170092700937009470095700967009770098700997010070101701027010370104701057010670107701087010970110701117011270113701147011570116701177011870119701207012170122701237012470125701267012770128701297013070131701327013370134701357013670137701387013970140701417014270143701447014570146701477014870149701507015170152701537015470155701567015770158701597016070161701627016370164701657016670167701687016970170701717017270173701747017570176701777017870179701807018170182701837018470185701867018770188701897019070191701927019370194701957019670197701987019970200702017020270203702047020570206702077020870209702107021170212702137021470215702167021770218702197022070221702227022370224702257022670227702287022970230702317023270233702347023570236702377023870239702407024170242702437024470245702467024770248702497025070251702527025370254702557025670257702587025970260702617026270263702647026570266702677026870269702707027170272702737027470275702767027770278702797028070281702827028370284702857028670287702887028970290702917029270293702947029570296702977029870299703007030170302703037030470305703067030770308703097031070311703127031370314703157031670317703187031970320703217032270323703247032570326703277032870329703307033170332703337033470335703367033770338703397034070341703427034370344703457034670347703487034970350703517035270353703547035570356703577035870359703607036170362703637036470365703667036770368703697037070371703727037370374703757037670377703787037970380703817038270383703847038570386703877038870389703907039170392703937039470395703967039770398703997040070401704027040370404704057040670407704087040970410704117041270413704147041570416704177041870419704207042170422704237042470425704267042770428704297043070431704327043370434704357043670437704387043970440704417044270443704447044570446704477044870449704507045170452704537045470455704567045770458704597046070461704627046370464704657046670467704687046970470704717047270473704747047570476704777047870479704807048170482704837048470485704867048770488704897049070491704927049370494704957049670497704987049970500705017050270503705047050570506705077050870509705107051170512705137051470515705167051770518705197052070521705227052370524705257052670527705287052970530705317053270533705347053570536705377053870539705407054170542705437054470545705467054770548705497055070551705527055370554705557055670557705587055970560705617056270563705647056570566705677056870569705707057170572705737057470575705767057770578705797058070581705827058370584705857058670587705887058970590705917059270593705947059570596705977059870599706007060170602706037060470605706067060770608706097061070611706127061370614706157061670617706187061970620706217062270623706247062570626706277062870629706307063170632706337063470635706367063770638706397064070641706427064370644706457064670647706487064970650706517065270653706547065570656706577065870659706607066170662706637066470665706667066770668706697067070671706727067370674706757067670677706787067970680706817068270683706847068570686706877068870689706907069170692706937069470695706967069770698706997070070701707027070370704707057070670707707087070970710707117071270713707147071570716707177071870719707207072170722707237072470725707267072770728707297073070731707327073370734707357073670737707387073970740707417074270743707447074570746707477074870749707507075170752707537075470755707567075770758707597076070761707627076370764707657076670767707687076970770707717077270773707747077570776707777077870779707807078170782707837078470785707867078770788707897079070791707927079370794707957079670797707987079970800708017080270803708047080570806708077080870809708107081170812708137081470815708167081770818708197082070821708227082370824708257082670827708287082970830708317083270833708347083570836708377083870839708407084170842708437084470845708467084770848708497085070851708527085370854708557085670857708587085970860708617086270863708647086570866708677086870869708707087170872708737087470875708767087770878708797088070881708827088370884708857088670887708887088970890708917089270893708947089570896708977089870899709007090170902709037090470905709067090770908709097091070911709127091370914709157091670917709187091970920709217092270923709247092570926709277092870929709307093170932709337093470935709367093770938709397094070941709427094370944709457094670947709487094970950709517095270953709547095570956709577095870959709607096170962709637096470965709667096770968709697097070971709727097370974709757097670977709787097970980709817098270983709847098570986709877098870989709907099170992709937099470995709967099770998709997100071001710027100371004710057100671007710087100971010710117101271013710147101571016710177101871019710207102171022710237102471025710267102771028710297103071031710327103371034710357103671037710387103971040710417104271043710447104571046710477104871049710507105171052710537105471055710567105771058710597106071061710627106371064710657106671067710687106971070710717107271073710747107571076710777107871079710807108171082710837108471085710867108771088710897109071091710927109371094710957109671097710987109971100711017110271103711047110571106711077110871109711107111171112711137111471115711167111771118711197112071121711227112371124711257112671127711287112971130711317113271133711347113571136711377113871139711407114171142711437114471145711467114771148711497115071151711527115371154711557115671157711587115971160711617116271163711647116571166711677116871169711707117171172711737117471175711767117771178711797118071181711827118371184711857118671187711887118971190711917119271193711947119571196711977119871199712007120171202712037120471205712067120771208712097121071211712127121371214712157121671217712187121971220712217122271223712247122571226712277122871229712307123171232712337123471235712367123771238712397124071241712427124371244712457124671247712487124971250712517125271253712547125571256712577125871259712607126171262712637126471265712667126771268712697127071271712727127371274712757127671277712787127971280712817128271283712847128571286712877128871289712907129171292712937129471295712967129771298712997130071301713027130371304713057130671307713087130971310713117131271313713147131571316713177131871319713207132171322713237132471325713267132771328713297133071331713327133371334713357133671337713387133971340713417134271343713447134571346713477134871349713507135171352713537135471355713567135771358713597136071361713627136371364713657136671367713687136971370713717137271373713747137571376713777137871379713807138171382713837138471385713867138771388713897139071391713927139371394713957139671397713987139971400714017140271403714047140571406714077140871409714107141171412714137141471415714167141771418714197142071421714227142371424714257142671427714287142971430714317143271433714347143571436714377143871439714407144171442714437144471445714467144771448714497145071451714527145371454714557145671457714587145971460714617146271463714647146571466714677146871469714707147171472714737147471475714767147771478714797148071481714827148371484714857148671487714887148971490714917149271493714947149571496714977149871499715007150171502715037150471505715067150771508715097151071511715127151371514715157151671517715187151971520715217152271523715247152571526715277152871529715307153171532715337153471535715367153771538715397154071541715427154371544715457154671547715487154971550715517155271553715547155571556715577155871559715607156171562715637156471565715667156771568715697157071571715727157371574715757157671577715787157971580715817158271583715847158571586715877158871589715907159171592715937159471595715967159771598715997160071601716027160371604716057160671607716087160971610716117161271613716147161571616716177161871619716207162171622716237162471625716267162771628716297163071631716327163371634716357163671637716387163971640716417164271643716447164571646716477164871649716507165171652716537165471655716567165771658716597166071661716627166371664716657166671667716687166971670716717167271673716747167571676716777167871679716807168171682716837168471685716867168771688716897169071691716927169371694716957169671697716987169971700717017170271703717047170571706717077170871709717107171171712717137171471715717167171771718717197172071721717227172371724717257172671727717287172971730717317173271733717347173571736717377173871739717407174171742717437174471745717467174771748717497175071751717527175371754717557175671757717587175971760717617176271763717647176571766717677176871769717707177171772717737177471775717767177771778717797178071781717827178371784717857178671787717887178971790717917179271793717947179571796717977179871799718007180171802718037180471805718067180771808718097181071811718127181371814718157181671817718187181971820718217182271823718247182571826718277182871829718307183171832718337183471835718367183771838718397184071841718427184371844718457184671847718487184971850718517185271853718547185571856718577185871859718607186171862718637186471865718667186771868718697187071871718727187371874718757187671877718787187971880718817188271883718847188571886718877188871889718907189171892718937189471895718967189771898718997190071901719027190371904719057190671907719087190971910719117191271913719147191571916719177191871919719207192171922719237192471925719267192771928719297193071931719327193371934719357193671937719387193971940719417194271943719447194571946719477194871949719507195171952719537195471955719567195771958719597196071961719627196371964719657196671967719687196971970719717197271973719747197571976719777197871979719807198171982719837198471985719867198771988719897199071991719927199371994719957199671997719987199972000720017200272003720047200572006720077200872009720107201172012720137201472015720167201772018720197202072021720227202372024720257202672027720287202972030720317203272033720347203572036720377203872039720407204172042720437204472045720467204772048720497205072051720527205372054720557205672057720587205972060720617206272063720647206572066720677206872069720707207172072720737207472075720767207772078720797208072081720827208372084720857208672087720887208972090720917209272093720947209572096720977209872099721007210172102721037210472105721067210772108721097211072111721127211372114721157211672117721187211972120721217212272123721247212572126721277212872129721307213172132721337213472135721367213772138721397214072141721427214372144721457214672147721487214972150721517215272153721547215572156721577215872159721607216172162721637216472165721667216772168721697217072171721727217372174721757217672177721787217972180721817218272183721847218572186721877218872189721907219172192721937219472195721967219772198721997220072201722027220372204722057220672207722087220972210722117221272213722147221572216722177221872219722207222172222722237222472225722267222772228722297223072231722327223372234722357223672237722387223972240722417224272243722447224572246722477224872249722507225172252722537225472255722567225772258722597226072261722627226372264722657226672267722687226972270722717227272273722747227572276722777227872279722807228172282722837228472285722867228772288722897229072291722927229372294722957229672297722987229972300723017230272303723047230572306723077230872309723107231172312723137231472315723167231772318723197232072321723227232372324723257232672327723287232972330723317233272333723347233572336723377233872339723407234172342723437234472345723467234772348723497235072351723527235372354723557235672357723587235972360723617236272363723647236572366723677236872369723707237172372723737237472375723767237772378723797238072381723827238372384723857238672387723887238972390723917239272393723947239572396723977239872399724007240172402724037240472405724067240772408724097241072411724127241372414724157241672417724187241972420724217242272423724247242572426724277242872429724307243172432724337243472435724367243772438724397244072441724427244372444724457244672447724487244972450724517245272453724547245572456724577245872459724607246172462724637246472465724667246772468724697247072471724727247372474724757247672477724787247972480724817248272483724847248572486724877248872489724907249172492724937249472495724967249772498724997250072501725027250372504725057250672507725087250972510725117251272513725147251572516725177251872519725207252172522725237252472525725267252772528725297253072531725327253372534725357253672537725387253972540725417254272543725447254572546725477254872549725507255172552725537255472555725567255772558725597256072561725627256372564725657256672567725687256972570725717257272573725747257572576725777257872579725807258172582725837258472585725867258772588725897259072591725927259372594725957259672597725987259972600726017260272603726047260572606726077260872609726107261172612726137261472615726167261772618726197262072621726227262372624726257262672627726287262972630726317263272633726347263572636726377263872639726407264172642726437264472645726467264772648726497265072651726527265372654726557265672657726587265972660726617266272663726647266572666726677266872669726707267172672726737267472675726767267772678726797268072681726827268372684726857268672687726887268972690726917269272693726947269572696726977269872699727007270172702727037270472705727067270772708727097271072711727127271372714727157271672717727187271972720727217272272723727247272572726727277272872729727307273172732727337273472735727367273772738727397274072741727427274372744727457274672747727487274972750727517275272753727547275572756727577275872759727607276172762727637276472765727667276772768727697277072771727727277372774727757277672777727787277972780727817278272783727847278572786727877278872789727907279172792727937279472795727967279772798727997280072801728027280372804728057280672807728087280972810728117281272813728147281572816728177281872819728207282172822728237282472825728267282772828728297283072831728327283372834728357283672837728387283972840728417284272843728447284572846728477284872849728507285172852728537285472855728567285772858728597286072861728627286372864728657286672867728687286972870728717287272873728747287572876728777287872879728807288172882728837288472885728867288772888728897289072891728927289372894728957289672897728987289972900729017290272903729047290572906729077290872909729107291172912729137291472915729167291772918729197292072921729227292372924729257292672927729287292972930729317293272933729347293572936729377293872939729407294172942729437294472945729467294772948729497295072951729527295372954729557295672957729587295972960729617296272963729647296572966729677296872969729707297172972729737297472975729767297772978729797298072981729827298372984729857298672987729887298972990729917299272993729947299572996729977299872999730007300173002730037300473005730067300773008730097301073011730127301373014730157301673017730187301973020730217302273023730247302573026730277302873029730307303173032730337303473035730367303773038730397304073041730427304373044730457304673047730487304973050730517305273053730547305573056730577305873059730607306173062730637306473065730667306773068730697307073071730727307373074730757307673077730787307973080730817308273083730847308573086730877308873089730907309173092730937309473095730967309773098730997310073101731027310373104731057310673107731087310973110731117311273113731147311573116731177311873119731207312173122731237312473125731267312773128731297313073131731327313373134731357313673137731387313973140731417314273143731447314573146731477314873149731507315173152731537315473155731567315773158731597316073161731627316373164731657316673167731687316973170731717317273173731747317573176731777317873179731807318173182731837318473185731867318773188731897319073191731927319373194731957319673197731987319973200732017320273203732047320573206732077320873209732107321173212732137321473215732167321773218732197322073221732227322373224732257322673227732287322973230732317323273233732347323573236732377323873239732407324173242732437324473245732467324773248732497325073251732527325373254732557325673257732587325973260732617326273263732647326573266732677326873269732707327173272732737327473275732767327773278732797328073281732827328373284732857328673287732887328973290732917329273293732947329573296732977329873299733007330173302733037330473305733067330773308733097331073311733127331373314733157331673317733187331973320733217332273323733247332573326733277332873329733307333173332733337333473335733367333773338733397334073341733427334373344733457334673347733487334973350733517335273353733547335573356733577335873359733607336173362733637336473365733667336773368733697337073371733727337373374733757337673377733787337973380733817338273383733847338573386733877338873389733907339173392733937339473395733967339773398733997340073401734027340373404734057340673407734087340973410734117341273413734147341573416734177341873419734207342173422734237342473425734267342773428734297343073431734327343373434734357343673437734387343973440734417344273443734447344573446734477344873449734507345173452734537345473455734567345773458734597346073461734627346373464734657346673467734687346973470734717347273473734747347573476734777347873479734807348173482734837348473485734867348773488734897349073491734927349373494734957349673497734987349973500735017350273503735047350573506735077350873509735107351173512735137351473515735167351773518735197352073521735227352373524735257352673527735287352973530735317353273533735347353573536735377353873539735407354173542735437354473545735467354773548735497355073551735527355373554735557355673557735587355973560735617356273563735647356573566735677356873569735707357173572735737357473575735767357773578735797358073581735827358373584735857358673587735887358973590735917359273593735947359573596735977359873599736007360173602736037360473605736067360773608736097361073611736127361373614736157361673617736187361973620736217362273623736247362573626736277362873629736307363173632736337363473635736367363773638736397364073641736427364373644736457364673647736487364973650736517365273653736547365573656736577365873659736607366173662736637366473665736667366773668736697367073671736727367373674736757367673677736787367973680736817368273683736847368573686736877368873689736907369173692736937369473695736967369773698736997370073701737027370373704737057370673707737087370973710737117371273713737147371573716737177371873719737207372173722737237372473725737267372773728737297373073731737327373373734737357373673737737387373973740737417374273743737447374573746737477374873749737507375173752737537375473755737567375773758737597376073761737627376373764737657376673767737687376973770737717377273773737747377573776737777377873779737807378173782737837378473785737867378773788737897379073791737927379373794737957379673797737987379973800738017380273803738047380573806738077380873809738107381173812738137381473815738167381773818738197382073821738227382373824738257382673827738287382973830738317383273833738347383573836738377383873839738407384173842738437384473845738467384773848738497385073851738527385373854738557385673857738587385973860738617386273863738647386573866738677386873869738707387173872738737387473875738767387773878738797388073881738827388373884738857388673887738887388973890738917389273893738947389573896738977389873899739007390173902739037390473905739067390773908739097391073911739127391373914739157391673917739187391973920739217392273923739247392573926739277392873929739307393173932739337393473935739367393773938739397394073941739427394373944739457394673947739487394973950739517395273953739547395573956739577395873959739607396173962739637396473965739667396773968739697397073971739727397373974739757397673977739787397973980739817398273983739847398573986739877398873989739907399173992739937399473995739967399773998739997400074001740027400374004740057400674007740087400974010740117401274013740147401574016740177401874019740207402174022740237402474025740267402774028740297403074031740327403374034740357403674037740387403974040740417404274043740447404574046740477404874049740507405174052740537405474055740567405774058740597406074061740627406374064740657406674067740687406974070740717407274073740747407574076740777407874079740807408174082740837408474085740867408774088740897409074091740927409374094740957409674097740987409974100741017410274103741047410574106741077410874109741107411174112741137411474115741167411774118741197412074121741227412374124741257412674127741287412974130741317413274133741347413574136741377413874139741407414174142741437414474145741467414774148741497415074151741527415374154741557415674157741587415974160741617416274163741647416574166741677416874169741707417174172741737417474175741767417774178741797418074181741827418374184741857418674187741887418974190741917419274193741947419574196741977419874199742007420174202742037420474205742067420774208742097421074211742127421374214742157421674217742187421974220742217422274223742247422574226742277422874229742307423174232742337423474235742367423774238742397424074241742427424374244742457424674247742487424974250742517425274253742547425574256742577425874259742607426174262742637426474265742667426774268742697427074271742727427374274742757427674277742787427974280742817428274283742847428574286742877428874289742907429174292742937429474295742967429774298742997430074301743027430374304743057430674307743087430974310743117431274313743147431574316743177431874319743207432174322743237432474325743267432774328743297433074331743327433374334743357433674337743387433974340743417434274343743447434574346743477434874349743507435174352743537435474355743567435774358743597436074361743627436374364743657436674367743687436974370743717437274373743747437574376743777437874379743807438174382743837438474385743867438774388743897439074391743927439374394743957439674397743987439974400744017440274403744047440574406744077440874409744107441174412744137441474415744167441774418744197442074421744227442374424744257442674427744287442974430744317443274433744347443574436744377443874439744407444174442744437444474445744467444774448744497445074451744527445374454744557445674457744587445974460744617446274463744647446574466744677446874469744707447174472744737447474475744767447774478744797448074481744827448374484744857448674487744887448974490744917449274493744947449574496744977449874499745007450174502745037450474505745067450774508745097451074511745127451374514745157451674517745187451974520745217452274523745247452574526745277452874529745307453174532745337453474535745367453774538745397454074541745427454374544745457454674547745487454974550745517455274553745547455574556745577455874559745607456174562745637456474565745667456774568745697457074571745727457374574745757457674577745787457974580745817458274583745847458574586745877458874589745907459174592745937459474595745967459774598745997460074601746027460374604746057460674607746087460974610746117461274613746147461574616746177461874619746207462174622746237462474625746267462774628746297463074631746327463374634746357463674637746387463974640746417464274643746447464574646746477464874649746507465174652746537465474655746567465774658746597466074661746627466374664746657466674667746687466974670746717467274673746747467574676746777467874679746807468174682746837468474685746867468774688746897469074691746927469374694746957469674697746987469974700747017470274703747047470574706747077470874709747107471174712747137471474715747167471774718747197472074721747227472374724747257472674727747287472974730747317473274733747347473574736747377473874739747407474174742747437474474745747467474774748747497475074751747527475374754747557475674757747587475974760747617476274763747647476574766747677476874769747707477174772747737477474775747767477774778747797478074781747827478374784747857478674787747887478974790747917479274793747947479574796747977479874799748007480174802748037480474805748067480774808748097481074811748127481374814748157481674817748187481974820748217482274823748247482574826748277482874829748307483174832748337483474835748367483774838748397484074841748427484374844748457484674847748487484974850748517485274853748547485574856748577485874859748607486174862748637486474865748667486774868748697487074871748727487374874748757487674877748787487974880748817488274883748847488574886748877488874889748907489174892748937489474895748967489774898748997490074901749027490374904749057490674907749087490974910749117491274913749147491574916749177491874919749207492174922749237492474925749267492774928749297493074931749327493374934749357493674937749387493974940749417494274943749447494574946749477494874949749507495174952749537495474955749567495774958749597496074961749627496374964749657496674967749687496974970749717497274973749747497574976749777497874979749807498174982749837498474985749867498774988749897499074991749927499374994749957499674997749987499975000750017500275003750047500575006750077500875009750107501175012750137501475015750167501775018750197502075021750227502375024750257502675027750287502975030750317503275033750347503575036750377503875039750407504175042750437504475045750467504775048750497505075051750527505375054750557505675057750587505975060750617506275063750647506575066750677506875069750707507175072750737507475075750767507775078750797508075081750827508375084750857508675087750887508975090750917509275093750947509575096750977509875099751007510175102751037510475105751067510775108751097511075111751127511375114751157511675117751187511975120751217512275123751247512575126751277512875129751307513175132751337513475135751367513775138751397514075141751427514375144751457514675147751487514975150751517515275153751547515575156751577515875159751607516175162751637516475165751667516775168751697517075171751727517375174751757517675177751787517975180751817518275183751847518575186751877518875189751907519175192751937519475195751967519775198751997520075201752027520375204752057520675207752087520975210752117521275213752147521575216752177521875219752207522175222752237522475225752267522775228752297523075231752327523375234752357523675237752387523975240752417524275243752447524575246752477524875249752507525175252752537525475255752567525775258752597526075261752627526375264752657526675267752687526975270752717527275273752747527575276752777527875279752807528175282752837528475285752867528775288752897529075291752927529375294752957529675297752987529975300753017530275303753047530575306753077530875309753107531175312753137531475315753167531775318753197532075321753227532375324753257532675327753287532975330753317533275333753347533575336753377533875339753407534175342753437534475345753467534775348753497535075351753527535375354753557535675357753587535975360753617536275363753647536575366753677536875369753707537175372753737537475375753767537775378753797538075381753827538375384753857538675387753887538975390753917539275393753947539575396753977539875399754007540175402754037540475405754067540775408754097541075411754127541375414754157541675417754187541975420754217542275423754247542575426754277542875429754307543175432754337543475435754367543775438754397544075441754427544375444754457544675447754487544975450754517545275453754547545575456754577545875459754607546175462754637546475465754667546775468754697547075471754727547375474754757547675477754787547975480754817548275483754847548575486754877548875489754907549175492754937549475495754967549775498754997550075501755027550375504755057550675507755087550975510755117551275513755147551575516755177551875519755207552175522755237552475525755267552775528755297553075531755327553375534755357553675537755387553975540755417554275543755447554575546755477554875549755507555175552755537555475555755567555775558755597556075561755627556375564755657556675567755687556975570755717557275573755747557575576755777557875579755807558175582755837558475585755867558775588755897559075591755927559375594755957559675597755987559975600756017560275603756047560575606756077560875609756107561175612756137561475615756167561775618756197562075621756227562375624756257562675627756287562975630756317563275633756347563575636756377563875639756407564175642756437564475645756467564775648756497565075651756527565375654756557565675657756587565975660756617566275663756647566575666756677566875669756707567175672756737567475675756767567775678756797568075681756827568375684756857568675687756887568975690756917569275693756947569575696756977569875699757007570175702757037570475705757067570775708757097571075711757127571375714757157571675717757187571975720757217572275723757247572575726757277572875729757307573175732757337573475735757367573775738757397574075741757427574375744757457574675747757487574975750757517575275753757547575575756757577575875759757607576175762757637576475765757667576775768757697577075771757727577375774757757577675777757787577975780757817578275783757847578575786757877578875789757907579175792757937579475795757967579775798757997580075801758027580375804758057580675807758087580975810758117581275813758147581575816758177581875819758207582175822758237582475825758267582775828758297583075831758327583375834758357583675837758387583975840758417584275843758447584575846758477584875849758507585175852758537585475855758567585775858758597586075861758627586375864758657586675867758687586975870758717587275873758747587575876758777587875879758807588175882758837588475885758867588775888758897589075891758927589375894758957589675897758987589975900759017590275903759047590575906759077590875909759107591175912759137591475915759167591775918759197592075921759227592375924759257592675927759287592975930759317593275933759347593575936759377593875939759407594175942759437594475945759467594775948759497595075951759527595375954759557595675957759587595975960759617596275963759647596575966759677596875969759707597175972759737597475975759767597775978759797598075981759827598375984759857598675987759887598975990759917599275993759947599575996759977599875999760007600176002760037600476005760067600776008760097601076011760127601376014760157601676017760187601976020760217602276023760247602576026760277602876029760307603176032760337603476035760367603776038760397604076041760427604376044760457604676047760487604976050760517605276053760547605576056760577605876059760607606176062760637606476065760667606776068760697607076071760727607376074760757607676077760787607976080760817608276083760847608576086760877608876089760907609176092760937609476095760967609776098760997610076101761027610376104761057610676107761087610976110761117611276113761147611576116761177611876119761207612176122761237612476125761267612776128761297613076131761327613376134761357613676137761387613976140761417614276143761447614576146761477614876149761507615176152761537615476155761567615776158761597616076161761627616376164761657616676167761687616976170761717617276173761747617576176761777617876179761807618176182761837618476185761867618776188761897619076191761927619376194761957619676197761987619976200762017620276203762047620576206762077620876209762107621176212762137621476215762167621776218762197622076221762227622376224762257622676227762287622976230762317623276233762347623576236762377623876239762407624176242762437624476245762467624776248762497625076251762527625376254762557625676257762587625976260762617626276263762647626576266762677626876269762707627176272762737627476275762767627776278762797628076281762827628376284762857628676287762887628976290762917629276293762947629576296762977629876299763007630176302763037630476305763067630776308763097631076311763127631376314763157631676317763187631976320763217632276323763247632576326763277632876329763307633176332763337633476335763367633776338763397634076341763427634376344763457634676347763487634976350763517635276353763547635576356763577635876359763607636176362763637636476365763667636776368763697637076371763727637376374763757637676377763787637976380763817638276383763847638576386763877638876389763907639176392763937639476395763967639776398763997640076401764027640376404764057640676407764087640976410764117641276413764147641576416764177641876419764207642176422764237642476425764267642776428764297643076431764327643376434764357643676437764387643976440764417644276443764447644576446764477644876449764507645176452764537645476455764567645776458764597646076461764627646376464764657646676467764687646976470764717647276473764747647576476764777647876479764807648176482764837648476485764867648776488764897649076491764927649376494764957649676497764987649976500765017650276503765047650576506765077650876509765107651176512765137651476515765167651776518765197652076521765227652376524765257652676527765287652976530765317653276533765347653576536765377653876539765407654176542765437654476545765467654776548765497655076551765527655376554765557655676557765587655976560765617656276563765647656576566765677656876569765707657176572765737657476575765767657776578765797658076581765827658376584765857658676587765887658976590765917659276593765947659576596765977659876599766007660176602766037660476605766067660776608766097661076611766127661376614766157661676617766187661976620766217662276623766247662576626766277662876629766307663176632766337663476635766367663776638766397664076641766427664376644766457664676647766487664976650766517665276653766547665576656766577665876659766607666176662766637666476665766667666776668766697667076671766727667376674766757667676677766787667976680766817668276683766847668576686766877668876689766907669176692766937669476695766967669776698766997670076701767027670376704767057670676707767087670976710767117671276713767147671576716767177671876719767207672176722767237672476725767267672776728767297673076731767327673376734767357673676737767387673976740767417674276743767447674576746767477674876749767507675176752767537675476755767567675776758767597676076761767627676376764767657676676767767687676976770767717677276773767747677576776767777677876779767807678176782767837678476785767867678776788767897679076791767927679376794767957679676797767987679976800768017680276803768047680576806768077680876809768107681176812768137681476815768167681776818768197682076821768227682376824768257682676827768287682976830768317683276833768347683576836768377683876839768407684176842768437684476845768467684776848768497685076851768527685376854768557685676857768587685976860768617686276863768647686576866768677686876869768707687176872768737687476875768767687776878768797688076881768827688376884768857688676887768887688976890768917689276893768947689576896768977689876899769007690176902769037690476905769067690776908769097691076911769127691376914769157691676917769187691976920769217692276923769247692576926769277692876929769307693176932769337693476935769367693776938769397694076941769427694376944769457694676947769487694976950769517695276953769547695576956769577695876959769607696176962769637696476965769667696776968769697697076971769727697376974769757697676977769787697976980769817698276983769847698576986769877698876989769907699176992769937699476995769967699776998769997700077001770027700377004770057700677007770087700977010770117701277013770147701577016770177701877019770207702177022770237702477025770267702777028770297703077031770327703377034770357703677037770387703977040770417704277043770447704577046770477704877049770507705177052770537705477055770567705777058770597706077061770627706377064770657706677067770687706977070770717707277073770747707577076770777707877079770807708177082770837708477085770867708777088770897709077091770927709377094770957709677097770987709977100771017710277103771047710577106771077710877109771107711177112771137711477115771167711777118771197712077121771227712377124771257712677127771287712977130771317713277133771347713577136771377713877139771407714177142771437714477145771467714777148771497715077151771527715377154771557715677157771587715977160771617716277163771647716577166771677716877169771707717177172771737717477175771767717777178771797718077181771827718377184771857718677187771887718977190771917719277193771947719577196771977719877199772007720177202772037720477205772067720777208772097721077211772127721377214772157721677217772187721977220772217722277223772247722577226772277722877229772307723177232772337723477235772367723777238772397724077241772427724377244772457724677247772487724977250772517725277253772547725577256772577725877259772607726177262772637726477265772667726777268772697727077271772727727377274772757727677277772787727977280772817728277283772847728577286772877728877289772907729177292772937729477295772967729777298772997730077301773027730377304773057730677307773087730977310773117731277313773147731577316773177731877319773207732177322773237732477325773267732777328773297733077331773327733377334773357733677337773387733977340773417734277343773447734577346773477734877349773507735177352773537735477355773567735777358773597736077361773627736377364773657736677367773687736977370773717737277373773747737577376773777737877379773807738177382773837738477385773867738777388773897739077391773927739377394773957739677397773987739977400774017740277403774047740577406774077740877409774107741177412774137741477415774167741777418774197742077421774227742377424774257742677427774287742977430774317743277433774347743577436774377743877439774407744177442774437744477445774467744777448774497745077451774527745377454774557745677457774587745977460774617746277463774647746577466774677746877469774707747177472774737747477475774767747777478774797748077481774827748377484774857748677487774887748977490774917749277493774947749577496774977749877499775007750177502775037750477505775067750777508775097751077511775127751377514775157751677517775187751977520775217752277523775247752577526775277752877529775307753177532775337753477535775367753777538775397754077541775427754377544775457754677547775487754977550775517755277553775547755577556775577755877559775607756177562775637756477565775667756777568775697757077571775727757377574775757757677577775787757977580775817758277583775847758577586775877758877589775907759177592775937759477595775967759777598775997760077601776027760377604776057760677607776087760977610776117761277613776147761577616776177761877619776207762177622776237762477625776267762777628776297763077631776327763377634776357763677637776387763977640776417764277643776447764577646776477764877649776507765177652776537765477655776567765777658776597766077661776627766377664776657766677667776687766977670776717767277673776747767577676776777767877679776807768177682776837768477685776867768777688776897769077691776927769377694776957769677697776987769977700777017770277703777047770577706777077770877709777107771177712777137771477715777167771777718777197772077721777227772377724777257772677727777287772977730777317773277733777347773577736777377773877739777407774177742777437774477745777467774777748777497775077751777527775377754777557775677757777587775977760777617776277763777647776577766777677776877769777707777177772777737777477775777767777777778777797778077781777827778377784777857778677787777887778977790777917779277793777947779577796777977779877799778007780177802778037780477805778067780777808778097781077811778127781377814778157781677817778187781977820778217782277823778247782577826778277782877829778307783177832778337783477835778367783777838778397784077841778427784377844778457784677847778487784977850778517785277853778547785577856778577785877859778607786177862778637786477865778667786777868778697787077871778727787377874778757787677877778787787977880778817788277883778847788577886778877788877889778907789177892778937789477895778967789777898778997790077901779027790377904779057790677907779087790977910779117791277913779147791577916779177791877919779207792177922779237792477925779267792777928779297793077931779327793377934779357793677937779387793977940779417794277943779447794577946779477794877949779507795177952779537795477955779567795777958779597796077961779627796377964779657796677967779687796977970779717797277973779747797577976779777797877979779807798177982779837798477985779867798777988779897799077991779927799377994779957799677997779987799978000780017800278003780047800578006780077800878009780107801178012780137801478015780167801778018780197802078021780227802378024780257802678027780287802978030780317803278033780347803578036780377803878039780407804178042780437804478045780467804778048780497805078051780527805378054780557805678057780587805978060780617806278063780647806578066780677806878069780707807178072780737807478075780767807778078780797808078081780827808378084780857808678087780887808978090780917809278093780947809578096780977809878099781007810178102781037810478105781067810778108781097811078111781127811378114781157811678117781187811978120781217812278123781247812578126781277812878129781307813178132781337813478135781367813778138781397814078141781427814378144781457814678147781487814978150781517815278153781547815578156781577815878159781607816178162781637816478165781667816778168781697817078171781727817378174781757817678177781787817978180781817818278183781847818578186781877818878189781907819178192781937819478195781967819778198781997820078201782027820378204782057820678207782087820978210782117821278213782147821578216782177821878219782207822178222782237822478225782267822778228782297823078231782327823378234782357823678237782387823978240782417824278243782447824578246782477824878249782507825178252782537825478255782567825778258782597826078261782627826378264782657826678267782687826978270782717827278273782747827578276782777827878279782807828178282782837828478285782867828778288782897829078291782927829378294782957829678297782987829978300783017830278303783047830578306783077830878309783107831178312783137831478315783167831778318783197832078321783227832378324783257832678327783287832978330783317833278333783347833578336783377833878339783407834178342783437834478345783467834778348783497835078351783527835378354783557835678357783587835978360783617836278363783647836578366783677836878369783707837178372783737837478375783767837778378783797838078381783827838378384783857838678387783887838978390783917839278393783947839578396783977839878399784007840178402784037840478405784067840778408784097841078411784127841378414784157841678417784187841978420784217842278423784247842578426784277842878429784307843178432784337843478435784367843778438784397844078441784427844378444784457844678447784487844978450784517845278453784547845578456784577845878459784607846178462784637846478465784667846778468784697847078471784727847378474784757847678477784787847978480784817848278483784847848578486784877848878489784907849178492784937849478495784967849778498784997850078501785027850378504785057850678507785087850978510785117851278513785147851578516785177851878519785207852178522785237852478525785267852778528785297853078531785327853378534785357853678537785387853978540785417854278543785447854578546785477854878549785507855178552785537855478555785567855778558785597856078561785627856378564785657856678567785687856978570785717857278573785747857578576785777857878579785807858178582785837858478585785867858778588785897859078591785927859378594785957859678597785987859978600786017860278603786047860578606786077860878609786107861178612786137861478615786167861778618786197862078621786227862378624786257862678627786287862978630786317863278633786347863578636786377863878639786407864178642786437864478645786467864778648786497865078651786527865378654786557865678657786587865978660786617866278663786647866578666786677866878669786707867178672786737867478675786767867778678786797868078681786827868378684786857868678687786887868978690786917869278693786947869578696786977869878699787007870178702787037870478705787067870778708787097871078711787127871378714787157871678717787187871978720787217872278723787247872578726787277872878729787307873178732787337873478735787367873778738787397874078741787427874378744787457874678747787487874978750787517875278753787547875578756787577875878759787607876178762787637876478765787667876778768787697877078771787727877378774787757877678777787787877978780787817878278783787847878578786787877878878789787907879178792787937879478795787967879778798787997880078801788027880378804788057880678807788087880978810788117881278813788147881578816788177881878819788207882178822788237882478825788267882778828788297883078831788327883378834788357883678837788387883978840788417884278843788447884578846788477884878849788507885178852788537885478855788567885778858788597886078861788627886378864788657886678867788687886978870788717887278873788747887578876788777887878879788807888178882788837888478885788867888778888788897889078891788927889378894788957889678897788987889978900789017890278903789047890578906789077890878909789107891178912789137891478915789167891778918789197892078921789227892378924789257892678927789287892978930789317893278933789347893578936789377893878939789407894178942789437894478945789467894778948789497895078951789527895378954789557895678957789587895978960789617896278963789647896578966789677896878969789707897178972789737897478975789767897778978789797898078981789827898378984789857898678987789887898978990789917899278993789947899578996789977899878999790007900179002790037900479005790067900779008790097901079011790127901379014790157901679017790187901979020790217902279023790247902579026790277902879029790307903179032790337903479035790367903779038790397904079041790427904379044790457904679047790487904979050790517905279053790547905579056790577905879059790607906179062790637906479065790667906779068790697907079071790727907379074790757907679077790787907979080790817908279083790847908579086790877908879089790907909179092790937909479095790967909779098790997910079101791027910379104791057910679107791087910979110791117911279113791147911579116791177911879119791207912179122791237912479125791267912779128791297913079131791327913379134791357913679137791387913979140791417914279143791447914579146791477914879149791507915179152791537915479155791567915779158791597916079161791627916379164791657916679167791687916979170791717917279173791747917579176791777917879179791807918179182791837918479185791867918779188791897919079191791927919379194791957919679197791987919979200792017920279203792047920579206792077920879209792107921179212792137921479215792167921779218792197922079221792227922379224792257922679227792287922979230792317923279233792347923579236792377923879239792407924179242792437924479245792467924779248792497925079251792527925379254792557925679257792587925979260792617926279263792647926579266792677926879269792707927179272792737927479275792767927779278792797928079281792827928379284792857928679287792887928979290792917929279293792947929579296792977929879299793007930179302793037930479305793067930779308793097931079311793127931379314793157931679317793187931979320793217932279323793247932579326793277932879329793307933179332793337933479335793367933779338793397934079341793427934379344793457934679347793487934979350793517935279353793547935579356793577935879359793607936179362793637936479365793667936779368793697937079371793727937379374793757937679377793787937979380793817938279383793847938579386793877938879389793907939179392793937939479395793967939779398793997940079401794027940379404794057940679407794087940979410794117941279413794147941579416794177941879419794207942179422794237942479425794267942779428794297943079431794327943379434794357943679437794387943979440794417944279443794447944579446794477944879449794507945179452794537945479455794567945779458794597946079461794627946379464794657946679467794687946979470794717947279473794747947579476794777947879479794807948179482794837948479485794867948779488794897949079491794927949379494794957949679497794987949979500795017950279503795047950579506795077950879509795107951179512795137951479515795167951779518795197952079521795227952379524795257952679527795287952979530795317953279533795347953579536795377953879539795407954179542795437954479545795467954779548795497955079551795527955379554795557955679557795587955979560795617956279563795647956579566795677956879569795707957179572795737957479575795767957779578795797958079581795827958379584795857958679587795887958979590795917959279593795947959579596795977959879599796007960179602796037960479605796067960779608796097961079611796127961379614796157961679617796187961979620796217962279623796247962579626796277962879629796307963179632796337963479635796367963779638796397964079641796427964379644796457964679647796487964979650796517965279653796547965579656796577965879659796607966179662796637966479665796667966779668796697967079671796727967379674796757967679677796787967979680796817968279683796847968579686796877968879689796907969179692796937969479695796967969779698796997970079701797027970379704797057970679707797087970979710797117971279713797147971579716797177971879719797207972179722797237972479725797267972779728797297973079731797327973379734797357973679737797387973979740797417974279743797447974579746797477974879749797507975179752797537975479755797567975779758797597976079761797627976379764797657976679767797687976979770797717977279773797747977579776797777977879779797807978179782797837978479785797867978779788797897979079791797927979379794797957979679797797987979979800798017980279803798047980579806798077980879809798107981179812798137981479815798167981779818798197982079821798227982379824798257982679827798287982979830798317983279833798347983579836798377983879839798407984179842798437984479845798467984779848798497985079851798527985379854798557985679857798587985979860798617986279863798647986579866798677986879869798707987179872798737987479875798767987779878798797988079881798827988379884798857988679887798887988979890798917989279893798947989579896798977989879899799007990179902799037990479905799067990779908799097991079911799127991379914799157991679917799187991979920799217992279923799247992579926799277992879929799307993179932799337993479935799367993779938799397994079941799427994379944799457994679947799487994979950799517995279953799547995579956799577995879959799607996179962799637996479965799667996779968799697997079971799727997379974799757997679977799787997979980799817998279983799847998579986799877998879989799907999179992799937999479995799967999779998799998000080001800028000380004800058000680007800088000980010800118001280013800148001580016800178001880019800208002180022800238002480025800268002780028800298003080031800328003380034800358003680037800388003980040800418004280043800448004580046800478004880049800508005180052800538005480055800568005780058800598006080061800628006380064800658006680067800688006980070800718007280073800748007580076800778007880079800808008180082800838008480085800868008780088800898009080091800928009380094800958009680097800988009980100801018010280103801048010580106801078010880109801108011180112801138011480115801168011780118801198012080121801228012380124801258012680127801288012980130801318013280133801348013580136801378013880139801408014180142801438014480145801468014780148801498015080151801528015380154801558015680157801588015980160801618016280163801648016580166801678016880169801708017180172801738017480175801768017780178801798018080181801828018380184801858018680187801888018980190801918019280193801948019580196801978019880199802008020180202802038020480205802068020780208802098021080211802128021380214802158021680217802188021980220802218022280223802248022580226802278022880229802308023180232802338023480235802368023780238802398024080241802428024380244802458024680247802488024980250802518025280253802548025580256802578025880259802608026180262802638026480265802668026780268802698027080271802728027380274802758027680277802788027980280802818028280283802848028580286802878028880289802908029180292802938029480295802968029780298802998030080301803028030380304803058030680307803088030980310803118031280313803148031580316803178031880319803208032180322803238032480325803268032780328803298033080331803328033380334803358033680337803388033980340803418034280343803448034580346803478034880349803508035180352803538035480355803568035780358803598036080361803628036380364803658036680367803688036980370803718037280373803748037580376803778037880379803808038180382803838038480385803868038780388803898039080391803928039380394803958039680397803988039980400804018040280403804048040580406804078040880409804108041180412804138041480415804168041780418804198042080421804228042380424804258042680427804288042980430804318043280433804348043580436804378043880439804408044180442804438044480445804468044780448804498045080451804528045380454804558045680457804588045980460804618046280463804648046580466804678046880469804708047180472804738047480475804768047780478804798048080481804828048380484804858048680487804888048980490804918049280493804948049580496804978049880499805008050180502805038050480505805068050780508805098051080511805128051380514805158051680517805188051980520805218052280523805248052580526805278052880529805308053180532805338053480535805368053780538805398054080541805428054380544805458054680547805488054980550805518055280553805548055580556805578055880559805608056180562805638056480565805668056780568805698057080571805728057380574805758057680577805788057980580805818058280583805848058580586805878058880589805908059180592805938059480595805968059780598805998060080601806028060380604806058060680607806088060980610806118061280613806148061580616806178061880619806208062180622806238062480625806268062780628806298063080631806328063380634806358063680637806388063980640806418064280643806448064580646806478064880649806508065180652806538065480655806568065780658806598066080661806628066380664806658066680667806688066980670806718067280673806748067580676806778067880679806808068180682806838068480685806868068780688806898069080691806928069380694806958069680697806988069980700807018070280703807048070580706807078070880709807108071180712807138071480715807168071780718807198072080721807228072380724807258072680727807288072980730807318073280733807348073580736807378073880739807408074180742807438074480745807468074780748807498075080751807528075380754807558075680757807588075980760807618076280763807648076580766807678076880769807708077180772807738077480775807768077780778807798078080781807828078380784807858078680787807888078980790807918079280793807948079580796807978079880799808008080180802808038080480805808068080780808808098081080811808128081380814808158081680817808188081980820808218082280823808248082580826808278082880829808308083180832808338083480835808368083780838808398084080841808428084380844808458084680847808488084980850808518085280853808548085580856808578085880859808608086180862808638086480865808668086780868808698087080871808728087380874808758087680877808788087980880808818088280883808848088580886808878088880889808908089180892808938089480895808968089780898808998090080901809028090380904809058090680907809088090980910809118091280913809148091580916809178091880919809208092180922809238092480925809268092780928809298093080931809328093380934809358093680937809388093980940809418094280943809448094580946809478094880949809508095180952809538095480955809568095780958809598096080961809628096380964809658096680967809688096980970809718097280973809748097580976809778097880979809808098180982809838098480985809868098780988809898099080991809928099380994809958099680997809988099981000810018100281003810048100581006810078100881009810108101181012810138101481015810168101781018810198102081021810228102381024810258102681027810288102981030810318103281033810348103581036810378103881039810408104181042810438104481045810468104781048810498105081051810528105381054810558105681057810588105981060810618106281063810648106581066810678106881069810708107181072810738107481075810768107781078810798108081081810828108381084810858108681087810888108981090810918109281093810948109581096810978109881099811008110181102811038110481105811068110781108811098111081111811128111381114811158111681117811188111981120811218112281123811248112581126811278112881129811308113181132811338113481135811368113781138811398114081141811428114381144811458114681147811488114981150811518115281153811548115581156811578115881159811608116181162811638116481165811668116781168811698117081171811728117381174811758117681177811788117981180811818118281183811848118581186811878118881189811908119181192811938119481195811968119781198811998120081201812028120381204812058120681207812088120981210812118121281213812148121581216812178121881219812208122181222812238122481225812268122781228812298123081231812328123381234812358123681237812388123981240812418124281243812448124581246812478124881249812508125181252812538125481255812568125781258812598126081261812628126381264812658126681267812688126981270812718127281273812748127581276812778127881279812808128181282812838128481285812868128781288812898129081291812928129381294812958129681297812988129981300813018130281303813048130581306813078130881309813108131181312813138131481315813168131781318813198132081321813228132381324813258132681327813288132981330813318133281333813348133581336813378133881339813408134181342813438134481345813468134781348813498135081351813528135381354813558135681357813588135981360813618136281363813648136581366813678136881369813708137181372813738137481375813768137781378813798138081381813828138381384813858138681387813888138981390813918139281393813948139581396813978139881399814008140181402814038140481405814068140781408814098141081411814128141381414814158141681417814188141981420814218142281423814248142581426814278142881429814308143181432814338143481435814368143781438814398144081441814428144381444814458144681447814488144981450814518145281453814548145581456814578145881459814608146181462814638146481465814668146781468814698147081471814728147381474814758147681477814788147981480814818148281483814848148581486814878148881489814908149181492814938149481495814968149781498814998150081501815028150381504815058150681507815088150981510815118151281513815148151581516815178151881519815208152181522815238152481525815268152781528815298153081531815328153381534815358153681537815388153981540815418154281543815448154581546815478154881549815508155181552815538155481555815568155781558815598156081561815628156381564815658156681567815688156981570815718157281573815748157581576815778157881579815808158181582815838158481585815868158781588815898159081591815928159381594815958159681597815988159981600816018160281603816048160581606816078160881609816108161181612816138161481615816168161781618816198162081621816228162381624816258162681627816288162981630816318163281633816348163581636816378163881639816408164181642816438164481645816468164781648816498165081651816528165381654816558165681657816588165981660816618166281663816648166581666816678166881669816708167181672816738167481675816768167781678816798168081681816828168381684816858168681687816888168981690816918169281693816948169581696816978169881699817008170181702817038170481705817068170781708817098171081711817128171381714817158171681717817188171981720817218172281723817248172581726817278172881729817308173181732817338173481735817368173781738817398174081741817428174381744817458174681747817488174981750817518175281753817548175581756817578175881759817608176181762817638176481765817668176781768817698177081771817728177381774817758177681777817788177981780817818178281783817848178581786817878178881789817908179181792817938179481795817968179781798817998180081801818028180381804818058180681807818088180981810818118181281813818148181581816818178181881819818208182181822818238182481825818268182781828818298183081831818328183381834818358183681837818388183981840818418184281843818448184581846818478184881849818508185181852818538185481855818568185781858818598186081861818628186381864818658186681867818688186981870818718187281873818748187581876818778187881879818808188181882818838188481885818868188781888818898189081891818928189381894818958189681897818988189981900819018190281903819048190581906819078190881909819108191181912819138191481915819168191781918819198192081921819228192381924819258192681927819288192981930819318193281933819348193581936819378193881939819408194181942819438194481945819468194781948819498195081951819528195381954819558195681957819588195981960819618196281963819648196581966819678196881969819708197181972819738197481975819768197781978819798198081981819828198381984819858198681987819888198981990819918199281993819948199581996819978199881999820008200182002820038200482005820068200782008820098201082011820128201382014820158201682017820188201982020820218202282023820248202582026820278202882029820308203182032820338203482035820368203782038820398204082041820428204382044820458204682047820488204982050820518205282053820548205582056820578205882059820608206182062820638206482065820668206782068820698207082071820728207382074820758207682077820788207982080820818208282083820848208582086820878208882089820908209182092820938209482095820968209782098820998210082101821028210382104821058210682107821088210982110821118211282113821148211582116821178211882119821208212182122821238212482125821268212782128821298213082131821328213382134821358213682137821388213982140821418214282143821448214582146821478214882149821508215182152821538215482155821568215782158821598216082161821628216382164821658216682167821688216982170821718217282173821748217582176821778217882179821808218182182821838218482185821868218782188821898219082191821928219382194821958219682197821988219982200822018220282203822048220582206822078220882209822108221182212822138221482215822168221782218822198222082221822228222382224822258222682227822288222982230822318223282233822348223582236822378223882239822408224182242822438224482245822468224782248822498225082251822528225382254822558225682257822588225982260822618226282263822648226582266822678226882269822708227182272822738227482275822768227782278822798228082281822828228382284822858228682287822888228982290822918229282293822948229582296822978229882299823008230182302823038230482305823068230782308823098231082311823128231382314823158231682317823188231982320823218232282323823248232582326823278232882329823308233182332823338233482335823368233782338823398234082341823428234382344823458234682347823488234982350823518235282353823548235582356823578235882359823608236182362823638236482365823668236782368823698237082371823728237382374823758237682377823788237982380823818238282383823848238582386823878238882389823908239182392823938239482395823968239782398823998240082401824028240382404824058240682407824088240982410824118241282413824148241582416824178241882419824208242182422824238242482425824268242782428824298243082431824328243382434824358243682437824388243982440824418244282443824448244582446824478244882449824508245182452824538245482455824568245782458824598246082461824628246382464824658246682467824688246982470824718247282473824748247582476824778247882479824808248182482824838248482485824868248782488824898249082491824928249382494824958249682497824988249982500825018250282503825048250582506825078250882509825108251182512825138251482515825168251782518825198252082521825228252382524825258252682527825288252982530825318253282533825348253582536825378253882539825408254182542825438254482545825468254782548825498255082551825528255382554825558255682557825588255982560825618256282563825648256582566825678256882569825708257182572825738257482575825768257782578825798258082581825828258382584825858258682587825888258982590825918259282593825948259582596825978259882599826008260182602826038260482605826068260782608826098261082611826128261382614826158261682617826188261982620826218262282623826248262582626826278262882629826308263182632826338263482635826368263782638826398264082641826428264382644826458264682647826488264982650826518265282653826548265582656826578265882659826608266182662826638266482665826668266782668826698267082671826728267382674826758267682677826788267982680826818268282683826848268582686826878268882689826908269182692826938269482695826968269782698826998270082701827028270382704827058270682707827088270982710827118271282713827148271582716827178271882719827208272182722827238272482725827268272782728827298273082731827328273382734827358273682737827388273982740827418274282743827448274582746827478274882749827508275182752827538275482755827568275782758827598276082761827628276382764827658276682767827688276982770827718277282773827748277582776827778277882779827808278182782827838278482785827868278782788827898279082791827928279382794827958279682797827988279982800828018280282803828048280582806828078280882809828108281182812828138281482815828168281782818828198282082821828228282382824828258282682827828288282982830828318283282833828348283582836828378283882839828408284182842828438284482845828468284782848828498285082851828528285382854828558285682857828588285982860828618286282863828648286582866828678286882869828708287182872828738287482875828768287782878828798288082881828828288382884828858288682887828888288982890828918289282893828948289582896828978289882899829008290182902829038290482905829068290782908829098291082911829128291382914829158291682917829188291982920829218292282923829248292582926829278292882929829308293182932829338293482935829368293782938829398294082941829428294382944829458294682947829488294982950829518295282953829548295582956829578295882959829608296182962829638296482965829668296782968829698297082971829728297382974829758297682977829788297982980829818298282983829848298582986829878298882989829908299182992829938299482995829968299782998829998300083001830028300383004830058300683007830088300983010830118301283013830148301583016830178301883019830208302183022830238302483025830268302783028830298303083031830328303383034830358303683037830388303983040830418304283043830448304583046830478304883049830508305183052830538305483055830568305783058830598306083061830628306383064830658306683067830688306983070830718307283073830748307583076830778307883079830808308183082830838308483085830868308783088830898309083091830928309383094830958309683097830988309983100831018310283103831048310583106831078310883109831108311183112831138311483115831168311783118831198312083121831228312383124831258312683127831288312983130831318313283133831348313583136831378313883139831408314183142831438314483145831468314783148831498315083151831528315383154831558315683157831588315983160831618316283163831648316583166831678316883169831708317183172831738317483175831768317783178831798318083181831828318383184831858318683187831888318983190831918319283193831948319583196831978319883199832008320183202832038320483205832068320783208832098321083211832128321383214832158321683217832188321983220832218322283223832248322583226832278322883229832308323183232832338323483235832368323783238832398324083241832428324383244832458324683247832488324983250832518325283253832548325583256832578325883259832608326183262832638326483265832668326783268832698327083271832728327383274832758327683277832788327983280832818328283283832848328583286832878328883289832908329183292832938329483295832968329783298832998330083301833028330383304833058330683307833088330983310833118331283313833148331583316833178331883319833208332183322833238332483325833268332783328833298333083331833328333383334833358333683337833388333983340833418334283343833448334583346833478334883349833508335183352833538335483355833568335783358833598336083361833628336383364833658336683367833688336983370833718337283373833748337583376833778337883379833808338183382833838338483385833868338783388833898339083391833928339383394833958339683397833988339983400834018340283403834048340583406834078340883409834108341183412834138341483415834168341783418834198342083421834228342383424834258342683427834288342983430834318343283433834348343583436834378343883439834408344183442834438344483445834468344783448834498345083451834528345383454834558345683457834588345983460834618346283463834648346583466834678346883469834708347183472834738347483475834768347783478834798348083481834828348383484834858348683487834888348983490834918349283493834948349583496834978349883499835008350183502835038350483505835068350783508835098351083511835128351383514835158351683517835188351983520835218352283523835248352583526835278352883529835308353183532835338353483535835368353783538835398354083541835428354383544835458354683547835488354983550835518355283553835548355583556835578355883559835608356183562835638356483565835668356783568835698357083571835728357383574835758357683577835788357983580835818358283583835848358583586835878358883589835908359183592835938359483595835968359783598835998360083601836028360383604836058360683607836088360983610836118361283613836148361583616836178361883619836208362183622836238362483625836268362783628836298363083631836328363383634836358363683637836388363983640836418364283643836448364583646836478364883649836508365183652836538365483655836568365783658836598366083661836628366383664836658366683667836688366983670836718367283673836748367583676836778367883679836808368183682836838368483685836868368783688836898369083691836928369383694836958369683697836988369983700837018370283703837048370583706837078370883709837108371183712837138371483715837168371783718837198372083721837228372383724837258372683727837288372983730837318373283733837348373583736837378373883739837408374183742837438374483745837468374783748837498375083751837528375383754837558375683757837588375983760837618376283763837648376583766837678376883769837708377183772837738377483775837768377783778837798378083781837828378383784837858378683787837888378983790837918379283793837948379583796837978379883799838008380183802838038380483805838068380783808838098381083811838128381383814838158381683817838188381983820838218382283823838248382583826838278382883829838308383183832838338383483835838368383783838838398384083841838428384383844838458384683847838488384983850838518385283853838548385583856838578385883859838608386183862838638386483865838668386783868838698387083871838728387383874838758387683877838788387983880838818388283883838848388583886838878388883889838908389183892838938389483895838968389783898838998390083901839028390383904839058390683907839088390983910839118391283913839148391583916839178391883919839208392183922839238392483925839268392783928839298393083931839328393383934839358393683937839388393983940839418394283943839448394583946839478394883949839508395183952839538395483955839568395783958839598396083961839628396383964839658396683967839688396983970839718397283973839748397583976839778397883979839808398183982839838398483985839868398783988839898399083991839928399383994839958399683997839988399984000840018400284003840048400584006840078400884009840108401184012840138401484015840168401784018840198402084021840228402384024840258402684027840288402984030840318403284033840348403584036840378403884039840408404184042840438404484045840468404784048840498405084051840528405384054840558405684057840588405984060840618406284063840648406584066840678406884069840708407184072840738407484075840768407784078840798408084081840828408384084840858408684087840888408984090840918409284093840948409584096840978409884099841008410184102841038410484105841068410784108841098411084111841128411384114841158411684117841188411984120841218412284123841248412584126841278412884129841308413184132841338413484135841368413784138841398414084141841428414384144841458414684147841488414984150841518415284153841548415584156841578415884159841608416184162841638416484165841668416784168841698417084171841728417384174841758417684177841788417984180841818418284183841848418584186841878418884189841908419184192841938419484195841968419784198841998420084201842028420384204842058420684207842088420984210842118421284213842148421584216842178421884219842208422184222842238422484225842268422784228842298423084231842328423384234842358423684237842388423984240842418424284243842448424584246842478424884249842508425184252842538425484255842568425784258842598426084261842628426384264842658426684267842688426984270842718427284273842748427584276842778427884279842808428184282842838428484285842868428784288842898429084291842928429384294842958429684297842988429984300843018430284303843048430584306843078430884309843108431184312843138431484315843168431784318843198432084321843228432384324843258432684327843288432984330843318433284333843348433584336843378433884339843408434184342843438434484345843468434784348843498435084351843528435384354843558435684357843588435984360843618436284363843648436584366843678436884369843708437184372843738437484375843768437784378843798438084381843828438384384843858438684387843888438984390843918439284393843948439584396843978439884399844008440184402844038440484405844068440784408844098441084411844128441384414844158441684417844188441984420844218442284423844248442584426844278442884429844308443184432844338443484435844368443784438844398444084441844428444384444844458444684447844488444984450844518445284453844548445584456844578445884459844608446184462844638446484465844668446784468844698447084471844728447384474844758447684477844788447984480844818448284483844848448584486844878448884489844908449184492844938449484495844968449784498844998450084501845028450384504845058450684507845088450984510845118451284513845148451584516845178451884519845208452184522845238452484525845268452784528845298453084531845328453384534845358453684537845388453984540845418454284543845448454584546845478454884549845508455184552845538455484555845568455784558845598456084561845628456384564845658456684567845688456984570845718457284573845748457584576845778457884579845808458184582845838458484585845868458784588845898459084591845928459384594845958459684597845988459984600846018460284603846048460584606846078460884609846108461184612846138461484615846168461784618846198462084621846228462384624846258462684627846288462984630846318463284633846348463584636846378463884639846408464184642846438464484645846468464784648846498465084651846528465384654846558465684657846588465984660846618466284663846648466584666846678466884669846708467184672846738467484675846768467784678846798468084681846828468384684846858468684687846888468984690846918469284693846948469584696846978469884699847008470184702847038470484705847068470784708847098471084711847128471384714847158471684717847188471984720847218472284723847248472584726847278472884729847308473184732847338473484735847368473784738847398474084741847428474384744847458474684747847488474984750847518475284753847548475584756847578475884759847608476184762847638476484765847668476784768847698477084771847728477384774847758477684777847788477984780847818478284783847848478584786847878478884789847908479184792847938479484795847968479784798847998480084801848028480384804848058480684807848088480984810848118481284813848148481584816848178481884819848208482184822848238482484825848268482784828848298483084831848328483384834848358483684837848388483984840848418484284843848448484584846848478484884849848508485184852848538485484855848568485784858848598486084861848628486384864848658486684867848688486984870848718487284873848748487584876848778487884879848808488184882848838488484885848868488784888848898489084891848928489384894848958489684897848988489984900849018490284903849048490584906849078490884909849108491184912849138491484915849168491784918849198492084921849228492384924849258492684927849288492984930849318493284933849348493584936849378493884939849408494184942849438494484945849468494784948849498495084951849528495384954849558495684957849588495984960849618496284963849648496584966849678496884969849708497184972849738497484975849768497784978849798498084981849828498384984849858498684987849888498984990849918499284993849948499584996849978499884999850008500185002850038500485005850068500785008850098501085011850128501385014850158501685017850188501985020850218502285023850248502585026850278502885029850308503185032850338503485035850368503785038850398504085041850428504385044850458504685047850488504985050850518505285053850548505585056850578505885059850608506185062850638506485065850668506785068850698507085071850728507385074850758507685077850788507985080850818508285083850848508585086850878508885089850908509185092850938509485095850968509785098850998510085101851028510385104851058510685107851088510985110851118511285113851148511585116851178511885119851208512185122851238512485125851268512785128851298513085131851328513385134851358513685137851388513985140851418514285143851448514585146851478514885149851508515185152851538515485155851568515785158851598516085161851628516385164851658516685167851688516985170851718517285173851748517585176851778517885179851808518185182851838518485185851868518785188851898519085191851928519385194851958519685197851988519985200852018520285203852048520585206852078520885209852108521185212852138521485215852168521785218852198522085221852228522385224852258522685227852288522985230852318523285233852348523585236852378523885239852408524185242852438524485245852468524785248852498525085251852528525385254852558525685257852588525985260852618526285263852648526585266852678526885269852708527185272852738527485275852768527785278852798528085281852828528385284852858528685287852888528985290852918529285293852948529585296852978529885299853008530185302853038530485305853068530785308853098531085311853128531385314853158531685317853188531985320853218532285323853248532585326853278532885329853308533185332853338533485335853368533785338853398534085341853428534385344853458534685347853488534985350853518535285353853548535585356853578535885359853608536185362853638536485365853668536785368853698537085371853728537385374853758537685377853788537985380853818538285383853848538585386853878538885389853908539185392853938539485395853968539785398853998540085401854028540385404854058540685407854088540985410854118541285413854148541585416854178541885419854208542185422854238542485425854268542785428854298543085431854328543385434854358543685437854388543985440854418544285443854448544585446854478544885449854508545185452854538545485455854568545785458854598546085461854628546385464854658546685467854688546985470854718547285473854748547585476854778547885479854808548185482854838548485485854868548785488854898549085491854928549385494854958549685497854988549985500855018550285503855048550585506855078550885509855108551185512855138551485515855168551785518855198552085521855228552385524855258552685527855288552985530855318553285533855348553585536855378553885539855408554185542855438554485545855468554785548855498555085551855528555385554855558555685557855588555985560855618556285563855648556585566855678556885569855708557185572855738557485575855768557785578855798558085581855828558385584855858558685587855888558985590855918559285593855948559585596855978559885599856008560185602856038560485605856068560785608856098561085611856128561385614856158561685617856188561985620856218562285623856248562585626856278562885629856308563185632856338563485635856368563785638856398564085641856428564385644856458564685647856488564985650856518565285653856548565585656856578565885659856608566185662856638566485665856668566785668856698567085671856728567385674856758567685677856788567985680856818568285683856848568585686856878568885689856908569185692856938569485695856968569785698856998570085701857028570385704857058570685707857088570985710857118571285713857148571585716857178571885719857208572185722857238572485725857268572785728857298573085731857328573385734857358573685737857388573985740857418574285743857448574585746857478574885749857508575185752857538575485755857568575785758857598576085761857628576385764857658576685767857688576985770857718577285773857748577585776857778577885779857808578185782857838578485785857868578785788857898579085791857928579385794857958579685797857988579985800858018580285803858048580585806858078580885809858108581185812858138581485815858168581785818858198582085821858228582385824858258582685827858288582985830858318583285833858348583585836858378583885839858408584185842858438584485845858468584785848858498585085851858528585385854858558585685857858588585985860858618586285863858648586585866858678586885869858708587185872858738587485875858768587785878858798588085881858828588385884858858588685887858888588985890858918589285893858948589585896858978589885899859008590185902859038590485905859068590785908859098591085911859128591385914859158591685917859188591985920859218592285923859248592585926859278592885929859308593185932859338593485935859368593785938859398594085941859428594385944859458594685947859488594985950859518595285953859548595585956859578595885959859608596185962859638596485965859668596785968859698597085971859728597385974859758597685977859788597985980859818598285983859848598585986859878598885989859908599185992859938599485995859968599785998859998600086001860028600386004860058600686007860088600986010860118601286013860148601586016860178601886019860208602186022860238602486025860268602786028860298603086031860328603386034860358603686037860388603986040860418604286043860448604586046860478604886049860508605186052860538605486055860568605786058860598606086061860628606386064860658606686067860688606986070860718607286073860748607586076860778607886079860808608186082860838608486085860868608786088860898609086091860928609386094860958609686097860988609986100861018610286103861048610586106861078610886109861108611186112861138611486115861168611786118861198612086121861228612386124861258612686127861288612986130861318613286133861348613586136861378613886139861408614186142861438614486145861468614786148861498615086151861528615386154861558615686157861588615986160861618616286163861648616586166861678616886169861708617186172861738617486175861768617786178861798618086181861828618386184861858618686187861888618986190861918619286193861948619586196861978619886199862008620186202862038620486205862068620786208862098621086211862128621386214862158621686217862188621986220862218622286223862248622586226862278622886229862308623186232862338623486235862368623786238862398624086241862428624386244862458624686247862488624986250862518625286253862548625586256862578625886259862608626186262862638626486265862668626786268862698627086271862728627386274862758627686277862788627986280862818628286283862848628586286862878628886289862908629186292862938629486295862968629786298862998630086301863028630386304863058630686307863088630986310863118631286313863148631586316863178631886319863208632186322863238632486325863268632786328863298633086331863328633386334863358633686337863388633986340863418634286343863448634586346863478634886349863508635186352863538635486355863568635786358863598636086361863628636386364863658636686367863688636986370863718637286373863748637586376863778637886379863808638186382863838638486385863868638786388863898639086391863928639386394863958639686397863988639986400864018640286403864048640586406864078640886409864108641186412864138641486415864168641786418864198642086421864228642386424864258642686427864288642986430864318643286433864348643586436864378643886439864408644186442864438644486445864468644786448864498645086451864528645386454864558645686457864588645986460864618646286463864648646586466864678646886469864708647186472864738647486475864768647786478864798648086481864828648386484864858648686487864888648986490864918649286493864948649586496864978649886499865008650186502865038650486505865068650786508865098651086511865128651386514865158651686517865188651986520865218652286523865248652586526865278652886529865308653186532865338653486535865368653786538865398654086541865428654386544865458654686547865488654986550865518655286553865548655586556865578655886559865608656186562865638656486565865668656786568865698657086571865728657386574865758657686577865788657986580865818658286583865848658586586865878658886589865908659186592865938659486595865968659786598865998660086601866028660386604866058660686607866088660986610866118661286613866148661586616866178661886619866208662186622866238662486625866268662786628866298663086631866328663386634866358663686637866388663986640866418664286643866448664586646866478664886649866508665186652866538665486655866568665786658866598666086661866628666386664866658666686667866688666986670866718667286673866748667586676866778667886679866808668186682866838668486685866868668786688866898669086691866928669386694866958669686697866988669986700867018670286703867048670586706867078670886709867108671186712867138671486715867168671786718867198672086721867228672386724867258672686727867288672986730867318673286733867348673586736867378673886739867408674186742867438674486745867468674786748867498675086751867528675386754867558675686757867588675986760867618676286763867648676586766867678676886769867708677186772867738677486775867768677786778867798678086781867828678386784867858678686787867888678986790867918679286793867948679586796867978679886799868008680186802868038680486805868068680786808868098681086811868128681386814868158681686817868188681986820868218682286823868248682586826868278682886829868308683186832868338683486835868368683786838868398684086841868428684386844868458684686847868488684986850868518685286853868548685586856868578685886859868608686186862868638686486865868668686786868868698687086871868728687386874868758687686877868788687986880868818688286883868848688586886868878688886889868908689186892868938689486895868968689786898868998690086901869028690386904869058690686907869088690986910869118691286913869148691586916869178691886919869208692186922869238692486925869268692786928869298693086931869328693386934869358693686937869388693986940869418694286943869448694586946869478694886949869508695186952869538695486955869568695786958869598696086961869628696386964869658696686967869688696986970869718697286973869748697586976869778697886979869808698186982869838698486985869868698786988869898699086991869928699386994869958699686997869988699987000870018700287003870048700587006870078700887009870108701187012870138701487015870168701787018870198702087021870228702387024870258702687027870288702987030870318703287033870348703587036870378703887039870408704187042870438704487045870468704787048870498705087051870528705387054870558705687057870588705987060870618706287063870648706587066870678706887069870708707187072870738707487075870768707787078870798708087081870828708387084870858708687087870888708987090870918709287093870948709587096870978709887099871008710187102871038710487105871068710787108871098711087111871128711387114871158711687117871188711987120871218712287123871248712587126871278712887129871308713187132871338713487135871368713787138871398714087141871428714387144871458714687147871488714987150871518715287153871548715587156871578715887159871608716187162871638716487165871668716787168871698717087171871728717387174871758717687177871788717987180871818718287183871848718587186871878718887189871908719187192871938719487195871968719787198871998720087201872028720387204872058720687207872088720987210872118721287213872148721587216872178721887219872208722187222872238722487225872268722787228872298723087231872328723387234872358723687237872388723987240872418724287243872448724587246872478724887249872508725187252872538725487255872568725787258872598726087261872628726387264872658726687267872688726987270872718727287273872748727587276872778727887279872808728187282872838728487285872868728787288872898729087291872928729387294872958729687297872988729987300873018730287303873048730587306873078730887309873108731187312873138731487315873168731787318873198732087321873228732387324873258732687327873288732987330873318733287333873348733587336873378733887339873408734187342873438734487345873468734787348873498735087351873528735387354873558735687357873588735987360873618736287363873648736587366873678736887369873708737187372873738737487375873768737787378873798738087381873828738387384873858738687387873888738987390873918739287393873948739587396873978739887399874008740187402874038740487405874068740787408874098741087411874128741387414874158741687417874188741987420874218742287423874248742587426874278742887429874308743187432874338743487435874368743787438874398744087441874428744387444874458744687447874488744987450874518745287453874548745587456874578745887459874608746187462874638746487465874668746787468874698747087471874728747387474874758747687477874788747987480874818748287483874848748587486874878748887489874908749187492874938749487495874968749787498874998750087501875028750387504875058750687507875088750987510875118751287513875148751587516875178751887519875208752187522875238752487525875268752787528875298753087531875328753387534875358753687537875388753987540875418754287543875448754587546875478754887549875508755187552875538755487555875568755787558875598756087561875628756387564875658756687567875688756987570875718757287573875748757587576875778757887579875808758187582875838758487585875868758787588875898759087591875928759387594875958759687597875988759987600876018760287603876048760587606876078760887609876108761187612876138761487615876168761787618876198762087621876228762387624876258762687627876288762987630876318763287633876348763587636876378763887639876408764187642876438764487645876468764787648876498765087651876528765387654876558765687657876588765987660876618766287663876648766587666876678766887669876708767187672876738767487675876768767787678876798768087681876828768387684876858768687687876888768987690876918769287693876948769587696876978769887699877008770187702877038770487705877068770787708877098771087711877128771387714877158771687717877188771987720877218772287723877248772587726877278772887729877308773187732877338773487735877368773787738877398774087741877428774387744877458774687747877488774987750877518775287753877548775587756877578775887759877608776187762877638776487765877668776787768877698777087771877728777387774877758777687777877788777987780877818778287783877848778587786877878778887789877908779187792877938779487795877968779787798877998780087801878028780387804878058780687807878088780987810878118781287813878148781587816878178781887819878208782187822878238782487825878268782787828878298783087831878328783387834878358783687837878388783987840878418784287843878448784587846878478784887849878508785187852878538785487855878568785787858878598786087861878628786387864878658786687867878688786987870878718787287873878748787587876878778787887879878808788187882878838788487885878868788787888878898789087891878928789387894878958789687897878988789987900879018790287903879048790587906879078790887909879108791187912879138791487915879168791787918879198792087921879228792387924879258792687927879288792987930879318793287933879348793587936879378793887939879408794187942879438794487945879468794787948879498795087951879528795387954879558795687957879588795987960879618796287963879648796587966879678796887969879708797187972879738797487975879768797787978879798798087981879828798387984879858798687987879888798987990879918799287993879948799587996879978799887999880008800188002880038800488005880068800788008880098801088011880128801388014880158801688017880188801988020880218802288023880248802588026880278802888029880308803188032880338803488035880368803788038880398804088041880428804388044880458804688047880488804988050880518805288053880548805588056880578805888059880608806188062880638806488065880668806788068880698807088071880728807388074880758807688077880788807988080880818808288083880848808588086880878808888089880908809188092880938809488095880968809788098880998810088101881028810388104881058810688107881088810988110881118811288113881148811588116881178811888119881208812188122881238812488125881268812788128881298813088131881328813388134881358813688137881388813988140881418814288143881448814588146881478814888149881508815188152881538815488155881568815788158881598816088161881628816388164881658816688167881688816988170881718817288173881748817588176881778817888179881808818188182881838818488185881868818788188881898819088191881928819388194881958819688197881988819988200882018820288203882048820588206882078820888209882108821188212882138821488215882168821788218882198822088221882228822388224882258822688227882288822988230882318823288233882348823588236882378823888239882408824188242882438824488245882468824788248882498825088251882528825388254882558825688257882588825988260882618826288263882648826588266882678826888269882708827188272882738827488275882768827788278882798828088281882828828388284882858828688287882888828988290882918829288293882948829588296882978829888299883008830188302883038830488305883068830788308883098831088311883128831388314883158831688317883188831988320883218832288323883248832588326883278832888329883308833188332883338833488335883368833788338883398834088341883428834388344883458834688347883488834988350883518835288353883548835588356883578835888359883608836188362883638836488365883668836788368883698837088371883728837388374883758837688377883788837988380883818838288383883848838588386883878838888389883908839188392883938839488395883968839788398883998840088401884028840388404884058840688407884088840988410884118841288413884148841588416884178841888419884208842188422884238842488425884268842788428884298843088431884328843388434884358843688437884388843988440884418844288443884448844588446884478844888449884508845188452884538845488455884568845788458884598846088461884628846388464884658846688467884688846988470884718847288473884748847588476884778847888479884808848188482884838848488485884868848788488884898849088491884928849388494884958849688497884988849988500885018850288503885048850588506885078850888509885108851188512885138851488515885168851788518885198852088521885228852388524885258852688527885288852988530885318853288533885348853588536885378853888539885408854188542885438854488545885468854788548885498855088551885528855388554885558855688557885588855988560885618856288563885648856588566885678856888569885708857188572885738857488575885768857788578885798858088581885828858388584885858858688587885888858988590885918859288593885948859588596885978859888599886008860188602886038860488605886068860788608886098861088611886128861388614886158861688617886188861988620886218862288623886248862588626886278862888629886308863188632886338863488635886368863788638886398864088641886428864388644886458864688647886488864988650886518865288653886548865588656886578865888659886608866188662886638866488665886668866788668886698867088671886728867388674886758867688677886788867988680886818868288683886848868588686886878868888689886908869188692886938869488695886968869788698886998870088701887028870388704887058870688707887088870988710887118871288713887148871588716887178871888719887208872188722887238872488725887268872788728887298873088731887328873388734887358873688737887388873988740887418874288743887448874588746887478874888749887508875188752887538875488755887568875788758887598876088761887628876388764887658876688767887688876988770887718877288773887748877588776887778877888779887808878188782887838878488785887868878788788887898879088791887928879388794887958879688797887988879988800888018880288803888048880588806888078880888809888108881188812888138881488815888168881788818888198882088821888228882388824888258882688827888288882988830888318883288833888348883588836888378883888839888408884188842888438884488845888468884788848888498885088851888528885388854888558885688857888588885988860888618886288863888648886588866888678886888869888708887188872888738887488875888768887788878888798888088881888828888388884888858888688887888888888988890888918889288893888948889588896888978889888899889008890188902889038890488905889068890788908889098891088911889128891388914889158891688917889188891988920889218892288923889248892588926889278892888929889308893188932889338893488935889368893788938889398894088941889428894388944889458894688947889488894988950889518895288953889548895588956889578895888959889608896188962889638896488965889668896788968889698897088971889728897388974889758897688977889788897988980889818898288983889848898588986889878898888989889908899188992889938899488995889968899788998889998900089001890028900389004890058900689007890088900989010890118901289013890148901589016890178901889019890208902189022890238902489025890268902789028890298903089031890328903389034890358903689037890388903989040890418904289043890448904589046890478904889049890508905189052890538905489055890568905789058890598906089061890628906389064890658906689067890688906989070890718907289073890748907589076890778907889079890808908189082890838908489085890868908789088890898909089091890928909389094890958909689097890988909989100891018910289103891048910589106891078910889109891108911189112891138911489115891168911789118891198912089121891228912389124891258912689127891288912989130891318913289133891348913589136891378913889139891408914189142891438914489145891468914789148891498915089151891528915389154891558915689157891588915989160891618916289163891648916589166891678916889169891708917189172891738917489175891768917789178891798918089181891828918389184891858918689187891888918989190891918919289193891948919589196891978919889199892008920189202892038920489205892068920789208892098921089211892128921389214892158921689217892188921989220892218922289223892248922589226892278922889229892308923189232892338923489235892368923789238892398924089241892428924389244892458924689247892488924989250892518925289253892548925589256892578925889259892608926189262892638926489265892668926789268892698927089271892728927389274892758927689277892788927989280892818928289283892848928589286892878928889289892908929189292892938929489295892968929789298892998930089301893028930389304893058930689307893088930989310893118931289313893148931589316893178931889319893208932189322893238932489325893268932789328893298933089331893328933389334893358933689337893388933989340893418934289343893448934589346893478934889349893508935189352893538935489355893568935789358893598936089361893628936389364893658936689367893688936989370893718937289373893748937589376893778937889379893808938189382893838938489385893868938789388893898939089391893928939389394893958939689397893988939989400894018940289403894048940589406894078940889409894108941189412894138941489415894168941789418894198942089421894228942389424894258942689427894288942989430894318943289433894348943589436894378943889439894408944189442894438944489445894468944789448894498945089451894528945389454894558945689457894588945989460894618946289463894648946589466894678946889469894708947189472894738947489475894768947789478894798948089481894828948389484894858948689487894888948989490894918949289493894948949589496894978949889499895008950189502895038950489505895068950789508895098951089511895128951389514895158951689517895188951989520895218952289523895248952589526895278952889529895308953189532895338953489535895368953789538895398954089541895428954389544895458954689547895488954989550895518955289553895548955589556895578955889559895608956189562895638956489565895668956789568895698957089571895728957389574895758957689577895788957989580895818958289583895848958589586895878958889589895908959189592895938959489595895968959789598895998960089601896028960389604896058960689607896088960989610896118961289613896148961589616896178961889619896208962189622896238962489625896268962789628896298963089631896328963389634896358963689637896388963989640896418964289643896448964589646896478964889649896508965189652896538965489655896568965789658896598966089661896628966389664896658966689667896688966989670896718967289673896748967589676896778967889679896808968189682896838968489685896868968789688896898969089691896928969389694896958969689697896988969989700897018970289703897048970589706897078970889709897108971189712897138971489715897168971789718897198972089721897228972389724897258972689727897288972989730897318973289733897348973589736897378973889739897408974189742897438974489745897468974789748897498975089751897528975389754897558975689757897588975989760897618976289763897648976589766897678976889769897708977189772897738977489775897768977789778897798978089781897828978389784897858978689787897888978989790897918979289793897948979589796897978979889799898008980189802898038980489805898068980789808898098981089811898128981389814898158981689817898188981989820898218982289823898248982589826898278982889829898308983189832898338983489835898368983789838898398984089841898428984389844898458984689847898488984989850898518985289853898548985589856898578985889859898608986189862898638986489865898668986789868898698987089871898728987389874898758987689877898788987989880898818988289883898848988589886898878988889889898908989189892898938989489895898968989789898898998990089901899028990389904899058990689907899088990989910899118991289913899148991589916899178991889919899208992189922899238992489925899268992789928899298993089931899328993389934899358993689937899388993989940899418994289943899448994589946899478994889949899508995189952899538995489955899568995789958899598996089961899628996389964899658996689967899688996989970899718997289973899748997589976899778997889979899808998189982899838998489985899868998789988899898999089991899928999389994899958999689997899988999990000900019000290003900049000590006900079000890009900109001190012900139001490015900169001790018900199002090021900229002390024900259002690027900289002990030900319003290033900349003590036900379003890039900409004190042900439004490045900469004790048900499005090051900529005390054900559005690057900589005990060900619006290063900649006590066900679006890069900709007190072900739007490075900769007790078900799008090081900829008390084900859008690087900889008990090900919009290093900949009590096900979009890099901009010190102901039010490105901069010790108901099011090111901129011390114901159011690117901189011990120901219012290123901249012590126901279012890129901309013190132901339013490135901369013790138901399014090141901429014390144901459014690147901489014990150901519015290153901549015590156901579015890159901609016190162901639016490165901669016790168901699017090171901729017390174901759017690177901789017990180901819018290183901849018590186901879018890189901909019190192901939019490195901969019790198901999020090201902029020390204902059020690207902089020990210902119021290213902149021590216902179021890219902209022190222902239022490225902269022790228902299023090231902329023390234902359023690237902389023990240902419024290243902449024590246902479024890249902509025190252902539025490255902569025790258902599026090261902629026390264902659026690267902689026990270902719027290273902749027590276902779027890279902809028190282902839028490285902869028790288902899029090291902929029390294902959029690297902989029990300903019030290303903049030590306903079030890309903109031190312903139031490315903169031790318903199032090321903229032390324903259032690327903289032990330903319033290333903349033590336903379033890339903409034190342903439034490345903469034790348903499035090351903529035390354903559035690357903589035990360903619036290363903649036590366903679036890369903709037190372903739037490375903769037790378903799038090381903829038390384903859038690387903889038990390903919039290393903949039590396903979039890399904009040190402904039040490405904069040790408904099041090411904129041390414904159041690417904189041990420904219042290423904249042590426904279042890429904309043190432904339043490435904369043790438904399044090441904429044390444904459044690447904489044990450904519045290453904549045590456904579045890459904609046190462904639046490465904669046790468904699047090471904729047390474904759047690477904789047990480904819048290483904849048590486904879048890489904909049190492904939049490495904969049790498904999050090501905029050390504905059050690507905089050990510905119051290513905149051590516905179051890519905209052190522905239052490525905269052790528905299053090531905329053390534905359053690537905389053990540905419054290543905449054590546905479054890549905509055190552905539055490555905569055790558905599056090561905629056390564905659056690567905689056990570905719057290573905749057590576905779057890579905809058190582905839058490585905869058790588905899059090591905929059390594905959059690597905989059990600906019060290603906049060590606906079060890609906109061190612906139061490615906169061790618906199062090621906229062390624906259062690627906289062990630906319063290633906349063590636906379063890639906409064190642906439064490645906469064790648906499065090651906529065390654906559065690657906589065990660906619066290663906649066590666906679066890669906709067190672906739067490675906769067790678906799068090681906829068390684906859068690687906889068990690906919069290693906949069590696906979069890699907009070190702907039070490705907069070790708907099071090711907129071390714907159071690717907189071990720907219072290723907249072590726907279072890729907309073190732907339073490735907369073790738907399074090741907429074390744907459074690747907489074990750907519075290753907549075590756907579075890759907609076190762907639076490765907669076790768907699077090771907729077390774907759077690777907789077990780907819078290783907849078590786907879078890789907909079190792907939079490795907969079790798907999080090801908029080390804908059080690807908089080990810908119081290813908149081590816908179081890819908209082190822908239082490825908269082790828908299083090831908329083390834908359083690837908389083990840908419084290843908449084590846908479084890849908509085190852908539085490855908569085790858908599086090861908629086390864908659086690867908689086990870908719087290873908749087590876908779087890879908809088190882908839088490885908869088790888908899089090891908929089390894908959089690897908989089990900909019090290903909049090590906909079090890909909109091190912909139091490915909169091790918909199092090921909229092390924909259092690927909289092990930909319093290933909349093590936909379093890939909409094190942909439094490945909469094790948909499095090951909529095390954909559095690957909589095990960909619096290963909649096590966909679096890969909709097190972909739097490975909769097790978909799098090981909829098390984909859098690987909889098990990909919099290993909949099590996909979099890999910009100191002910039100491005910069100791008910099101091011910129101391014910159101691017910189101991020910219102291023910249102591026910279102891029910309103191032910339103491035910369103791038910399104091041910429104391044910459104691047910489104991050910519105291053910549105591056910579105891059910609106191062910639106491065910669106791068910699107091071910729107391074910759107691077910789107991080910819108291083910849108591086910879108891089910909109191092910939109491095910969109791098910999110091101911029110391104911059110691107911089110991110911119111291113911149111591116911179111891119911209112191122911239112491125911269112791128911299113091131911329113391134911359113691137911389113991140911419114291143911449114591146911479114891149911509115191152911539115491155911569115791158911599116091161911629116391164911659116691167911689116991170911719117291173911749117591176911779117891179911809118191182911839118491185911869118791188911899119091191911929119391194911959119691197911989119991200912019120291203912049120591206912079120891209912109121191212912139121491215912169121791218912199122091221912229122391224912259122691227912289122991230912319123291233912349123591236912379123891239912409124191242912439124491245912469124791248912499125091251912529125391254912559125691257912589125991260912619126291263912649126591266912679126891269912709127191272912739127491275912769127791278912799128091281912829128391284912859128691287912889128991290912919129291293912949129591296912979129891299913009130191302913039130491305913069130791308913099131091311913129131391314913159131691317913189131991320913219132291323913249132591326913279132891329913309133191332913339133491335913369133791338913399134091341913429134391344913459134691347913489134991350913519135291353913549135591356913579135891359913609136191362913639136491365913669136791368913699137091371913729137391374913759137691377913789137991380913819138291383913849138591386913879138891389913909139191392913939139491395913969139791398913999140091401914029140391404914059140691407914089140991410914119141291413914149141591416914179141891419914209142191422914239142491425914269142791428914299143091431914329143391434914359143691437914389143991440914419144291443914449144591446914479144891449914509145191452914539145491455914569145791458914599146091461914629146391464914659146691467914689146991470914719147291473914749147591476914779147891479914809148191482914839148491485914869148791488914899149091491914929149391494914959149691497914989149991500915019150291503915049150591506915079150891509915109151191512915139151491515915169151791518915199152091521915229152391524915259152691527915289152991530915319153291533915349153591536915379153891539915409154191542915439154491545915469154791548915499155091551915529155391554915559155691557915589155991560915619156291563915649156591566915679156891569915709157191572915739157491575915769157791578915799158091581915829158391584915859158691587915889158991590915919159291593915949159591596915979159891599916009160191602916039160491605916069160791608916099161091611916129161391614916159161691617916189161991620916219162291623916249162591626916279162891629916309163191632916339163491635916369163791638916399164091641916429164391644916459164691647916489164991650916519165291653916549165591656916579165891659916609166191662916639166491665916669166791668916699167091671916729167391674916759167691677916789167991680916819168291683916849168591686916879168891689916909169191692916939169491695916969169791698916999170091701917029170391704917059170691707917089170991710917119171291713917149171591716917179171891719917209172191722917239172491725917269172791728917299173091731917329173391734917359173691737917389173991740917419174291743917449174591746917479174891749917509175191752917539175491755917569175791758917599176091761917629176391764917659176691767917689176991770917719177291773917749177591776917779177891779917809178191782917839178491785917869178791788917899179091791917929179391794917959179691797917989179991800918019180291803918049180591806918079180891809918109181191812918139181491815918169181791818918199182091821918229182391824918259182691827918289182991830918319183291833918349183591836918379183891839918409184191842918439184491845918469184791848918499185091851918529185391854918559185691857918589185991860918619186291863918649186591866918679186891869918709187191872918739187491875918769187791878918799188091881918829188391884918859188691887918889188991890918919189291893918949189591896918979189891899919009190191902919039190491905919069190791908919099191091911919129191391914919159191691917919189191991920919219192291923919249192591926919279192891929919309193191932919339193491935919369193791938919399194091941919429194391944919459194691947919489194991950919519195291953919549195591956919579195891959919609196191962919639196491965919669196791968919699197091971919729197391974919759197691977919789197991980919819198291983919849198591986919879198891989919909199191992919939199491995919969199791998919999200092001920029200392004920059200692007920089200992010920119201292013920149201592016920179201892019920209202192022920239202492025920269202792028920299203092031920329203392034920359203692037920389203992040920419204292043920449204592046920479204892049920509205192052920539205492055920569205792058920599206092061920629206392064920659206692067920689206992070920719207292073920749207592076920779207892079920809208192082920839208492085920869208792088920899209092091920929209392094920959209692097920989209992100921019210292103921049210592106921079210892109921109211192112921139211492115921169211792118921199212092121921229212392124921259212692127921289212992130921319213292133921349213592136921379213892139921409214192142921439214492145921469214792148921499215092151921529215392154921559215692157921589215992160921619216292163921649216592166921679216892169921709217192172921739217492175921769217792178921799218092181921829218392184921859218692187921889218992190921919219292193921949219592196921979219892199922009220192202922039220492205922069220792208922099221092211922129221392214922159221692217922189221992220922219222292223922249222592226922279222892229922309223192232922339223492235922369223792238922399224092241922429224392244922459224692247922489224992250922519225292253922549225592256922579225892259922609226192262922639226492265922669226792268922699227092271922729227392274922759227692277922789227992280922819228292283922849228592286922879228892289922909229192292922939229492295922969229792298922999230092301923029230392304923059230692307923089230992310923119231292313923149231592316923179231892319923209232192322923239232492325923269232792328923299233092331923329233392334923359233692337923389233992340923419234292343923449234592346923479234892349923509235192352923539235492355923569235792358923599236092361923629236392364923659236692367923689236992370923719237292373923749237592376923779237892379923809238192382923839238492385923869238792388923899239092391923929239392394923959239692397923989239992400924019240292403924049240592406924079240892409924109241192412924139241492415924169241792418924199242092421924229242392424924259242692427924289242992430924319243292433924349243592436924379243892439924409244192442924439244492445924469244792448924499245092451924529245392454924559245692457924589245992460924619246292463924649246592466924679246892469924709247192472924739247492475924769247792478924799248092481924829248392484924859248692487924889248992490924919249292493924949249592496924979249892499925009250192502925039250492505925069250792508925099251092511925129251392514925159251692517925189251992520925219252292523925249252592526925279252892529925309253192532925339253492535925369253792538925399254092541925429254392544925459254692547925489254992550925519255292553925549255592556925579255892559925609256192562925639256492565925669256792568925699257092571925729257392574925759257692577925789257992580925819258292583925849258592586925879258892589925909259192592925939259492595925969259792598925999260092601926029260392604926059260692607926089260992610926119261292613926149261592616926179261892619926209262192622926239262492625926269262792628926299263092631926329263392634926359263692637926389263992640926419264292643926449264592646926479264892649926509265192652926539265492655926569265792658926599266092661926629266392664926659266692667926689266992670926719267292673926749267592676926779267892679926809268192682926839268492685926869268792688926899269092691926929269392694926959269692697926989269992700927019270292703927049270592706927079270892709927109271192712927139271492715927169271792718927199272092721927229272392724927259272692727927289272992730927319273292733927349273592736927379273892739927409274192742927439274492745927469274792748927499275092751927529275392754927559275692757927589275992760927619276292763927649276592766927679276892769927709277192772927739277492775927769277792778927799278092781927829278392784927859278692787927889278992790927919279292793927949279592796927979279892799928009280192802928039280492805928069280792808928099281092811928129281392814928159281692817928189281992820928219282292823928249282592826928279282892829928309283192832928339283492835928369283792838928399284092841928429284392844928459284692847928489284992850928519285292853928549285592856928579285892859928609286192862928639286492865928669286792868928699287092871928729287392874928759287692877928789287992880928819288292883928849288592886928879288892889928909289192892928939289492895928969289792898928999290092901929029290392904929059290692907929089290992910929119291292913929149291592916929179291892919929209292192922929239292492925929269292792928929299293092931929329293392934929359293692937929389293992940929419294292943929449294592946929479294892949929509295192952929539295492955929569295792958929599296092961929629296392964929659296692967929689296992970929719297292973929749297592976929779297892979929809298192982929839298492985929869298792988929899299092991929929299392994929959299692997929989299993000930019300293003930049300593006930079300893009930109301193012930139301493015930169301793018930199302093021930229302393024930259302693027930289302993030930319303293033930349303593036930379303893039930409304193042930439304493045930469304793048930499305093051930529305393054930559305693057930589305993060930619306293063930649306593066930679306893069930709307193072930739307493075930769307793078930799308093081930829308393084930859308693087930889308993090930919309293093930949309593096930979309893099931009310193102931039310493105931069310793108931099311093111931129311393114931159311693117931189311993120931219312293123931249312593126931279312893129931309313193132931339313493135931369313793138931399314093141931429314393144931459314693147931489314993150931519315293153931549315593156931579315893159931609316193162931639316493165931669316793168931699317093171931729317393174931759317693177931789317993180931819318293183931849318593186931879318893189931909319193192931939319493195931969319793198931999320093201932029320393204932059320693207932089320993210932119321293213932149321593216932179321893219932209322193222932239322493225932269322793228932299323093231932329323393234932359323693237932389323993240932419324293243932449324593246932479324893249932509325193252932539325493255932569325793258932599326093261932629326393264932659326693267932689326993270932719327293273932749327593276932779327893279932809328193282932839328493285932869328793288932899329093291932929329393294932959329693297932989329993300933019330293303933049330593306933079330893309933109331193312933139331493315933169331793318933199332093321933229332393324933259332693327933289332993330933319333293333933349333593336933379333893339933409334193342933439334493345933469334793348933499335093351933529335393354933559335693357933589335993360933619336293363933649336593366933679336893369933709337193372933739337493375933769337793378933799338093381933829338393384933859338693387933889338993390933919339293393933949339593396933979339893399934009340193402934039340493405934069340793408934099341093411934129341393414934159341693417934189341993420934219342293423934249342593426934279342893429934309343193432934339343493435934369343793438934399344093441934429344393444934459344693447934489344993450934519345293453934549345593456934579345893459934609346193462934639346493465934669346793468934699347093471934729347393474934759347693477934789347993480934819348293483934849348593486934879348893489934909349193492934939349493495934969349793498934999350093501935029350393504935059350693507935089350993510935119351293513935149351593516935179351893519935209352193522935239352493525935269352793528935299353093531935329353393534935359353693537935389353993540935419354293543935449354593546935479354893549935509355193552935539355493555935569355793558935599356093561935629356393564935659356693567935689356993570935719357293573935749357593576935779357893579935809358193582935839358493585935869358793588935899359093591935929359393594935959359693597935989359993600936019360293603936049360593606936079360893609936109361193612936139361493615936169361793618936199362093621936229362393624936259362693627936289362993630936319363293633936349363593636936379363893639936409364193642936439364493645936469364793648936499365093651936529365393654936559365693657936589365993660936619366293663936649366593666936679366893669936709367193672936739367493675936769367793678936799368093681936829368393684936859368693687936889368993690936919369293693936949369593696936979369893699937009370193702937039370493705937069370793708937099371093711937129371393714937159371693717937189371993720937219372293723937249372593726937279372893729937309373193732937339373493735937369373793738937399374093741937429374393744937459374693747937489374993750937519375293753937549375593756937579375893759937609376193762937639376493765937669376793768937699377093771937729377393774937759377693777937789377993780937819378293783937849378593786937879378893789937909379193792937939379493795937969379793798937999380093801938029380393804938059380693807938089380993810938119381293813938149381593816938179381893819938209382193822938239382493825938269382793828938299383093831938329383393834938359383693837938389383993840938419384293843938449384593846938479384893849938509385193852938539385493855938569385793858938599386093861938629386393864938659386693867938689386993870938719387293873938749387593876938779387893879938809388193882938839388493885938869388793888938899389093891938929389393894938959389693897938989389993900939019390293903939049390593906939079390893909939109391193912939139391493915939169391793918939199392093921939229392393924939259392693927939289392993930939319393293933939349393593936939379393893939939409394193942939439394493945939469394793948939499395093951939529395393954939559395693957939589395993960939619396293963939649396593966939679396893969939709397193972939739397493975939769397793978939799398093981939829398393984939859398693987939889398993990939919399293993939949399593996939979399893999940009400194002940039400494005940069400794008940099401094011940129401394014940159401694017940189401994020940219402294023940249402594026940279402894029940309403194032940339403494035940369403794038940399404094041940429404394044940459404694047940489404994050940519405294053940549405594056940579405894059940609406194062940639406494065940669406794068940699407094071940729407394074940759407694077940789407994080940819408294083940849408594086940879408894089940909409194092940939409494095940969409794098940999410094101941029410394104941059410694107941089410994110941119411294113941149411594116941179411894119941209412194122941239412494125941269412794128941299413094131941329413394134941359413694137941389413994140941419414294143941449414594146941479414894149941509415194152941539415494155941569415794158941599416094161941629416394164941659416694167941689416994170941719417294173941749417594176941779417894179941809418194182941839418494185941869418794188941899419094191941929419394194941959419694197941989419994200942019420294203942049420594206942079420894209942109421194212942139421494215942169421794218942199422094221942229422394224942259422694227942289422994230942319423294233942349423594236942379423894239942409424194242942439424494245942469424794248942499425094251942529425394254942559425694257942589425994260942619426294263942649426594266942679426894269942709427194272942739427494275942769427794278942799428094281942829428394284942859428694287942889428994290942919429294293942949429594296942979429894299943009430194302943039430494305943069430794308943099431094311943129431394314943159431694317943189431994320943219432294323943249432594326943279432894329943309433194332943339433494335943369433794338943399434094341943429434394344943459434694347943489434994350943519435294353943549435594356943579435894359943609436194362943639436494365943669436794368943699437094371943729437394374943759437694377943789437994380943819438294383943849438594386943879438894389943909439194392943939439494395943969439794398943999440094401944029440394404944059440694407944089440994410944119441294413944149441594416944179441894419944209442194422944239442494425944269442794428944299443094431944329443394434944359443694437944389443994440944419444294443944449444594446944479444894449944509445194452944539445494455944569445794458944599446094461944629446394464944659446694467944689446994470944719447294473944749447594476944779447894479944809448194482944839448494485944869448794488944899449094491944929449394494944959449694497944989449994500945019450294503945049450594506945079450894509945109451194512945139451494515945169451794518945199452094521945229452394524945259452694527945289452994530945319453294533945349453594536945379453894539945409454194542945439454494545945469454794548945499455094551945529455394554945559455694557945589455994560945619456294563945649456594566945679456894569945709457194572945739457494575945769457794578945799458094581945829458394584945859458694587945889458994590945919459294593945949459594596945979459894599946009460194602946039460494605946069460794608946099461094611946129461394614946159461694617946189461994620946219462294623946249462594626946279462894629946309463194632946339463494635946369463794638946399464094641946429464394644946459464694647946489464994650946519465294653946549465594656946579465894659946609466194662946639466494665946669466794668946699467094671946729467394674946759467694677946789467994680946819468294683946849468594686946879468894689946909469194692946939469494695946969469794698946999470094701947029470394704947059470694707947089470994710947119471294713947149471594716947179471894719947209472194722947239472494725947269472794728947299473094731947329473394734947359473694737947389473994740947419474294743947449474594746947479474894749947509475194752947539475494755947569475794758947599476094761947629476394764947659476694767947689476994770947719477294773947749477594776947779477894779947809478194782947839478494785947869478794788947899479094791947929479394794947959479694797947989479994800948019480294803948049480594806948079480894809948109481194812948139481494815948169481794818948199482094821948229482394824948259482694827948289482994830948319483294833948349483594836948379483894839948409484194842948439484494845948469484794848948499485094851948529485394854948559485694857948589485994860948619486294863948649486594866948679486894869948709487194872948739487494875948769487794878948799488094881948829488394884948859488694887948889488994890948919489294893948949489594896948979489894899949009490194902949039490494905949069490794908949099491094911949129491394914949159491694917949189491994920949219492294923949249492594926949279492894929949309493194932949339493494935949369493794938949399494094941949429494394944949459494694947949489494994950949519495294953949549495594956949579495894959949609496194962949639496494965949669496794968949699497094971949729497394974949759497694977949789497994980949819498294983949849498594986949879498894989949909499194992949939499494995949969499794998949999500095001950029500395004950059500695007950089500995010950119501295013950149501595016950179501895019950209502195022950239502495025950269502795028950299503095031950329503395034950359503695037950389503995040950419504295043950449504595046950479504895049950509505195052950539505495055950569505795058950599506095061950629506395064950659506695067950689506995070950719507295073950749507595076950779507895079950809508195082950839508495085950869508795088950899509095091950929509395094950959509695097950989509995100951019510295103951049510595106951079510895109951109511195112951139511495115951169511795118951199512095121951229512395124951259512695127951289512995130951319513295133951349513595136951379513895139951409514195142951439514495145951469514795148951499515095151951529515395154951559515695157951589515995160951619516295163951649516595166951679516895169951709517195172951739517495175951769517795178951799518095181951829518395184951859518695187951889518995190951919519295193951949519595196951979519895199952009520195202952039520495205952069520795208952099521095211952129521395214952159521695217952189521995220952219522295223952249522595226952279522895229952309523195232952339523495235952369523795238952399524095241952429524395244952459524695247952489524995250952519525295253952549525595256952579525895259952609526195262952639526495265952669526795268952699527095271952729527395274952759527695277952789527995280952819528295283952849528595286952879528895289952909529195292952939529495295952969529795298952999530095301953029530395304953059530695307953089530995310953119531295313953149531595316953179531895319953209532195322953239532495325953269532795328953299533095331953329533395334953359533695337953389533995340953419534295343953449534595346953479534895349953509535195352953539535495355953569535795358953599536095361953629536395364953659536695367953689536995370953719537295373953749537595376953779537895379953809538195382953839538495385953869538795388953899539095391953929539395394953959539695397953989539995400954019540295403954049540595406954079540895409954109541195412954139541495415954169541795418954199542095421954229542395424954259542695427954289542995430954319543295433954349543595436954379543895439954409544195442954439544495445954469544795448954499545095451954529545395454954559545695457954589545995460954619546295463954649546595466954679546895469954709547195472954739547495475954769547795478954799548095481954829548395484954859548695487954889548995490954919549295493954949549595496954979549895499955009550195502955039550495505955069550795508955099551095511955129551395514955159551695517955189551995520955219552295523955249552595526955279552895529955309553195532955339553495535955369553795538955399554095541955429554395544955459554695547955489554995550955519555295553955549555595556955579555895559955609556195562955639556495565955669556795568955699557095571955729557395574955759557695577955789557995580955819558295583955849558595586955879558895589955909559195592955939559495595955969559795598955999560095601956029560395604956059560695607956089560995610956119561295613956149561595616956179561895619956209562195622956239562495625956269562795628956299563095631956329563395634956359563695637956389563995640956419564295643956449564595646956479564895649956509565195652956539565495655956569565795658956599566095661956629566395664956659566695667956689566995670956719567295673956749567595676956779567895679956809568195682956839568495685956869568795688956899569095691956929569395694956959569695697956989569995700957019570295703957049570595706957079570895709957109571195712957139571495715957169571795718957199572095721957229572395724957259572695727957289572995730957319573295733957349573595736957379573895739957409574195742957439574495745957469574795748957499575095751957529575395754957559575695757957589575995760957619576295763957649576595766957679576895769957709577195772957739577495775957769577795778957799578095781957829578395784957859578695787957889578995790957919579295793957949579595796957979579895799958009580195802958039580495805958069580795808958099581095811958129581395814958159581695817958189581995820958219582295823958249582595826958279582895829958309583195832958339583495835958369583795838958399584095841958429584395844958459584695847958489584995850958519585295853958549585595856958579585895859958609586195862958639586495865958669586795868958699587095871958729587395874958759587695877958789587995880958819588295883958849588595886958879588895889958909589195892958939589495895958969589795898958999590095901959029590395904959059590695907959089590995910959119591295913959149591595916959179591895919959209592195922959239592495925959269592795928959299593095931959329593395934959359593695937959389593995940959419594295943959449594595946959479594895949959509595195952959539595495955959569595795958959599596095961959629596395964959659596695967959689596995970959719597295973959749597595976959779597895979959809598195982959839598495985959869598795988959899599095991959929599395994959959599695997959989599996000960019600296003960049600596006960079600896009960109601196012960139601496015960169601796018960199602096021960229602396024960259602696027960289602996030960319603296033960349603596036960379603896039960409604196042960439604496045960469604796048960499605096051960529605396054960559605696057960589605996060960619606296063960649606596066960679606896069960709607196072960739607496075960769607796078960799608096081960829608396084960859608696087960889608996090960919609296093960949609596096960979609896099961009610196102961039610496105961069610796108961099611096111961129611396114961159611696117961189611996120961219612296123961249612596126961279612896129961309613196132961339613496135961369613796138961399614096141961429614396144961459614696147961489614996150961519615296153961549615596156961579615896159961609616196162961639616496165961669616796168961699617096171961729617396174961759617696177961789617996180961819618296183961849618596186961879618896189961909619196192961939619496195961969619796198961999620096201962029620396204962059620696207962089620996210962119621296213962149621596216962179621896219962209622196222962239622496225962269622796228962299623096231962329623396234962359623696237962389623996240962419624296243962449624596246962479624896249962509625196252962539625496255962569625796258962599626096261962629626396264962659626696267962689626996270962719627296273962749627596276962779627896279962809628196282962839628496285962869628796288962899629096291962929629396294962959629696297962989629996300963019630296303963049630596306963079630896309963109631196312963139631496315963169631796318963199632096321963229632396324963259632696327963289632996330963319633296333963349633596336963379633896339963409634196342963439634496345963469634796348963499635096351963529635396354963559635696357963589635996360963619636296363963649636596366963679636896369963709637196372963739637496375963769637796378963799638096381963829638396384963859638696387963889638996390963919639296393963949639596396963979639896399964009640196402964039640496405964069640796408964099641096411964129641396414964159641696417964189641996420964219642296423964249642596426964279642896429964309643196432964339643496435964369643796438964399644096441964429644396444964459644696447964489644996450964519645296453964549645596456964579645896459964609646196462964639646496465964669646796468964699647096471964729647396474964759647696477964789647996480964819648296483964849648596486964879648896489964909649196492964939649496495964969649796498964999650096501965029650396504965059650696507965089650996510965119651296513965149651596516965179651896519965209652196522965239652496525965269652796528965299653096531965329653396534965359653696537965389653996540965419654296543965449654596546965479654896549965509655196552965539655496555965569655796558965599656096561965629656396564965659656696567965689656996570965719657296573965749657596576965779657896579965809658196582965839658496585965869658796588965899659096591965929659396594965959659696597965989659996600966019660296603966049660596606966079660896609966109661196612966139661496615966169661796618966199662096621966229662396624966259662696627966289662996630966319663296633966349663596636966379663896639966409664196642966439664496645966469664796648966499665096651966529665396654966559665696657966589665996660966619666296663966649666596666966679666896669966709667196672966739667496675966769667796678966799668096681966829668396684966859668696687966889668996690966919669296693966949669596696966979669896699967009670196702967039670496705967069670796708967099671096711967129671396714967159671696717967189671996720967219672296723967249672596726967279672896729967309673196732967339673496735967369673796738967399674096741967429674396744967459674696747967489674996750967519675296753967549675596756967579675896759967609676196762967639676496765967669676796768967699677096771967729677396774967759677696777967789677996780967819678296783967849678596786967879678896789967909679196792967939679496795967969679796798967999680096801968029680396804968059680696807968089680996810968119681296813968149681596816968179681896819968209682196822968239682496825968269682796828968299683096831968329683396834968359683696837968389683996840968419684296843968449684596846968479684896849968509685196852968539685496855968569685796858968599686096861968629686396864968659686696867968689686996870968719687296873968749687596876968779687896879968809688196882968839688496885968869688796888968899689096891968929689396894968959689696897968989689996900969019690296903969049690596906969079690896909969109691196912969139691496915969169691796918969199692096921969229692396924969259692696927969289692996930969319693296933969349693596936969379693896939969409694196942969439694496945969469694796948969499695096951969529695396954969559695696957969589695996960969619696296963969649696596966969679696896969969709697196972969739697496975969769697796978969799698096981969829698396984969859698696987969889698996990969919699296993969949699596996969979699896999970009700197002970039700497005970069700797008970099701097011970129701397014970159701697017970189701997020970219702297023970249702597026970279702897029970309703197032970339703497035970369703797038970399704097041970429704397044970459704697047970489704997050970519705297053970549705597056970579705897059970609706197062970639706497065970669706797068970699707097071970729707397074970759707697077970789707997080970819708297083970849708597086970879708897089970909709197092970939709497095970969709797098970999710097101971029710397104971059710697107971089710997110971119711297113971149711597116971179711897119971209712197122971239712497125971269712797128971299713097131971329713397134971359713697137971389713997140971419714297143971449714597146971479714897149971509715197152971539715497155971569715797158971599716097161971629716397164971659716697167971689716997170971719717297173971749717597176971779717897179971809718197182971839718497185971869718797188971899719097191971929719397194971959719697197971989719997200972019720297203972049720597206972079720897209972109721197212972139721497215972169721797218972199722097221972229722397224972259722697227972289722997230972319723297233972349723597236972379723897239972409724197242972439724497245972469724797248972499725097251972529725397254972559725697257972589725997260972619726297263972649726597266972679726897269972709727197272972739727497275972769727797278972799728097281972829728397284972859728697287972889728997290972919729297293972949729597296972979729897299973009730197302973039730497305973069730797308973099731097311973129731397314973159731697317973189731997320973219732297323973249732597326973279732897329973309733197332973339733497335973369733797338973399734097341973429734397344973459734697347973489734997350973519735297353973549735597356973579735897359973609736197362973639736497365973669736797368973699737097371973729737397374973759737697377973789737997380973819738297383973849738597386973879738897389973909739197392973939739497395973969739797398973999740097401974029740397404974059740697407974089740997410974119741297413974149741597416974179741897419974209742197422974239742497425974269742797428974299743097431974329743397434974359743697437974389743997440974419744297443974449744597446974479744897449974509745197452974539745497455974569745797458974599746097461974629746397464974659746697467974689746997470974719747297473974749747597476974779747897479974809748197482974839748497485974869748797488974899749097491974929749397494974959749697497974989749997500975019750297503975049750597506975079750897509975109751197512975139751497515975169751797518975199752097521975229752397524975259752697527975289752997530975319753297533975349753597536975379753897539975409754197542975439754497545975469754797548975499755097551975529755397554975559755697557975589755997560975619756297563975649756597566975679756897569975709757197572975739757497575975769757797578975799758097581975829758397584975859758697587975889758997590975919759297593975949759597596975979759897599976009760197602976039760497605976069760797608976099761097611976129761397614976159761697617976189761997620976219762297623976249762597626976279762897629976309763197632976339763497635976369763797638976399764097641976429764397644976459764697647976489764997650976519765297653976549765597656976579765897659976609766197662976639766497665976669766797668976699767097671976729767397674976759767697677976789767997680976819768297683976849768597686976879768897689976909769197692976939769497695976969769797698976999770097701977029770397704977059770697707977089770997710977119771297713977149771597716977179771897719977209772197722977239772497725977269772797728977299773097731977329773397734977359773697737977389773997740977419774297743977449774597746977479774897749977509775197752977539775497755977569775797758977599776097761977629776397764977659776697767977689776997770977719777297773977749777597776977779777897779977809778197782977839778497785977869778797788977899779097791977929779397794977959779697797977989779997800978019780297803978049780597806978079780897809978109781197812978139781497815978169781797818978199782097821978229782397824978259782697827978289782997830978319783297833978349783597836978379783897839978409784197842978439784497845978469784797848978499785097851978529785397854978559785697857978589785997860978619786297863978649786597866978679786897869978709787197872978739787497875978769787797878978799788097881978829788397884978859788697887978889788997890978919789297893978949789597896978979789897899979009790197902979039790497905979069790797908979099791097911979129791397914979159791697917979189791997920979219792297923979249792597926979279792897929979309793197932979339793497935979369793797938979399794097941979429794397944979459794697947979489794997950979519795297953979549795597956979579795897959979609796197962979639796497965979669796797968979699797097971979729797397974979759797697977979789797997980979819798297983979849798597986979879798897989979909799197992979939799497995979969799797998979999800098001980029800398004980059800698007980089800998010980119801298013980149801598016980179801898019980209802198022980239802498025980269802798028980299803098031980329803398034980359803698037980389803998040980419804298043980449804598046980479804898049980509805198052980539805498055980569805798058980599806098061980629806398064980659806698067980689806998070980719807298073980749807598076980779807898079980809808198082980839808498085980869808798088980899809098091980929809398094980959809698097980989809998100981019810298103981049810598106981079810898109981109811198112981139811498115981169811798118981199812098121981229812398124981259812698127981289812998130981319813298133981349813598136981379813898139981409814198142981439814498145981469814798148981499815098151981529815398154981559815698157981589815998160981619816298163981649816598166981679816898169981709817198172981739817498175981769817798178981799818098181981829818398184981859818698187981889818998190981919819298193981949819598196981979819898199982009820198202982039820498205982069820798208982099821098211982129821398214982159821698217982189821998220982219822298223982249822598226982279822898229982309823198232982339823498235982369823798238982399824098241982429824398244982459824698247982489824998250982519825298253982549825598256982579825898259982609826198262982639826498265982669826798268982699827098271982729827398274982759827698277982789827998280982819828298283982849828598286982879828898289982909829198292982939829498295982969829798298982999830098301983029830398304983059830698307983089830998310983119831298313983149831598316983179831898319983209832198322983239832498325983269832798328983299833098331983329833398334983359833698337983389833998340983419834298343983449834598346983479834898349983509835198352983539835498355983569835798358983599836098361983629836398364983659836698367983689836998370983719837298373983749837598376983779837898379983809838198382983839838498385983869838798388983899839098391983929839398394983959839698397983989839998400984019840298403984049840598406984079840898409984109841198412984139841498415984169841798418984199842098421984229842398424984259842698427984289842998430984319843298433984349843598436984379843898439984409844198442984439844498445984469844798448984499845098451984529845398454984559845698457984589845998460984619846298463984649846598466984679846898469984709847198472984739847498475984769847798478984799848098481984829848398484984859848698487984889848998490984919849298493984949849598496984979849898499985009850198502985039850498505985069850798508985099851098511985129851398514985159851698517985189851998520985219852298523985249852598526985279852898529985309853198532985339853498535985369853798538985399854098541985429854398544985459854698547985489854998550985519855298553985549855598556985579855898559985609856198562985639856498565985669856798568985699857098571985729857398574985759857698577985789857998580985819858298583985849858598586985879858898589985909859198592985939859498595985969859798598985999860098601986029860398604986059860698607986089860998610986119861298613986149861598616986179861898619986209862198622986239862498625986269862798628986299863098631986329863398634986359863698637986389863998640986419864298643986449864598646986479864898649986509865198652986539865498655986569865798658986599866098661986629866398664986659866698667986689866998670986719867298673986749867598676986779867898679986809868198682986839868498685986869868798688986899869098691986929869398694986959869698697986989869998700987019870298703987049870598706987079870898709987109871198712987139871498715987169871798718987199872098721987229872398724987259872698727987289872998730987319873298733987349873598736987379873898739987409874198742987439874498745987469874798748987499875098751987529875398754987559875698757987589875998760987619876298763987649876598766987679876898769987709877198772987739877498775987769877798778987799878098781987829878398784987859878698787987889878998790987919879298793987949879598796987979879898799988009880198802988039880498805988069880798808988099881098811988129881398814988159881698817988189881998820988219882298823988249882598826988279882898829988309883198832988339883498835988369883798838988399884098841988429884398844988459884698847988489884998850988519885298853988549885598856988579885898859988609886198862988639886498865988669886798868988699887098871988729887398874988759887698877988789887998880988819888298883988849888598886988879888898889988909889198892988939889498895988969889798898988999890098901989029890398904989059890698907989089890998910989119891298913989149891598916989179891898919989209892198922989239892498925989269892798928989299893098931989329893398934989359893698937989389893998940989419894298943989449894598946989479894898949989509895198952989539895498955989569895798958989599896098961989629896398964989659896698967989689896998970989719897298973989749897598976989779897898979989809898198982989839898498985989869898798988989899899098991989929899398994989959899698997989989899999000990019900299003990049900599006990079900899009990109901199012990139901499015990169901799018990199902099021990229902399024990259902699027990289902999030990319903299033990349903599036990379903899039990409904199042990439904499045990469904799048990499905099051990529905399054990559905699057990589905999060990619906299063990649906599066990679906899069990709907199072990739907499075990769907799078990799908099081990829908399084990859908699087990889908999090990919909299093990949909599096990979909899099991009910199102991039910499105991069910799108991099911099111991129911399114991159911699117991189911999120991219912299123991249912599126991279912899129991309913199132991339913499135991369913799138991399914099141991429914399144991459914699147991489914999150991519915299153991549915599156991579915899159991609916199162991639916499165991669916799168991699917099171991729917399174991759917699177991789917999180991819918299183991849918599186991879918899189991909919199192991939919499195991969919799198991999920099201992029920399204992059920699207992089920999210992119921299213992149921599216992179921899219992209922199222992239922499225992269922799228992299923099231992329923399234992359923699237992389923999240992419924299243992449924599246992479924899249992509925199252992539925499255992569925799258992599926099261992629926399264992659926699267992689926999270992719927299273992749927599276992779927899279992809928199282992839928499285992869928799288992899929099291992929929399294992959929699297992989929999300993019930299303993049930599306993079930899309993109931199312993139931499315993169931799318993199932099321993229932399324993259932699327993289932999330993319933299333993349933599336993379933899339993409934199342993439934499345993469934799348993499935099351993529935399354993559935699357993589935999360993619936299363993649936599366993679936899369993709937199372993739937499375993769937799378993799938099381993829938399384993859938699387993889938999390993919939299393993949939599396993979939899399994009940199402994039940499405994069940799408994099941099411994129941399414994159941699417994189941999420994219942299423994249942599426994279942899429994309943199432994339943499435994369943799438994399944099441994429944399444994459944699447994489944999450994519945299453994549945599456994579945899459994609946199462994639946499465994669946799468994699947099471994729947399474994759947699477994789947999480994819948299483994849948599486994879948899489994909949199492994939949499495994969949799498994999950099501995029950399504995059950699507995089950999510995119951299513995149951599516995179951899519995209952199522995239952499525995269952799528995299953099531995329953399534995359953699537995389953999540995419954299543995449954599546995479954899549995509955199552995539955499555995569955799558995599956099561995629956399564995659956699567995689956999570995719957299573995749957599576995779957899579995809958199582995839958499585995869958799588995899959099591995929959399594995959959699597995989959999600996019960299603996049960599606996079960899609996109961199612996139961499615996169961799618996199962099621996229962399624996259962699627996289962999630996319963299633996349963599636996379963899639996409964199642996439964499645996469964799648996499965099651996529965399654996559965699657996589965999660996619966299663996649966599666996679966899669996709967199672996739967499675996769967799678996799968099681996829968399684996859968699687996889968999690996919969299693996949969599696996979969899699997009970199702997039970499705997069970799708997099971099711997129971399714997159971699717997189971999720997219972299723997249972599726997279972899729997309973199732997339973499735997369973799738997399974099741997429974399744997459974699747997489974999750997519975299753997549975599756997579975899759997609976199762997639976499765997669976799768997699977099771997729977399774997759977699777997789977999780997819978299783997849978599786997879978899789997909979199792997939979499795997969979799798997999980099801998029980399804998059980699807998089980999810998119981299813998149981599816998179981899819998209982199822998239982499825998269982799828998299983099831998329983399834998359983699837998389983999840998419984299843998449984599846998479984899849998509985199852998539985499855998569985799858998599986099861998629986399864998659986699867998689986999870998719987299873998749987599876998779987899879998809988199882998839988499885998869988799888998899989099891998929989399894998959989699897998989989999900999019990299903999049990599906999079990899909999109991199912999139991499915999169991799918999199992099921999229992399924999259992699927999289992999930999319993299933999349993599936999379993899939999409994199942999439994499945999469994799948999499995099951999529995399954999559995699957999589995999960999619996299963999649996599966999679996899969999709997199972999739997499975999769997799978999799998099981999829998399984999859998699987999889998999990999919999299993999949999599996999979999899999100000100001100002100003100004100005100006100007100008100009100010100011100012100013100014100015100016100017100018100019100020100021100022100023100024100025100026100027100028100029100030100031100032100033100034100035100036100037100038100039100040100041100042100043100044100045100046100047100048100049100050100051100052100053100054100055100056100057100058100059100060100061100062100063100064100065100066100067100068100069100070100071100072100073100074100075100076100077100078100079100080100081100082100083100084100085100086100087100088100089100090100091100092100093100094100095100096100097100098100099100100100101100102100103100104100105100106100107100108100109100110100111100112100113100114100115100116100117100118100119100120100121100122100123100124100125100126100127100128100129100130100131100132100133100134100135100136100137100138100139100140100141100142100143100144100145100146100147100148100149100150100151100152100153100154100155100156100157100158100159100160100161100162100163100164100165100166100167100168100169100170100171100172100173100174100175100176100177100178100179100180100181100182100183100184100185100186100187100188100189100190100191100192100193100194100195100196100197100198100199100200100201100202100203100204100205100206100207100208100209100210100211100212100213100214 |
- #!/usr/bin/env node
- (function(define, require){
- define(function (requirejs) {
- var module = void 0; // Bad UMDs workaround
- requirejs.resolve = require.resolve;
- require = requirejs;
- /*!
- * @overview es6-promise - a tiny implementation of Promises/A+.
- * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
- * @license Licensed under MIT license
- * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
- * @version v4.2.8+1e68dce6
- */
- (function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
- typeof define === 'function' && define.amd ? define('amber/es6-promise',factory) :
- (global.ES6Promise = factory());
- }(this, (function () { 'use strict';
- function objectOrFunction(x) {
- var type = typeof x;
- return x !== null && (type === 'object' || type === 'function');
- }
- function isFunction(x) {
- return typeof x === 'function';
- }
- var _isArray = void 0;
- if (Array.isArray) {
- _isArray = Array.isArray;
- } else {
- _isArray = function (x) {
- return Object.prototype.toString.call(x) === '[object Array]';
- };
- }
- var isArray = _isArray;
- var len = 0;
- var vertxNext = void 0;
- var customSchedulerFn = void 0;
- var asap = function asap(callback, arg) {
- queue[len] = callback;
- queue[len + 1] = arg;
- len += 2;
- if (len === 2) {
- // If len is 2, that means that we need to schedule an async flush.
- // If additional callbacks are queued before the queue is flushed, they
- // will be processed by this flush that we are scheduling.
- if (customSchedulerFn) {
- customSchedulerFn(flush);
- } else {
- scheduleFlush();
- }
- }
- };
- function setScheduler(scheduleFn) {
- customSchedulerFn = scheduleFn;
- }
- function setAsap(asapFn) {
- asap = asapFn;
- }
- var browserWindow = typeof window !== 'undefined' ? window : undefined;
- var browserGlobal = browserWindow || {};
- var BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;
- var isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';
- // test for web worker but not in IE10
- var isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';
- // node
- function useNextTick() {
- // node version 0.10.x displays a deprecation warning when nextTick is used recursively
- // see https://github.com/cujojs/when/issues/410 for details
- return function () {
- return process.nextTick(flush);
- };
- }
- // vertx
- function useVertxTimer() {
- if (typeof vertxNext !== 'undefined') {
- return function () {
- vertxNext(flush);
- };
- }
- return useSetTimeout();
- }
- function useMutationObserver() {
- var iterations = 0;
- var observer = new BrowserMutationObserver(flush);
- var node = document.createTextNode('');
- observer.observe(node, { characterData: true });
- return function () {
- node.data = iterations = ++iterations % 2;
- };
- }
- // web worker
- function useMessageChannel() {
- var channel = new MessageChannel();
- channel.port1.onmessage = flush;
- return function () {
- return channel.port2.postMessage(0);
- };
- }
- function useSetTimeout() {
- // Store setTimeout reference so es6-promise will be unaffected by
- // other code modifying setTimeout (like sinon.useFakeTimers())
- var globalSetTimeout = setTimeout;
- return function () {
- return globalSetTimeout(flush, 1);
- };
- }
- var queue = new Array(1000);
- function flush() {
- for (var i = 0; i < len; i += 2) {
- var callback = queue[i];
- var arg = queue[i + 1];
- callback(arg);
- queue[i] = undefined;
- queue[i + 1] = undefined;
- }
- len = 0;
- }
- function attemptVertx() {
- try {
- var vertx = Function('return this')().require('vertx');
- vertxNext = vertx.runOnLoop || vertx.runOnContext;
- return useVertxTimer();
- } catch (e) {
- return useSetTimeout();
- }
- }
- var scheduleFlush = void 0;
- // Decide what async method to use to triggering processing of queued callbacks:
- if (isNode) {
- scheduleFlush = useNextTick();
- } else if (BrowserMutationObserver) {
- scheduleFlush = useMutationObserver();
- } else if (isWorker) {
- scheduleFlush = useMessageChannel();
- } else if (browserWindow === undefined && typeof require === 'function') {
- scheduleFlush = attemptVertx();
- } else {
- scheduleFlush = useSetTimeout();
- }
- function then(onFulfillment, onRejection) {
- var parent = this;
- var child = new this.constructor(noop);
- if (child[PROMISE_ID] === undefined) {
- makePromise(child);
- }
- var _state = parent._state;
- if (_state) {
- var callback = arguments[_state - 1];
- asap(function () {
- return invokeCallback(_state, child, callback, parent._result);
- });
- } else {
- subscribe(parent, child, onFulfillment, onRejection);
- }
- return child;
- }
- /**
- `Promise.resolve` returns a promise that will become resolved with the
- passed `value`. It is shorthand for the following:
- ```javascript
- let promise = new Promise(function(resolve, reject){
- resolve(1);
- });
- promise.then(function(value){
- // value === 1
- });
- ```
- Instead of writing the above, your code now simply becomes the following:
- ```javascript
- let promise = Promise.resolve(1);
- promise.then(function(value){
- // value === 1
- });
- ```
- @method resolve
- @static
- @param {Any} value value that the returned promise will be resolved with
- Useful for tooling.
- @return {Promise} a promise that will become fulfilled with the given
- `value`
- */
- function resolve$1(object) {
- /*jshint validthis:true */
- var Constructor = this;
- if (object && typeof object === 'object' && object.constructor === Constructor) {
- return object;
- }
- var promise = new Constructor(noop);
- resolve(promise, object);
- return promise;
- }
- var PROMISE_ID = Math.random().toString(36).substring(2);
- function noop() {}
- var PENDING = void 0;
- var FULFILLED = 1;
- var REJECTED = 2;
- function selfFulfillment() {
- return new TypeError("You cannot resolve a promise with itself");
- }
- function cannotReturnOwn() {
- return new TypeError('A promises callback cannot return that same promise.');
- }
- function tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {
- try {
- then$$1.call(value, fulfillmentHandler, rejectionHandler);
- } catch (e) {
- return e;
- }
- }
- function handleForeignThenable(promise, thenable, then$$1) {
- asap(function (promise) {
- var sealed = false;
- var error = tryThen(then$$1, thenable, function (value) {
- if (sealed) {
- return;
- }
- sealed = true;
- if (thenable !== value) {
- resolve(promise, value);
- } else {
- fulfill(promise, value);
- }
- }, function (reason) {
- if (sealed) {
- return;
- }
- sealed = true;
- reject(promise, reason);
- }, 'Settle: ' + (promise._label || ' unknown promise'));
- if (!sealed && error) {
- sealed = true;
- reject(promise, error);
- }
- }, promise);
- }
- function handleOwnThenable(promise, thenable) {
- if (thenable._state === FULFILLED) {
- fulfill(promise, thenable._result);
- } else if (thenable._state === REJECTED) {
- reject(promise, thenable._result);
- } else {
- subscribe(thenable, undefined, function (value) {
- return resolve(promise, value);
- }, function (reason) {
- return reject(promise, reason);
- });
- }
- }
- function handleMaybeThenable(promise, maybeThenable, then$$1) {
- if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {
- handleOwnThenable(promise, maybeThenable);
- } else {
- if (then$$1 === undefined) {
- fulfill(promise, maybeThenable);
- } else if (isFunction(then$$1)) {
- handleForeignThenable(promise, maybeThenable, then$$1);
- } else {
- fulfill(promise, maybeThenable);
- }
- }
- }
- function resolve(promise, value) {
- if (promise === value) {
- reject(promise, selfFulfillment());
- } else if (objectOrFunction(value)) {
- var then$$1 = void 0;
- try {
- then$$1 = value.then;
- } catch (error) {
- reject(promise, error);
- return;
- }
- handleMaybeThenable(promise, value, then$$1);
- } else {
- fulfill(promise, value);
- }
- }
- function publishRejection(promise) {
- if (promise._onerror) {
- promise._onerror(promise._result);
- }
- publish(promise);
- }
- function fulfill(promise, value) {
- if (promise._state !== PENDING) {
- return;
- }
- promise._result = value;
- promise._state = FULFILLED;
- if (promise._subscribers.length !== 0) {
- asap(publish, promise);
- }
- }
- function reject(promise, reason) {
- if (promise._state !== PENDING) {
- return;
- }
- promise._state = REJECTED;
- promise._result = reason;
- asap(publishRejection, promise);
- }
- function subscribe(parent, child, onFulfillment, onRejection) {
- var _subscribers = parent._subscribers;
- var length = _subscribers.length;
- parent._onerror = null;
- _subscribers[length] = child;
- _subscribers[length + FULFILLED] = onFulfillment;
- _subscribers[length + REJECTED] = onRejection;
- if (length === 0 && parent._state) {
- asap(publish, parent);
- }
- }
- function publish(promise) {
- var subscribers = promise._subscribers;
- var settled = promise._state;
- if (subscribers.length === 0) {
- return;
- }
- var child = void 0,
- callback = void 0,
- detail = promise._result;
- for (var i = 0; i < subscribers.length; i += 3) {
- child = subscribers[i];
- callback = subscribers[i + settled];
- if (child) {
- invokeCallback(settled, child, callback, detail);
- } else {
- callback(detail);
- }
- }
- promise._subscribers.length = 0;
- }
- function invokeCallback(settled, promise, callback, detail) {
- var hasCallback = isFunction(callback),
- value = void 0,
- error = void 0,
- succeeded = true;
- if (hasCallback) {
- try {
- value = callback(detail);
- } catch (e) {
- succeeded = false;
- error = e;
- }
- if (promise === value) {
- reject(promise, cannotReturnOwn());
- return;
- }
- } else {
- value = detail;
- }
- if (promise._state !== PENDING) {
- // noop
- } else if (hasCallback && succeeded) {
- resolve(promise, value);
- } else if (succeeded === false) {
- reject(promise, error);
- } else if (settled === FULFILLED) {
- fulfill(promise, value);
- } else if (settled === REJECTED) {
- reject(promise, value);
- }
- }
- function initializePromise(promise, resolver) {
- try {
- resolver(function resolvePromise(value) {
- resolve(promise, value);
- }, function rejectPromise(reason) {
- reject(promise, reason);
- });
- } catch (e) {
- reject(promise, e);
- }
- }
- var id = 0;
- function nextId() {
- return id++;
- }
- function makePromise(promise) {
- promise[PROMISE_ID] = id++;
- promise._state = undefined;
- promise._result = undefined;
- promise._subscribers = [];
- }
- function validationError() {
- return new Error('Array Methods must be provided an Array');
- }
- var Enumerator = function () {
- function Enumerator(Constructor, input) {
- this._instanceConstructor = Constructor;
- this.promise = new Constructor(noop);
- if (!this.promise[PROMISE_ID]) {
- makePromise(this.promise);
- }
- if (isArray(input)) {
- this.length = input.length;
- this._remaining = input.length;
- this._result = new Array(this.length);
- if (this.length === 0) {
- fulfill(this.promise, this._result);
- } else {
- this.length = this.length || 0;
- this._enumerate(input);
- if (this._remaining === 0) {
- fulfill(this.promise, this._result);
- }
- }
- } else {
- reject(this.promise, validationError());
- }
- }
- Enumerator.prototype._enumerate = function _enumerate(input) {
- for (var i = 0; this._state === PENDING && i < input.length; i++) {
- this._eachEntry(input[i], i);
- }
- };
- Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {
- var c = this._instanceConstructor;
- var resolve$$1 = c.resolve;
- if (resolve$$1 === resolve$1) {
- var _then = void 0;
- var error = void 0;
- var didError = false;
- try {
- _then = entry.then;
- } catch (e) {
- didError = true;
- error = e;
- }
- if (_then === then && entry._state !== PENDING) {
- this._settledAt(entry._state, i, entry._result);
- } else if (typeof _then !== 'function') {
- this._remaining--;
- this._result[i] = entry;
- } else if (c === Promise$1) {
- var promise = new c(noop);
- if (didError) {
- reject(promise, error);
- } else {
- handleMaybeThenable(promise, entry, _then);
- }
- this._willSettleAt(promise, i);
- } else {
- this._willSettleAt(new c(function (resolve$$1) {
- return resolve$$1(entry);
- }), i);
- }
- } else {
- this._willSettleAt(resolve$$1(entry), i);
- }
- };
- Enumerator.prototype._settledAt = function _settledAt(state, i, value) {
- var promise = this.promise;
- if (promise._state === PENDING) {
- this._remaining--;
- if (state === REJECTED) {
- reject(promise, value);
- } else {
- this._result[i] = value;
- }
- }
- if (this._remaining === 0) {
- fulfill(promise, this._result);
- }
- };
- Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {
- var enumerator = this;
- subscribe(promise, undefined, function (value) {
- return enumerator._settledAt(FULFILLED, i, value);
- }, function (reason) {
- return enumerator._settledAt(REJECTED, i, reason);
- });
- };
- return Enumerator;
- }();
- /**
- `Promise.all` accepts an array of promises, and returns a new promise which
- is fulfilled with an array of fulfillment values for the passed promises, or
- rejected with the reason of the first passed promise to be rejected. It casts all
- elements of the passed iterable to promises as it runs this algorithm.
- Example:
- ```javascript
- let promise1 = resolve(1);
- let promise2 = resolve(2);
- let promise3 = resolve(3);
- let promises = [ promise1, promise2, promise3 ];
- Promise.all(promises).then(function(array){
- // The array here would be [ 1, 2, 3 ];
- });
- ```
- If any of the `promises` given to `all` are rejected, the first promise
- that is rejected will be given as an argument to the returned promises's
- rejection handler. For example:
- Example:
- ```javascript
- let promise1 = resolve(1);
- let promise2 = reject(new Error("2"));
- let promise3 = reject(new Error("3"));
- let promises = [ promise1, promise2, promise3 ];
- Promise.all(promises).then(function(array){
- // Code here never runs because there are rejected promises!
- }, function(error) {
- // error.message === "2"
- });
- ```
- @method all
- @static
- @param {Array} entries array of promises
- @param {String} label optional string for labeling the promise.
- Useful for tooling.
- @return {Promise} promise that is fulfilled when all `promises` have been
- fulfilled, or rejected if any of them become rejected.
- @static
- */
- function all(entries) {
- return new Enumerator(this, entries).promise;
- }
- /**
- `Promise.race` returns a new promise which is settled in the same way as the
- first passed promise to settle.
- Example:
- ```javascript
- let promise1 = new Promise(function(resolve, reject){
- setTimeout(function(){
- resolve('promise 1');
- }, 200);
- });
- let promise2 = new Promise(function(resolve, reject){
- setTimeout(function(){
- resolve('promise 2');
- }, 100);
- });
- Promise.race([promise1, promise2]).then(function(result){
- // result === 'promise 2' because it was resolved before promise1
- // was resolved.
- });
- ```
- `Promise.race` is deterministic in that only the state of the first
- settled promise matters. For example, even if other promises given to the
- `promises` array argument are resolved, but the first settled promise has
- become rejected before the other promises became fulfilled, the returned
- promise will become rejected:
- ```javascript
- let promise1 = new Promise(function(resolve, reject){
- setTimeout(function(){
- resolve('promise 1');
- }, 200);
- });
- let promise2 = new Promise(function(resolve, reject){
- setTimeout(function(){
- reject(new Error('promise 2'));
- }, 100);
- });
- Promise.race([promise1, promise2]).then(function(result){
- // Code here never runs
- }, function(reason){
- // reason.message === 'promise 2' because promise 2 became rejected before
- // promise 1 became fulfilled
- });
- ```
- An example real-world use case is implementing timeouts:
- ```javascript
- Promise.race([ajax('foo.json'), timeout(5000)])
- ```
- @method race
- @static
- @param {Array} promises array of promises to observe
- Useful for tooling.
- @return {Promise} a promise which settles in the same way as the first passed
- promise to settle.
- */
- function race(entries) {
- /*jshint validthis:true */
- var Constructor = this;
- if (!isArray(entries)) {
- return new Constructor(function (_, reject) {
- return reject(new TypeError('You must pass an array to race.'));
- });
- } else {
- return new Constructor(function (resolve, reject) {
- var length = entries.length;
- for (var i = 0; i < length; i++) {
- Constructor.resolve(entries[i]).then(resolve, reject);
- }
- });
- }
- }
- /**
- `Promise.reject` returns a promise rejected with the passed `reason`.
- It is shorthand for the following:
- ```javascript
- let promise = new Promise(function(resolve, reject){
- reject(new Error('WHOOPS'));
- });
- promise.then(function(value){
- // Code here doesn't run because the promise is rejected!
- }, function(reason){
- // reason.message === 'WHOOPS'
- });
- ```
- Instead of writing the above, your code now simply becomes the following:
- ```javascript
- let promise = Promise.reject(new Error('WHOOPS'));
- promise.then(function(value){
- // Code here doesn't run because the promise is rejected!
- }, function(reason){
- // reason.message === 'WHOOPS'
- });
- ```
- @method reject
- @static
- @param {Any} reason value that the returned promise will be rejected with.
- Useful for tooling.
- @return {Promise} a promise rejected with the given `reason`.
- */
- function reject$1(reason) {
- /*jshint validthis:true */
- var Constructor = this;
- var promise = new Constructor(noop);
- reject(promise, reason);
- return promise;
- }
- function needsResolver() {
- throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');
- }
- function needsNew() {
- throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");
- }
- /**
- Promise objects represent the eventual result of an asynchronous operation. The
- primary way of interacting with a promise is through its `then` method, which
- registers callbacks to receive either a promise's eventual value or the reason
- why the promise cannot be fulfilled.
- Terminology
- -----------
- - `promise` is an object or function with a `then` method whose behavior conforms to this specification.
- - `thenable` is an object or function that defines a `then` method.
- - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).
- - `exception` is a value that is thrown using the throw statement.
- - `reason` is a value that indicates why a promise was rejected.
- - `settled` the final resting state of a promise, fulfilled or rejected.
- A promise can be in one of three states: pending, fulfilled, or rejected.
- Promises that are fulfilled have a fulfillment value and are in the fulfilled
- state. Promises that are rejected have a rejection reason and are in the
- rejected state. A fulfillment value is never a thenable.
- Promises can also be said to *resolve* a value. If this value is also a
- promise, then the original promise's settled state will match the value's
- settled state. So a promise that *resolves* a promise that rejects will
- itself reject, and a promise that *resolves* a promise that fulfills will
- itself fulfill.
- Basic Usage:
- ------------
- ```js
- let promise = new Promise(function(resolve, reject) {
- // on success
- resolve(value);
- // on failure
- reject(reason);
- });
- promise.then(function(value) {
- // on fulfillment
- }, function(reason) {
- // on rejection
- });
- ```
- Advanced Usage:
- ---------------
- Promises shine when abstracting away asynchronous interactions such as
- `XMLHttpRequest`s.
- ```js
- function getJSON(url) {
- return new Promise(function(resolve, reject){
- let xhr = new XMLHttpRequest();
- xhr.open('GET', url);
- xhr.onreadystatechange = handler;
- xhr.responseType = 'json';
- xhr.setRequestHeader('Accept', 'application/json');
- xhr.send();
- function handler() {
- if (this.readyState === this.DONE) {
- if (this.status === 200) {
- resolve(this.response);
- } else {
- reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));
- }
- }
- };
- });
- }
- getJSON('/posts.json').then(function(json) {
- // on fulfillment
- }, function(reason) {
- // on rejection
- });
- ```
- Unlike callbacks, promises are great composable primitives.
- ```js
- Promise.all([
- getJSON('/posts'),
- getJSON('/comments')
- ]).then(function(values){
- values[0] // => postsJSON
- values[1] // => commentsJSON
- return values;
- });
- ```
- @class Promise
- @param {Function} resolver
- Useful for tooling.
- @constructor
- */
- var Promise$1 = function () {
- function Promise(resolver) {
- this[PROMISE_ID] = nextId();
- this._result = this._state = undefined;
- this._subscribers = [];
- if (noop !== resolver) {
- typeof resolver !== 'function' && needsResolver();
- this instanceof Promise ? initializePromise(this, resolver) : needsNew();
- }
- }
- /**
- The primary way of interacting with a promise is through its `then` method,
- which registers callbacks to receive either a promise's eventual value or the
- reason why the promise cannot be fulfilled.
- ```js
- findUser().then(function(user){
- // user is available
- }, function(reason){
- // user is unavailable, and you are given the reason why
- });
- ```
- Chaining
- --------
- The return value of `then` is itself a promise. This second, 'downstream'
- promise is resolved with the return value of the first promise's fulfillment
- or rejection handler, or rejected if the handler throws an exception.
- ```js
- findUser().then(function (user) {
- return user.name;
- }, function (reason) {
- return 'default name';
- }).then(function (userName) {
- // If `findUser` fulfilled, `userName` will be the user's name, otherwise it
- // will be `'default name'`
- });
- findUser().then(function (user) {
- throw new Error('Found user, but still unhappy');
- }, function (reason) {
- throw new Error('`findUser` rejected and we're unhappy');
- }).then(function (value) {
- // never reached
- }, function (reason) {
- // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.
- // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.
- });
- ```
- If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.
- ```js
- findUser().then(function (user) {
- throw new PedagogicalException('Upstream error');
- }).then(function (value) {
- // never reached
- }).then(function (value) {
- // never reached
- }, function (reason) {
- // The `PedgagocialException` is propagated all the way down to here
- });
- ```
- Assimilation
- ------------
- Sometimes the value you want to propagate to a downstream promise can only be
- retrieved asynchronously. This can be achieved by returning a promise in the
- fulfillment or rejection handler. The downstream promise will then be pending
- until the returned promise is settled. This is called *assimilation*.
- ```js
- findUser().then(function (user) {
- return findCommentsByAuthor(user);
- }).then(function (comments) {
- // The user's comments are now available
- });
- ```
- If the assimliated promise rejects, then the downstream promise will also reject.
- ```js
- findUser().then(function (user) {
- return findCommentsByAuthor(user);
- }).then(function (comments) {
- // If `findCommentsByAuthor` fulfills, we'll have the value here
- }, function (reason) {
- // If `findCommentsByAuthor` rejects, we'll have the reason here
- });
- ```
- Simple Example
- --------------
- Synchronous Example
- ```javascript
- let result;
- try {
- result = findResult();
- // success
- } catch(reason) {
- // failure
- }
- ```
- Errback Example
- ```js
- findResult(function(result, err){
- if (err) {
- // failure
- } else {
- // success
- }
- });
- ```
- Promise Example;
- ```javascript
- findResult().then(function(result){
- // success
- }, function(reason){
- // failure
- });
- ```
- Advanced Example
- --------------
- Synchronous Example
- ```javascript
- let author, books;
- try {
- author = findAuthor();
- books = findBooksByAuthor(author);
- // success
- } catch(reason) {
- // failure
- }
- ```
- Errback Example
- ```js
- function foundBooks(books) {
- }
- function failure(reason) {
- }
- findAuthor(function(author, err){
- if (err) {
- failure(err);
- // failure
- } else {
- try {
- findBoooksByAuthor(author, function(books, err) {
- if (err) {
- failure(err);
- } else {
- try {
- foundBooks(books);
- } catch(reason) {
- failure(reason);
- }
- }
- });
- } catch(error) {
- failure(err);
- }
- // success
- }
- });
- ```
- Promise Example;
- ```javascript
- findAuthor().
- then(findBooksByAuthor).
- then(function(books){
- // found books
- }).catch(function(reason){
- // something went wrong
- });
- ```
- @method then
- @param {Function} onFulfilled
- @param {Function} onRejected
- Useful for tooling.
- @return {Promise}
- */
- /**
- `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same
- as the catch block of a try/catch statement.
- ```js
- function findAuthor(){
- throw new Error('couldn't find that author');
- }
- // synchronous
- try {
- findAuthor();
- } catch(reason) {
- // something went wrong
- }
- // async with promises
- findAuthor().catch(function(reason){
- // something went wrong
- });
- ```
- @method catch
- @param {Function} onRejection
- Useful for tooling.
- @return {Promise}
- */
- Promise.prototype.catch = function _catch(onRejection) {
- return this.then(null, onRejection);
- };
- /**
- `finally` will be invoked regardless of the promise's fate just as native
- try/catch/finally behaves
-
- Synchronous example:
-
- ```js
- findAuthor() {
- if (Math.random() > 0.5) {
- throw new Error();
- }
- return new Author();
- }
-
- try {
- return findAuthor(); // succeed or fail
- } catch(error) {
- return findOtherAuther();
- } finally {
- // always runs
- // doesn't affect the return value
- }
- ```
-
- Asynchronous example:
-
- ```js
- findAuthor().catch(function(reason){
- return findOtherAuther();
- }).finally(function(){
- // author was either found, or not
- });
- ```
-
- @method finally
- @param {Function} callback
- @return {Promise}
- */
- Promise.prototype.finally = function _finally(callback) {
- var promise = this;
- var constructor = promise.constructor;
- if (isFunction(callback)) {
- return promise.then(function (value) {
- return constructor.resolve(callback()).then(function () {
- return value;
- });
- }, function (reason) {
- return constructor.resolve(callback()).then(function () {
- throw reason;
- });
- });
- }
- return promise.then(callback, callback);
- };
- return Promise;
- }();
- Promise$1.prototype.then = then;
- Promise$1.all = all;
- Promise$1.race = race;
- Promise$1.resolve = resolve$1;
- Promise$1.reject = reject$1;
- Promise$1._setScheduler = setScheduler;
- Promise$1._setAsap = setAsap;
- Promise$1._asap = asap;
- /*global self*/
- function polyfill() {
- var local = void 0;
- if (typeof global !== 'undefined') {
- local = global;
- } else if (typeof self !== 'undefined') {
- local = self;
- } else {
- try {
- local = Function('return this')();
- } catch (e) {
- throw new Error('polyfill failed because global object is unavailable in this environment');
- }
- }
- var P = local.Promise;
- if (P) {
- var promiseToString = null;
- try {
- promiseToString = Object.prototype.toString.call(P.resolve());
- } catch (e) {
- // silently ignored
- }
- if (promiseToString === '[object Promise]' && !P.cast) {
- return;
- }
- }
- local.Promise = Promise$1;
- }
- // Strange compat..
- Promise$1.polyfill = polyfill;
- Promise$1.Promise = Promise$1;
- return Promise$1;
- })));
- //# sourceMappingURL=es6-promise.map
- ;
- //jshint eqnull:true
- define('amber/kernel-checks',[],function () {
- "use strict";
- function assert (fn) {
- try {
- if (fn()) return;
- } catch (ex) {
- throw new Error("Error:\n" + ex + "in assertion:\n" + fn);
- }
- throw new Error("Assertion failed:\n" + fn);
- }
- assert(function () {
- return !("hasOwnProperty" in Object.create(null));
- });
- assert(function () {
- return Object.getPrototypeOf(Object.create(null)) === null;
- });
- assert(function () {
- var p = {};
- return Object.getPrototypeOf(Object.create(p)) === p;
- });
- assert(function () {
- var p = {x: 4, y: 5}, q = {x: 6};
- var r = Object.setPrototypeOf(q, p);
- return r === q &&
- q.x === 6 &&
- q.y === 5;
- });
- // assert(function () {
- // return new Function("return this")().Object === Object;
- // });
- // assert(function () {
- // return Object.create(new Function("return this")()).Object === Object;
- // });
- assert(function () {
- return typeof global !== "undefined";
- });
- assert(function () {
- return global.Object === Object;
- });
- assert(function () {
- return Object.create(global).Object === Object;
- });
- assert(function () {
- return (function () {
- return this;
- }).apply(void 0) === void 0;
- });
- assert(function () {
- return (function () {
- return this;
- }).apply(null) === null;
- });
- assert(function () {
- return (function () {
- return this;
- }).apply(3) === 3;
- });
- assert(function () {
- return (function () {
- return this;
- }).apply("foo") === "foo";
- });
- assert(function () {
- return (function () {
- return this;
- }).apply(true) === true;
- });
- assert(function () {
- var o = Object.freeze({});
- try {
- o.foo = "bar";
- } catch (ex) {
- }
- return o.foo == null;
- });
- assert(function () {
- return typeof Promise === "function";
- });
- assert(function () {
- return typeof Promise.resolve === "function";
- });
- assert(function () {
- return typeof Promise.reject === "function";
- });
- assert(function () {
- return typeof new Promise(function () {
- }).then === "function";
- });
- });
- define('amber/brikz',[], function () {
- return function Brikz(api, apiKey, initKey, backupKey) {
- "use strict";
- //jshint eqnull:true
- var backup = {};
- apiKey = apiKey || 'exports';
- initKey = initKey || '__init__';
- backupKey = backupKey || 'backup';
- function mixin(src, target, what) {
- for (var keys = Object.keys(what || src), l = keys.length, i = 0; i < l; ++i) {
- if (src == null) {
- target[keys[i]] = undefined;
- } else {
- var value = src[keys[i]];
- if (typeof value !== "undefined") {
- target[keys[i]] = value;
- }
- }
- }
- return target;
- }
- return function brikz() {
- Object.keys(backup).forEach(function (key) {
- mixin(null, api, (backup[key] || 0)[apiKey] || {});
- });
- var oapi = mixin(api, {}),
- order = [],
- chk = {};
- function ensure(key) {
- var b = brikz[key],
- bak = backup[key];
- while (typeof b === "function") {
- (b.deps || []).forEach(ensure);
- b[backupKey] = bak;
- mixin(null, api, api);
- b = new b(brikz, api);
- }
- brikz[key] = b;
- if (b && !chk[key]) {
- chk[key] = true;
- order.push(b);
- }
- if (b && !b[apiKey]) {
- b[apiKey] = mixin(api, {});
- }
- }
- Object.keys(brikz).forEach(ensure);
- mixin(oapi, mixin(null, api, api));
- order.forEach(function (brik) {
- mixin(brik[apiKey] || {}, api);
- });
- order.forEach(function (brik) {
- if (brik[initKey]) {
- brik[initKey]();
- if (brik[initKey].once) {
- delete brik[initKey];
- }
- }
- });
- backup = mixin(brikz, {});
- };
- };
- });
- //jshint eqnull:true
- define('amber/junk-drawer',[],function () {
- "use strict";
- function inherits (child, parent) {
- child.prototype = Object.create(parent.prototype, {
- constructor: {
- value: child,
- enumerable: false, configurable: true, writable: true
- }
- });
- return child;
- }
- function installMethodOfJsObject (obj, name, fn) {
- Object.defineProperty(obj, name, {
- value: fn,
- enumerable: false, configurable: true, writable: true
- });
- }
- function noop () {
- }
- function declareJsMethod (obj, name) {
- if (obj[name] == null) installMethodOfJsObject(obj, name, noop);
- }
- var table = {
- ':': '_',
- '&': '_and',
- '|': '_or',
- '+': '_plus',
- '-': '_minus',
- '*': '_star',
- '/': '_slash',
- '\\': '_backslash',
- '~': '_tild',
- '%': '_percent',
- '>': '_gt',
- '<': '_lt',
- '=': '_eq',
- ',': '_comma',
- '@': '_at'
- };
- /* Convert a Smalltalk selector into a JS selector */
- function st2js (string) {
- return '_' + string
- .replace(/[:&|+\-*/\\~%><=,@]/g, function (ch) {
- return table[ch];
- });
- };
- function js2st (selector) {
- if (selector.match(/^__/)) {
- return binaryJsToSt(selector);
- } else {
- return keywordJsToSt(selector);
- }
- }
- function keywordJsToSt (selector) {
- return selector.replace(/^_/, '').replace(/_/g, ':');
- }
- function binaryJsToSt (selector) {
- return selector
- .replace(/^_/, '')
- .replace(/_and/g, '&')
- .replace(/_or/g, '|')
- .replace(/_plus/g, '+')
- .replace(/_minus/g, '-')
- .replace(/_star/g, '*')
- .replace(/_slash/g, '/')
- .replace(/_backslash/g, '\\')
- .replace(/_tild/g, '~')
- .replace(/_percent/g, '%')
- .replace(/_gt/g, '>')
- .replace(/_lt/g, '<')
- .replace(/_eq/g, '=')
- .replace(/_comma/g, ',')
- .replace(/_at/g, '@');
- }
- function addElement (array, el) {
- if (typeof el === 'undefined') {
- return;
- }
- if (array.indexOf(el) === -1) {
- array.push(el);
- }
- }
- function removeElement (array, el) {
- var i = array.indexOf(el);
- if (i !== -1) {
- array.splice(i, 1);
- }
- }
- function extend (target, source) {
- Object.keys(source).forEach(function (key) {
- target[key] = source[key];
- });
- return target;
- }
- function extendWithMethods (target, source) {
- Object.keys(source).forEach(function (key) {
- installMethodOfJsObject(target, key, source[key]);
- });
- return target;
- }
- function deleteKeysFrom (keys, obj) {
- keys.forEach(function (each) {
- delete obj[each];
- });
- }
- return {
- deleteKeysFrom: deleteKeysFrom,
- extendWithMethods: extendWithMethods,
- extend: extend,
- removeElement: removeElement,
- addElement: addElement,
- js2st: js2st,
- st2js: st2js,
- declareJsMethod: declareJsMethod,
- installMethodOfJsObject: installMethodOfJsObject,
- inherits: inherits
- }
- });
- //jshint eqnull:true
- define('amber/kernel-fundamentals',['./junk-drawer'], function ($goodies) {
- "use strict";
- var inherits = $goodies.inherits;
- var declareJsMethod = $goodies.declareJsMethod;
- var addElement = $goodies.addElement;
- var removeElement = $goodies.removeElement;
- var hop = Object.prototype.hasOwnProperty;
- function SelectorsBrik (brikz, st) {
- var selectorSet = Object.create(null);
- var selectors = this.selectors = [];
- this.registerSelector = function (stSelector) {
- if (selectorSet[stSelector]) return false;
- selectors.push(stSelector);
- return selectorSet[stSelector] = true;
- };
- st.allSelectors = function () {
- return selectors;
- };
- }
- function PackagesBrik (brikz, st) {
- st.packageDescriptors = {};
- /* Add a package load descriptor to the system */
- st.addPackage = function (name, properties) {
- if (!name) return null;
- return st.packageDescriptors[name] = {properties: properties};
- };
- }
- function FundamentalsFactory (globals, emit) {
- var specialConstructors = Object.create(null);
- function declareEvent (name) {
- declareJsMethod(emit, name);
- }
- function RootBrik (brikz, st) {
- /* Smalltalk foundational objects */
- /* SmalltalkRoot is the hidden root of the normal Amber hierarchy.
- All objects including `ProtoObject` inherit from SmalltalkRoot.
- Detached roots (eg. wrapped JS classes like Number or Date)
- do not directly inherit from SmalltalkRoot, but employ a workaround.*/
- function SmalltalkRoot () {
- }
- function SmalltalkProtoObject () {
- }
- function SmalltalkObject () {
- }
- specialConstructors.ProtoObject = inherits(SmalltalkProtoObject, SmalltalkRoot);
- specialConstructors.Object = inherits(SmalltalkObject, SmalltalkProtoObject);
- this.Root = SmalltalkRoot;
- this.Object = SmalltalkObject;
- }
- BehavioralsBrik.deps = ["root"];
- function BehavioralsBrik (brikz, st) {
- /* Smalltalk classes and traits */
- var traitsOrClasses = [];
- this.buildTraitOrClass = function (builder) {
- var traitOrClass = globals.hasOwnProperty(builder.name) && globals[builder.name];
- if (traitOrClass) {
- builder.updateExisting(traitOrClass);
- return traitOrClass;
- } else {
- return addTraitOrClass(builder.make());
- }
- };
- declareEvent("behavioralAdded");
- function addTraitOrClass (traitOrClass) {
- globals[traitOrClass.name] = traitOrClass;
- addElement(traitsOrClasses, traitOrClass);
- traitOrClass.added();
- emit.behavioralAdded(traitOrClass);
- return traitOrClass;
- }
- declareEvent("behavioralRemoved");
- function removeTraitOrClass (traitOrClass) {
- emit.behavioralRemoved(traitOrClass);
- traitOrClass.removed();
- removeElement(traitsOrClasses, traitOrClass);
- delete globals[traitOrClass.name];
- return traitOrClass;
- }
- this.removeTraitOrClass = removeTraitOrClass;
- st.traitsOrClasses = this.traitsOrClasses = traitsOrClasses;
- }
- MethodsBrik.deps = ["selectors", "root"];
- function MethodsBrik (brikz, st) {
- var registerSelector = brikz.selectors.registerSelector;
- var SmalltalkObject = brikz.root.Object;
- function SmalltalkMethod () {
- }
- specialConstructors.CompiledMethod = inherits(SmalltalkMethod, SmalltalkObject);
- /* Smalltalk method object. To add a method to a class,
- use api.addMethod() */
- st.method = function (spec, factory) {
- var that = new SmalltalkMethod();
- that.selector = spec.selector;
- that.args = spec.args || [];
- that.protocol = spec.protocol;
- that.source = spec.source;
- that.pragmas = spec.pragmas;
- that.messageSends = spec.messageSends || [];
- // TODO remove .referencedClasses, have .referencedGlobals
- that.referencedClasses = spec.referencedClasses || [];
- that.fn = spec.fn;
- if (factory) that.instantiateFn = factory;
- return that;
- };
- /* Add/remove a method to/from a class */
- st.addMethod = function (method, traitOrBehavior) {
- if (method.owner != null) {
- throw new Error("addMethod: Method " + method.selector + " already bound to " + method.owner);
- }
- method.owner = traitOrBehavior;
- registerNewSelectors(method);
- traitOrBehavior.localMethods[method.selector] = method;
- updateMethod(method.selector, traitOrBehavior);
- };
- declareEvent("selectorsAdded");
- function registerNewSelectors (method) {
- var newSelectors = [];
- function selectorInUse (stSelector) {
- if (registerSelector(stSelector)) {
- newSelectors.push(stSelector);
- }
- }
- selectorInUse(method.selector);
- method.messageSends.forEach(selectorInUse);
- emit.selectorsAdded(newSelectors);
- }
- st.removeMethod = function (method, traitOrBehavior) {
- if (traitOrBehavior.localMethods[method.selector] !== method) return;
- delete traitOrBehavior.localMethods[method.selector];
- updateMethod(method.selector, traitOrBehavior);
- };
- this.setupMethods = function (traitOrBehavior) {
- traitOrBehavior.localMethods = Object.create(null);
- var superclass = traitOrBehavior.superclass;
- traitOrBehavior.methods = Object.create(superclass ? superclass.methods : null);
- };
- function setLocalMethods (traitOrBehavior, newLocalMethods) {
- var oldLocalMethods = traitOrBehavior.localMethods;
- traitOrBehavior.localMethods = newLocalMethods;
- var selector;
- for (selector in newLocalMethods) {
- updateMethod(selector, traitOrBehavior);
- }
- for (selector in oldLocalMethods) {
- updateMethod(selector, traitOrBehavior);
- }
- }
- this.setLocalMethods = setLocalMethods;
- declareEvent("methodReplaced");
- function updateMethod (selector, traitOrBehavior) {
- var oldMethod,
- newMethod = traitOrBehavior.localMethods[selector],
- methods = traitOrBehavior.methods;
- if (hop.call(methods, selector)) {
- oldMethod = methods[selector];
- if (newMethod === oldMethod) return;
- } else {
- if (newMethod == null) {
- console.warn("Removal of nonexistent method " + traitOrBehavior + " >> " + selector);
- return;
- }
- oldMethod = null;
- }
- if (newMethod != null) {
- if (newMethod.methodClass && newMethod.methodClass !== traitOrBehavior) {
- console.warn("Resetting methodClass of " + newMethod.methodClass.name + " >> " + selector + " to " + traitOrBehavior.name);
- }
- newMethod.methodClass = traitOrBehavior;
- methods[selector] = newMethod;
- traitOrBehavior.methodAdded(newMethod);
- } else {
- delete methods[selector];
- traitOrBehavior.methodRemoved(oldMethod);
- }
- emit.methodReplaced(newMethod, oldMethod, traitOrBehavior);
- }
- this.updateMethod = updateMethod;
- }
- NilBrik.deps = ["root"];
- function NilBrik (brikz, st) {
- var SmalltalkObject = brikz.root.Object;
- function SmalltalkNil () {
- }
- specialConstructors.UndefinedObject = inherits(SmalltalkNil, SmalltalkObject);
- this.nilAsReceiver = new SmalltalkNil();
- this.nilAsValue = this.nilAsReceiver; // TODO null
- // Adds an `a$nil` property to the `nil` object. When sending
- // nil objects from one environment to another, doing
- // `anObject == nil` (in JavaScript) does not always answer
- // true as the referenced nil object might come from the other
- // environment.
- Object.defineProperty(this.nilAsReceiver, 'a$nil', {
- value: true,
- enumerable: false, configurable: false, writable: false
- });
- }
- /* Making smalltalk that has basic building blocks */
- function configure (brikz) {
- brikz.root = RootBrik;
- brikz.nil = NilBrik;
- brikz.selectors = SelectorsBrik;
- brikz.packages = PackagesBrik;
- brikz.behaviorals = BehavioralsBrik;
- brikz.methods = MethodsBrik;
- brikz();
- }
- return {configure: configure, specialConstructors: specialConstructors};
- }
- return FundamentalsFactory;
- });
- //jshint eqnull:true
- define('amber/kernel-language',['./junk-drawer'], function ($goodies) {
- "use strict";
- var inherits = $goodies.inherits;
- var declareJsMethod = $goodies.declareJsMethod;
- var addElement = $goodies.addElement;
- var removeElement = $goodies.removeElement;
- var extend = $goodies.extend;
- var deleteKeysFrom = $goodies.deleteKeysFrom;
- MethodCompositionBrik.deps = ["methods"];
- function MethodCompositionBrik (brikz, st) {
- var setLocalMethods = brikz.methods.setLocalMethods;
- var updateMethod = brikz.methods.updateMethod;
- function aliased (selector, method) {
- var result = st.method(method, method.instantiateFn);
- if (method.selector !== selector) {
- result.selector = selector;
- result.source = '"Aliased as ' + selector + '"\n' + method.source;
- }
- result.owner = method.owner;
- return result;
- }
- function fillTraitTransformation (traitTransformation, obj) {
- // assert(Object.getOwnProperties(obj).length === 0)
- var traitMethods = traitTransformation.trait.methods;
- Object.keys(traitMethods).forEach(function (selector) {
- obj[selector] = aliased(selector, traitMethods[selector]);
- });
- var traitAliases = traitTransformation.aliases;
- if (traitAliases) {
- Object.keys(traitAliases).forEach(function (aliasSelector) {
- var aliasedMethod = traitMethods[traitAliases[aliasSelector]];
- if (aliasedMethod) obj[aliasSelector] = aliased(aliasSelector, aliasedMethod);
- // else delete obj[aliasSelector]; // semantically correct; optimized away
- });
- }
- var traitExclusions = traitTransformation.exclusions;
- if (traitExclusions) {
- deleteKeysFrom(traitExclusions, obj);
- }
- return obj;
- }
- function buildCompositionChain (traitComposition) {
- return traitComposition.reduce(function (soFar, each) {
- return fillTraitTransformation(each, Object.create(soFar));
- }, null);
- }
- st.setTraitComposition = function (traitComposition, traitOrBehavior) {
- var oldLocalMethods = traitOrBehavior.localMethods,
- newLocalMethodsTemplate = Object.create(buildCompositionChain(traitComposition));
- setLocalMethods(traitOrBehavior, extend(newLocalMethodsTemplate, oldLocalMethods));
- (traitOrBehavior.traitComposition || []).forEach(function (each) {
- removeElement(each.trait.traitUsers, traitOrBehavior);
- });
- traitOrBehavior.traitComposition = traitComposition && traitComposition.length ? traitComposition : null;
- (traitOrBehavior.traitComposition || []).forEach(function (each) {
- addElement(each.trait.traitUsers, traitOrBehavior);
- });
- };
- function aliasesOfSelector (selector, traitAliases) {
- if (!traitAliases) return [selector];
- var result = Object.keys(traitAliases).filter(function (aliasSelector) {
- return traitAliases[aliasSelector] === selector
- });
- if (!traitAliases[selector]) result.push(selector);
- return result;
- }
- function applyTraitMethodAddition (selector, method, traitTransformation, obj) {
- var changes = aliasesOfSelector(selector, traitTransformation.aliases);
- changes.forEach(function (aliasSelector) {
- obj[aliasSelector] = aliased(aliasSelector, method);
- });
- var traitExclusions = traitTransformation.exclusions;
- if (traitExclusions) {
- deleteKeysFrom(traitExclusions, obj);
- }
- return changes;
- }
- function applyTraitMethodDeletion (selector, traitTransformation, obj) {
- var changes = aliasesOfSelector(selector, traitTransformation.aliases);
- deleteKeysFrom(changes, obj);
- return changes;
- }
- function traitMethodChanged (selector, method, trait, traitOrBehavior) {
- var traitComposition = traitOrBehavior.traitComposition,
- chain = traitOrBehavior.localMethods,
- changes = [];
- for (var i = traitComposition.length - 1; i >= 0; --i) {
- chain = Object.getPrototypeOf(chain);
- var traitTransformation = traitComposition[i];
- if (traitTransformation.trait !== trait) continue;
- changes.push.apply(changes, method ?
- applyTraitMethodAddition(selector, method, traitTransformation, chain) :
- applyTraitMethodDeletion(selector, traitTransformation, chain));
- }
- // assert(chain === null);
- changes.forEach(function (each) {
- updateMethod(each, traitOrBehavior);
- });
- }
- this.traitMethodChanged = traitMethodChanged;
- }
- function LanguageFactory (specialConstructors, emit) {
- function declareEvent (name) {
- declareJsMethod(emit, name);
- }
- TraitsBrik.deps = ["behaviorals", "methods", "composition", "root"];
- function TraitsBrik (brikz, st) {
- var SmalltalkObject = brikz.root.Object;
- var setupMethods = brikz.methods.setupMethods;
- var traitMethodChanged = brikz.composition.traitMethodChanged;
- var buildTraitOrClass = brikz.behaviorals.buildTraitOrClass;
- function SmalltalkTrait () {
- }
- specialConstructors.Trait = inherits(SmalltalkTrait, SmalltalkObject);
- SmalltalkTrait.prototype.trait = true;
- declareJsMethod(SmalltalkTrait.prototype, "toString");
- declareJsMethod(SmalltalkTrait.prototype, "added");
- declareJsMethod(SmalltalkTrait.prototype, "removed");
- declareJsMethod(SmalltalkTrait.prototype, "methodAdded");
- declareJsMethod(SmalltalkTrait.prototype, "methodRemoved");
- SmalltalkTrait.prototype.toString = function () {
- return 'Smalltalk Trait ' + this.name;
- };
- SmalltalkTrait.prototype.methodAdded = function (method) {
- propagateMethodChange(this, method.selector, method);
- };
- SmalltalkTrait.prototype.methodRemoved = function (method) {
- propagateMethodChange(this, method.selector, null);
- };
- function propagateMethodChange (trait, selector, method) {
- trait.traitUsers.forEach(function (each) {
- traitMethodChanged(selector, method, trait, each);
- });
- }
- function traitBuilder (traitName, category) {
- return {
- name: traitName,
- make: function () {
- var that = new SmalltalkTrait();
- that.name = traitName;
- that.category = category;
- that.traitUsers = [];
- setupMethods(that);
- return that;
- },
- updateExisting: function (trait) {
- }
- };
- }
- st.addTrait = function (className, category) {
- return buildTraitOrClass(traitBuilder(className, category));
- };
- }
- ClassModelBrik.deps = ["root", "nil"];
- function ClassModelBrik (brikz, st) {
- var SmalltalkRoot = brikz.root.Root;
- var SmalltalkObject = brikz.root.Object;
- var nilAsReceiver = brikz.nil.nilAsReceiver;
- function SmalltalkBehavior () {
- }
- function SmalltalkClass () {
- }
- function SmalltalkMetaclass () {
- }
- this.newMetaclass = function () {
- return new SmalltalkMetaclass();
- };
- specialConstructors.Behavior = inherits(SmalltalkBehavior, SmalltalkObject);
- specialConstructors.Class = inherits(SmalltalkClass, SmalltalkBehavior);
- specialConstructors.Metaclass = inherits(SmalltalkMetaclass, SmalltalkBehavior);
- SmalltalkMetaclass.prototype.meta = true;
- declareJsMethod(SmalltalkClass.prototype, "toString");
- declareJsMethod(SmalltalkMetaclass.prototype, "toString");
- declareJsMethod(SmalltalkClass.prototype, "added");
- declareJsMethod(SmalltalkClass.prototype, "removed");
- declareJsMethod(SmalltalkBehavior.prototype, "methodAdded");
- declareJsMethod(SmalltalkBehavior.prototype, "methodRemoved");
- SmalltalkClass.prototype.toString = function () {
- return 'Smalltalk ' + this.name;
- };
- SmalltalkMetaclass.prototype.toString = function () {
- return 'Smalltalk Metaclass ' + this.instanceClass.name;
- };
- declareEvent("classCreated");
- SmalltalkClass.prototype.added = function () {
- registerToSuperclass(this);
- emit.classCreated(this);
- };
- SmalltalkClass.prototype.removed = function () {
- unregisterFromSuperclass(this);
- };
- declareEvent("behaviorMethodAdded");
- SmalltalkBehavior.prototype.methodAdded = function (method) {
- emit.behaviorMethodAdded(method, this);
- };
- declareEvent("behaviorMethodRemoved");
- SmalltalkBehavior.prototype.methodRemoved = function (method) {
- emit.behaviorMethodRemoved(method, this);
- };
- // Fake root class of the system.
- // Effective superclass of all classes created with `nil subclass: ...`.
- var nilAsClass = this.nilAsClass = {
- fn: SmalltalkRoot,
- subclasses: [],
- a$cls: {fn: SmalltalkClass, methods: Object.create(null)}
- };
- this.bootstrapHierarchy = function (realClass) {
- nilAsClass.a$cls = realClass;
- nilAsClass.subclasses.forEach(function (each) {
- each.a$cls.superclass = realClass;
- Object.setPrototypeOf(each.a$cls.methods, realClass.methods);
- registerToSuperclass(each.a$cls);
- });
- };
- function registerToSuperclass (klass) {
- addElement((klass.superclass || nilAsClass).subclasses, klass);
- }
- function unregisterFromSuperclass (klass) {
- removeElement((klass.superclass || nilAsClass).subclasses, klass);
- }
- function metaSubclasses (metaclass) {
- return metaclass.instanceClass.subclasses
- .filter(function (each) {
- return !each.meta;
- })
- .map(function (each) {
- return each.a$cls;
- });
- }
- st.metaSubclasses = metaSubclasses;
- st.traverseClassTree = function (klass, fn) {
- var queue = [klass], sentinel = {};
- for (var i = 0; i < queue.length; ++i) {
- var item = queue[i];
- if (fn(item, sentinel) === sentinel) continue;
- var subclasses = item.meta ? metaSubclasses(item) : item.subclasses;
- queue.push.apply(queue, subclasses);
- }
- };
- /**
- * This function is used all over the compiled amber code.
- * It takes any value (JavaScript or Smalltalk)
- * and returns a proper Amber Smalltalk receiver.
- *
- * null or undefined -> nilAsReceiver,
- * object having Smalltalk signature -> unchanged,
- * otherwise wrapped foreign (JS) object
- */
- this.asReceiver = function (o) {
- if (o == null) return nilAsReceiver;
- else if (o.a$cls != null) return o;
- else return st.wrapJavaScript(o);
- };
- // TODO remove, .iVarNames backward compatibility
- this.__init__ = function () {
- brikz.classConstruction.iVarNamesCompat(SmalltalkBehavior);
- };
- }
- ClassConstructionBrik.deps = ["classModel", "behaviorals", "methods"];
- function ClassConstructionBrik (brikz, st) {
- var nilAsClass = brikz.classModel.nilAsClass;
- var newMetaclass = brikz.classModel.newMetaclass;
- var buildTraitOrClass = brikz.behaviorals.buildTraitOrClass;
- var setupMethods = brikz.methods.setupMethods;
- var removeTraitOrClass = brikz.behaviorals.removeTraitOrClass;
- declareEvent("slotsChanged");
- function setSlots (klass, slots) {
- slots.forEach(function (name) {
- if (!name.match(/^[a-zA-Z][a-zA-Z0-9]*$/))
- throw new Error("Wrong identifier name: " + name);
- });
- klass.slots = slots;
- emit.slotsChanged(klass);
- }
- st.setSlots = setSlots;
- // TODO remove, .iVarNames backward compatibility
- this.iVarNamesCompat = function (SmalltalkBehavior) {
- Object.defineProperty(SmalltalkBehavior.prototype, "iVarNames", {
- enumerable: true,
- configurable: true,
- get: function () {
- return this.slots;
- },
- set: function (instanceVariableNames) {
- setSlots(this, instanceVariableNames);
- }
- });
- };
- /* Smalltalk class creation. A class is an instance of an automatically
- created metaclass object. Newly created classes (not their metaclass)
- should be added to the system, see smalltalk.addClass().
- Superclass linking is *not* handled here, see api.initialize() */
- function classBuilder (className, superclass, category, fn) {
- var logicalSuperclass = superclass;
- if (superclass == null || superclass.a$nil) {
- superclass = nilAsClass;
- logicalSuperclass = null;
- }
- function klass () {
- var that = metaclass().instanceClass;
- that.superclass = logicalSuperclass;
- that.fn = fn || inherits(function () {
- }, superclass.fn);
- that.slots = [];
- that.name = className;
- that.category = category;
- that.subclasses = [];
- setupMethods(that);
- return that;
- }
- function metaclass () {
- var that = newMetaclass();
- that.superclass = superclass.a$cls;
- that.fn = inherits(function () {
- }, that.superclass.fn);
- that.slots = [];
- that.instanceClass = new that.fn();
- wireKlass(that);
- setupMethods(that);
- return that;
- }
- return {
- name: className,
- make: klass,
- updateExisting: function (klass) {
- if (logicalSuperclass == null && klass.superclass != null || logicalSuperclass != null && klass.superclass !== logicalSuperclass || fn != null && fn !== klass.fn)
- throw new Error("Incompatible change of class: " + klass.name);
- }
- };
- }
- function wireKlass (klass) {
- Object.defineProperty(klass.fn.prototype, "a$cls", {
- value: klass,
- enumerable: false, configurable: true, writable: true
- });
- }
- this.wireKlass = wireKlass;
- /* Add a class to the system, creating a new one if needed.
- A Package is lazily created if one with given name does not exist. */
- st.addClass = function (className, superclass, category) {
- // TODO remove, backward compatibility (note: only deprecated as of this note)
- if (arguments[3]) {
- var added = st.addClass(className, superclass, arguments[3]);
- setSlots(added, category);
- return added;
- }
- // While subclassing nil is allowed, it might be an error, so
- // warn about it.
- if (typeof superclass === 'undefined' || superclass && superclass.a$nil) {
- console.warn('Compiling ' + className + ' as a subclass of `nil`. A dependency might be missing.');
- }
- return buildTraitOrClass(classBuilder(className, superclass, category, specialConstructors[className]));
- };
- st.removeClass = removeTraitOrClass;
- }
- /* Making smalltalk that can load */
- function configure (brikz) {
- brikz.traits = TraitsBrik;
- brikz.composition = MethodCompositionBrik;
- brikz.classModel = ClassModelBrik;
- brikz.classConstruction = ClassConstructionBrik;
- brikz();
- }
- return {configure: configure};
- }
- return LanguageFactory;
- });
- //jshint eqnull:true
- define('amber/kernel-runtime',['./junk-drawer'], function ($goodies) {
- "use strict";
- var installMethodOfJsObject = $goodies.installMethodOfJsObject;
- var declareJsMethod = $goodies.declareJsMethod;
- var st2js = $goodies.st2js;
- var js2st = $goodies.js2st;
- var deleteKeysFrom = $goodies.deleteKeysFrom;
- var extendWithMethods = $goodies.extendWithMethods;
- var hop = Object.prototype.hasOwnProperty;
- function cleanMethodOfJsObjectEx (obj, name) {
- var attachments;
- var old = Object.getOwnPropertyDescriptor(obj, name);
- if (old != null && (old = old.value) != null) {
- attachments = old.a$atx;
- if (attachments != null) {
- deleteKeysFrom(Object.keys(attachments), obj);
- }
- }
- }
- function installMethodOfJsObjectEx (obj, name, fn) {
- cleanMethodOfJsObjectEx(obj, name);
- var attachments = fn.a$atx;
- if (attachments != null) {
- extendWithMethods(obj, attachments);
- }
- return installMethodOfJsObject(obj, name, fn);
- }
- function SelectorConversionBrik (brikz, st) {
- var st2jsMemo = Object.create(null);
- st.st2js = function (stSelector) {
- return st2jsMemo[stSelector] || st2js(stSelector);
- };
- this.st2js = function (stSelector) {
- return st2jsMemo[stSelector] || (st2jsMemo[stSelector] = st2js(stSelector));
- };
- /* Convert a string to a valid smalltalk selector.
- if you modify the following functions, also change st2js
- accordingly */
- st.js2st = js2st;
- st.st2prop = function (stSelector) {
- var colonPosition = stSelector.indexOf(':');
- return colonPosition === -1 ? stSelector : stSelector.slice(0, colonPosition);
- };
- }
- function RuntimeFactory (globals, emit) {
- RuntimeSelectorsBrik.deps = ["selectors", "selectorConversion", "classModel"];
- function RuntimeSelectorsBrik (brikz, st) {
- var selectors = brikz.selectors.selectors;
- var nilAsClass = brikz.classModel.nilAsClass;
- var st2js = brikz.selectorConversion.st2js;
- var jsSelectors = this.jsSelectors = [];
- /* Method not implemented handlers */
- function installNewSelectors (newSelectors, targetClasses) {
- newSelectors.forEach(function (selector) {
- var jsSelector = st2js(selector);
- jsSelectors.push(jsSelector);
- var fn = createDnuHandler(selector);
- installMethodOfJsObject(nilAsClass.fn.prototype, jsSelector, fn);
- targetClasses.forEach(function (target) {
- installMethodOfJsObject(target.fn.prototype, jsSelector, fn);
- });
- });
- }
- this.installNewSelectors = installNewSelectors;
- /* Dnu handler method */
- function createDnuHandler (stSelector) {
- return function () {
- return globals.Message._selector_arguments_notUnderstoodBy_(
- stSelector, [].slice.call(arguments), this
- );
- };
- }
- installNewSelectors(selectors, []);
- }
- RuntimeClassesBrik.deps = ["runtimeSelectors", "behaviorals", "classConstruction", "runtimeMethods"];
- function RuntimeClassesBrik (brikz, st) {
- var jsSelectors = brikz.runtimeSelectors.jsSelectors;
- var installNewSelectors = brikz.runtimeSelectors.installNewSelectors;
- var installAmberMethodIntoAmberClass = brikz.runtimeMethods.installAmberMethodIntoAmberClass;
- var traitsOrClasses = brikz.behaviorals.traitsOrClasses;
- var wireKlass = brikz.classConstruction.wireKlass;
- var detachedRootClasses = [];
- function detachClass (klass) {
- klass.detachedRoot = true;
- detachedRootClasses = traitsOrClasses.filter(function (klass) {
- return klass.detachedRoot;
- });
- initClass(klass);
- }
- st.detachClass = detachClass;
- emit.selectorsAdded = function (newSelectors) {
- installNewSelectors(newSelectors, detachedRootClasses);
- };
- /* Initialize a class in its class hierarchy. Handle both classes and
- metaclasses. */
- function initClassAndMetaclass (klass) {
- initClass(klass);
- initClass(klass.a$cls);
- }
- traitsOrClasses.forEach(function (traitOrClass) {
- if (!traitOrClass.trait) initClassAndMetaclass(traitOrClass);
- });
- function installStHooks () {
- emit.behavioralAdded = function (traitOrClass) {
- traitOrClass._enterOrganization();
- };
- emit.behavioralRemoved = function (traitOrClass) {
- traitOrClass._leaveOrganization();
- };
- }
- this.installStHooks = installStHooks;
- emit.classCreated = initClassAndMetaclass;
- emit.slotsChanged = initClassSlots;
- function initClass (klass) {
- wireKlass(klass);
- initClassMethods(klass);
- initClassSlots(klass);
- }
- function initClassMethods (klass) {
- if (klass.detachedRoot) {
- copySuperclass(klass);
- }
- installMethods(klass);
- }
- function initClassSlots (klass) {
- installIvarCompat(klass);
- }
- function copySuperclass (klass) {
- var myproto = klass.fn.prototype,
- superproto = klass.superclass.fn.prototype;
- jsSelectors.forEach(function (jsSelector) {
- installMethodOfJsObjectEx(myproto, jsSelector, superproto[jsSelector]);
- });
- }
- function installMethods (klass) {
- var methods = klass.methods;
- Object.keys(methods).forEach(function (selector) {
- installAmberMethodIntoAmberClass(methods[selector], klass);
- });
- }
- // TODO remove, ["@foo"] backward compatibility
- function installIvarCompat (klass) {
- var ivars = klass.slots;
- ivars.forEach(function (ivar) {
- Object.defineProperty(klass.fn.prototype, "@" + ivar, {
- get: function () {
- return this[ivar];
- },
- set: function (value) {
- return this[ivar] = value;
- },
- enumerable: false,
- configurable: true
- });
- });
- }
- /* Create an alias for an existing class */
- st.alias = function (traitOrClass, alias) {
- globals[alias] = traitOrClass;
- };
- /* Manually set the constructor of an existing Smalltalk klass, making it a detached root class. */
- st.setClassConstructor = this.setClassConstructor = function (klass, constructor) {
- klass.fn = constructor;
- detachClass(klass);
- var prototype = constructor.prototype;
- klass.subclasses.forEach(function (subclass) {
- Object.setPrototypeOf(subclass.fn.prototype, prototype);
- });
- };
- }
- FrameBindingBrik.deps = ["runtimeClasses"];
- function FrameBindingBrik (brikz, st) {
- var setClassConstructor = brikz.runtimeClasses.setClassConstructor;
- setClassConstructor(globals.Number, Number);
- setClassConstructor(globals.BlockClosure, Function);
- setClassConstructor(globals.Boolean, Boolean);
- setClassConstructor(globals.Date, Date);
- setClassConstructor(globals.String, String);
- setClassConstructor(globals.Array, Array);
- setClassConstructor(globals.RegularExpression, RegExp);
- setClassConstructor(globals.Error, Error);
- setClassConstructor(globals.Promise, Promise);
- this.__init__ = function () {
- st.alias(globals.Array, "OrderedCollection");
- st.alias(globals.Date, "Time");
- }
- }
- RuntimeMethodsBrik.deps = ["selectorConversion"];
- function RuntimeMethodsBrik (brikz, st) {
- var st2js = brikz.selectorConversion.st2js;
- function installAmberMethodIntoAmberClass (method, klass) {
- if (method.fn == null) {
- if (method.instantiateFn) {
- method.fn = method.instantiateFn(method.methodClass);
- }
- }
- var jsSelector = method.jsSelector;
- if (!jsSelector) {
- jsSelector = method.jsSelector = st2js(method.selector);
- }
- return installMethodOfJsObjectEx(klass.fn.prototype, jsSelector, method.fn);
- }
- this.installAmberMethodIntoAmberClass = installAmberMethodIntoAmberClass;
- emit.behaviorMethodAdded = function (method, klass) {
- installAmberMethodIntoAmberClass(method, klass);
- propagateMethodChange(klass, method, klass);
- };
- emit.behaviorMethodRemoved = function (method, klass) {
- cleanMethodOfJsObjectEx(klass.fn.prototype, method.jsSelector);
- delete klass.fn.prototype[method.jsSelector];
- propagateMethodChange(klass, method, null);
- };
- function installStHooks () {
- emit.methodReplaced = function (newMethod, oldMethod, traitOrBehavior) {
- traitOrBehavior._methodOrganizationEnter_andLeave_(newMethod, oldMethod);
- };
- }
- this.installStHooks = installStHooks;
- function propagateMethodChange (klass, method, exclude) {
- var selector = method.selector;
- var jsSelector = method.jsSelector;
- st.traverseClassTree(klass, function (subclass, sentinel) {
- if (subclass === exclude) return;
- if (hop.call(subclass.methods, selector)) return sentinel;
- if (subclass.detachedRoot) {
- installMethodOfJsObjectEx(subclass.fn.prototype, jsSelector, subclass.superclass.fn.prototype[jsSelector]);
- }
- });
- }
- }
- function PrimitivesBrik (brikz, st) {
- /* Converts a JavaScript object to valid Smalltalk Object */
- st.readJSObject = function (js) {
- if (js == null) return null;
- else if (Array.isArray(js)) return js.map(st.readJSObject);
- else if (js.constructor !== Object) return js;
- var pairs = [];
- for (var i in js) {
- pairs.push(i, st.readJSObject(js[i]));
- }
- return globals.Dictionary._newFromPairs_(pairs);
- };
- /* Boolean assertion */
- st.assert = function (shouldBeBoolean) {
- if (typeof shouldBeBoolean === "boolean") return shouldBeBoolean;
- else if (shouldBeBoolean != null && typeof shouldBeBoolean === "object") {
- shouldBeBoolean = shouldBeBoolean.valueOf();
- if (typeof shouldBeBoolean === "boolean") return shouldBeBoolean;
- }
- globals.NonBooleanReceiver._signalOn_(shouldBeBoolean);
- };
- }
- RuntimeBrik.deps = ["selectorConversion", "runtimeClasses"];
- function RuntimeBrik (brikz, st) {
- var setClassConstructor = brikz.runtimeClasses.setClassConstructor;
- function SmalltalkMethodContext (home, setup) {
- // TODO lazy fill of .sendIdx
- this.sendIdx = {};
- // TODO very likely .senderContext, not .homeContext here
- this.homeContext = home;
- this.setup = setup;
- }
- // Fallbacks
- SmalltalkMethodContext.prototype.supercall = false;
- SmalltalkMethodContext.prototype.locals = Object.freeze({});
- SmalltalkMethodContext.prototype.receiver = null;
- SmalltalkMethodContext.prototype.selector = null;
- SmalltalkMethodContext.prototype.outerContext = null;
- SmalltalkMethodContext.prototype.index = 0;
- declareJsMethod(SmalltalkMethodContext.prototype, "fill");
- declareJsMethod(SmalltalkMethodContext.prototype, "fillBlock");
- SmalltalkMethodContext.prototype.fill = function (receiver, selector, locals) {
- this.receiver = receiver;
- this.selector = selector;
- if (locals != null) this.locals = locals;
- if (this.homeContext) {
- this.homeContext.evaluatedSelector = selector;
- }
- };
- SmalltalkMethodContext.prototype.fillBlock = function (locals, ctx, index) {
- if (locals != null) this.locals = locals;
- this.outerContext = ctx;
- if (index) this.index = index;
- };
- setClassConstructor(globals.MethodContext, SmalltalkMethodContext);
- /* This is the current call context object.
- In Smalltalk code, it is accessible just by using 'thisContext' variable.
- In JS code, use api.getThisContext() (see below).
- */
- var thisContext = null;
- function resultWithNoErrorHandling (worker) {
- try {
- return worker(thisContext);
- } finally {
- thisContext = null;
- }
- }
- // TODO deprecated, remove
- st.seamless = function (worker) {
- return worker();
- // return st.withContext(worker, new SmalltalkMethodContext(thisContext, function (ctx) {
- // ctx.fill(null, "seamlessDoIt", {}, globals.UndefinedObject);
- // }));
- };
- /*
- Standard way to run within context.
- Sets up error handler if entering first ST context in a stack.
- */
- st.withContext = function (worker, setup) {
- var oldContext = thisContext;
- thisContext = new SmalltalkMethodContext(thisContext, setup);
- var result = oldContext == null ? resultWithNoErrorHandling(worker) : worker(thisContext);
- thisContext = oldContext;
- return result;
- };
- /* Handle thisContext pseudo variable */
- st.getThisContext = function () {
- if (!thisContext) return null;
- thisContext.setup(thisContext);
- return thisContext;
- };
- }
- MessageSendBrik.deps = ["selectorConversion"];
- function MessageSendBrik (brikz, st) {
- /* Send message programmatically. Used to implement #perform: & Co. */
- st.send2 = function (self, selector, args, klass) {
- var method = klass ? klass.fn.prototype[st.st2js(selector)] : self.a$cls && self[st.st2js(selector)];
- return method != null ?
- method.apply(self, args || []) :
- globals.Message._selector_arguments_notUnderstoodBy_(
- selector, [].slice.call(args), self.a$cls ? self : wrapJavaScript(self)
- );
- };
- function wrapJavaScript (o) {
- return globals.JSObjectProxy._on_(o);
- }
- st.wrapJavaScript = wrapJavaScript;
- /* If the object property is a function, then call it, except if it starts with
- an uppercase character (we probably want to answer the function itself in this
- case and send it #new from Amber).
- */
- st.accessJavaScript = function (self, propertyName, args) {
- var propertyValue = self[propertyName];
- if (typeof propertyValue === "function" && !(args.length === 0 && /^[A-Z]/.test(propertyName)))
- return propertyValue.apply(self, args);
- switch (args.length) {
- case 0:
- return propertyValue;
- case 1:
- self[propertyName] = args[0];
- return self;
- default:
- throw new Error("Cannot interpret " + propertyName + " with " + args.length + " arguments; field is a " + typeof propertyValue + ", not a function")
- }
- };
- }
- StartImageBrik.deps = ["runtimeClasses", "runtimeMethods"];
- function StartImageBrik (brikz, st) {
- this.run = function () {
- brikz.runtimeClasses.installStHooks();
- brikz.runtimeMethods.installStHooks();
- return globals.AmberBootstrapInitialization._run();
- };
- }
- /* Making smalltalk that can run */
- function configure (brikz) {
- brikz.runtimeSelectors = RuntimeSelectorsBrik;
- brikz.runtimeClasses = RuntimeClassesBrik;
- brikz.frameBinding = FrameBindingBrik;
- brikz.runtimeMethods = RuntimeMethodsBrik;
- brikz.messageSend = MessageSendBrik;
- brikz.runtime = RuntimeBrik;
- brikz.primitives = PrimitivesBrik;
- brikz.selectorConversion = SelectorConversionBrik;
- brikz.startImage = StartImageBrik;
- brikz();
- }
- return {configure: configure};
- }
- return RuntimeFactory;
- });
- /* ====================================================================
- |
- | Amber Smalltalk
- | http://amber-lang.net
- |
- ======================================================================
- ======================================================================
- |
- | Copyright (c) 2010-2014
- | Nicolas Petton <petton.nicolas@gmail.com>
- |
- | Copyright (c) 2012-2019
- | The Amber team https://lolg.it/org/amber/members
- | Amber contributors (see /CONTRIBUTORS)
- |
- | Amber is released under the MIT license
- |
- | Permission is hereby granted, free of charge, to any person obtaining
- | a copy of this software and associated documentation files (the
- | 'Software'), to deal in the Software without restriction, including
- | without limitation the rights to use, copy, modify, merge, publish,
- | distribute, sublicense, and/or sell copies of the Software, and to
- | permit persons to whom the Software is furnished to do so, subject to
- | the following conditions:
- |
- | The above copyright notice and this permission notice shall be
- | included in all copies or substantial portions of the Software.
- |
- | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
- | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- |
- ==================================================================== */
- //jshint eqnull:true
- define('amber/boot',[
- 'require', './kernel-checks', './brikz', './kernel-fundamentals', './kernel-language'
- ], function (require, _, Brikz, FundamentalsFactory, LanguageFactory) {
- "use strict";
- var globals = Object.create(global);
- var emit = Object.create(null);
- var runtimeLoadedPromise = new Promise(function (resolve, reject) {
- require(['./kernel-runtime'], resolve, reject);
- });
- function SmalltalkInitBrik (brikz, st) {
- var initialized = false;
- globals.SmalltalkSettings = {};
- /* Smalltalk initialization. Called on page load */
- st.initialize = function () {
- return runtimeLoadedPromise.then(function (RuntimeFactory) {
- if (initialized) return;
- brikz.classModel.bootstrapHierarchy(globals.Class);
- RuntimeFactory(globals, emit).configure(brikz);
- return Promise.resolve(brikz.startImage.run())
- .then(function () {
- initialized = true;
- });
- });
- };
- }
- var api = {};
- var brikz = Brikz(api);
- var fundamentals = FundamentalsFactory(globals, emit);
- fundamentals.configure(brikz);
- LanguageFactory(fundamentals.specialConstructors, emit).configure(brikz);
- brikz.stInit = SmalltalkInitBrik;
- brikz();
- // TODO deprecated, remove
- Object.defineProperty(globals, "CharacterArray", {
- enumerable: true,
- configurable: true,
- get: function () {
- return this.String;
- }
- });
- return {
- api: api,
- nilAsReceiver: brikz.nil.nilAsReceiver,
- nilAsValue: brikz.nil.nilAsValue,
- nilAsClass: brikz.classModel.nilAsClass,
- globals: globals,
- asReceiver: brikz.classModel.asReceiver
- };
- });
- define('amber/helpers',["./boot", "./junk-drawer", "require"], function (boot, $goodies, require) {
- var globals = boot.globals,
- exports = {},
- extend = $goodies.extend,
- api = boot.api;
- // API
- exports.popupHelios = function () {
- require(['helios/index'], function (helios) {
- helios.popup();
- }, function (err) {
- window.alert("Error loading helios.\nIf not present, you can install it with 'npm install @ambers/helios --save-dev'.\nThe error follows:\n" + err);
- });
- };
- Object.defineProperty(exports, "api", {
- value: api,
- enumerable: true, configurable: true, writable: false
- });
- Object.defineProperty(exports, "globals", {
- value: globals,
- enumerable: true, configurable: true, writable: false
- });
- Object.defineProperty(exports, "$nil", {
- value: boot.nilAsReceiver,
- enumerable: true, configurable: true, writable: false
- });
- Object.defineProperty(exports, "nil", {
- value: boot.nilAsValue,
- enumerable: true, configurable: true, writable: false
- });
- function settingsInLocalStorage () {
- var storage;
- try {
- storage = 'localStorage' in global && global.localStorage;
- } catch (ex) {
- console.warn("Access denied to localStorage, " +
- "settings not loaded nor, subsequently, saved.");
- return;
- }
- if (storage) {
- var fromStorage;
- try {
- fromStorage = JSON.parse(storage.getItem('amber.SmalltalkSettings'));
- } catch (ex) {
- // pass
- }
- extend(globals.SmalltalkSettings, fromStorage || {});
- if (typeof window !== "undefined") {
- window.addEventListener('beforeunload', function () {
- storage.setItem('amber.SmalltalkSettings', JSON.stringify(globals.SmalltalkSettings));
- });
- }
- }
- }
- exports.initialize = function (options) {
- return new Promise(function (resolve) {
- globals.SmalltalkSettings['transport.defaultAmdNamespace'] = "amber/core";
- api.amdRequire = require; // TODO better
- settingsInLocalStorage();
- extend(globals.SmalltalkSettings, options || {});
- resolve(api.initialize());
- });
- };
- exports.loadPackages = function (modules) {
- return new Promise(function (resolve, reject) {
- require(modules, resolve, reject);
- }).then(function () {
- return globals.Smalltalk._postLoad();
- });
- };
- exports.beClean = function () {
- return globals.Smalltalk._beClean();
- };
- // Exports
- return exports;
- });
- define('amber/core/Kernel-Helpers',["amber/boot", "require"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Kernel-Helpers");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addTrait("TIsInGroup", "Kernel-Helpers");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.TIsInGroup.comment="I contain all `isXxx` checking methods that check\x0aif receiver is part of some group of objects (`isBehavior` etc.)\x0a\x0aI should NOT contain tests for\x0ahaving a certain property (`isImmutable` etc.).";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "isBehavior",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isBehavior\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.TIsInGroup);
- $core.addMethod(
- $core.method({
- selector: "isBoolean",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isBoolean\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.TIsInGroup);
- $core.addMethod(
- $core.method({
- selector: "isClass",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isClass\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.TIsInGroup);
- $core.addMethod(
- $core.method({
- selector: "isCompiledMethod",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isCompiledMethod\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.TIsInGroup);
- $core.addMethod(
- $core.method({
- selector: "isError",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isError\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.TIsInGroup);
- $core.addMethod(
- $core.method({
- selector: "isMetaclass",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isMetaclass\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.TIsInGroup);
- $core.addMethod(
- $core.method({
- selector: "isNumber",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isNumber\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.TIsInGroup);
- $core.addMethod(
- $core.method({
- selector: "isPackage",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isPackage\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.TIsInGroup);
- $core.addMethod(
- $core.method({
- selector: "isString",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isString\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.TIsInGroup);
- $core.addMethod(
- $core.method({
- selector: "isSymbol",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSymbol\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.TIsInGroup);
- $core.addMethod(
- $core.method({
- selector: "isThenable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isThenable\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.TIsInGroup);
- $core.addTrait("TSubclassable", "Kernel-Helpers");
- $core.addMethod(
- $core.method({
- selector: "subclass:",
- protocol: "class creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "subclass: aString \x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString slots: #() package: nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:slots:package:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._subclass_slots_package_(aString,[],nil);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSubclassable);
- $core.addMethod(
- $core.method({
- selector: "subclass:instanceVariableNames:",
- protocol: "class creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anotherString"],
- source: "subclass: aString instanceVariableNames: anotherString\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString instanceVariableNames: anotherString package: nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:instanceVariableNames:package:"]
- }, function ($methodClass){ return function (aString,anotherString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._subclass_instanceVariableNames_package_(aString,anotherString,nil);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:",{aString:aString,anotherString:anotherString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSubclassable);
- $core.addMethod(
- $core.method({
- selector: "subclass:instanceVariableNames:category:",
- protocol: "class creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aString2", "aString3"],
- source: "subclass: aString instanceVariableNames: aString2 category: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString instanceVariableNames: aString2 package: aString3",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:instanceVariableNames:package:"]
- }, function ($methodClass){ return function (aString,aString2,aString3){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._subclass_instanceVariableNames_package_(aString,aString2,aString3);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:category:",{aString:aString,aString2:aString2,aString3:aString3})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSubclassable);
- $core.addMethod(
- $core.method({
- selector: "subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:",
- protocol: "class creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aString2", "classVars", "pools", "aString3"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:instanceVariableNames:package:"]
- }, function ($methodClass){ return function (aString,aString2,classVars,pools,aString3){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._subclass_instanceVariableNames_package_(aString,aString2,aString3);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:",{aString:aString,aString2:aString2,classVars:classVars,pools:pools,aString3:aString3})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSubclassable);
- $core.addMethod(
- $core.method({
- selector: "subclass:instanceVariableNames:package:",
- protocol: "class creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aString2", "aString3"],
- source: "subclass: aString instanceVariableNames: aString2 package: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString slots: aString2 instanceVariablesStringAsSlotList package: aString3",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:slots:package:", "instanceVariablesStringAsSlotList"]
- }, function ($methodClass){ return function (aString,aString2,aString3){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._subclass_slots_package_(aString,$recv(aString2)._instanceVariablesStringAsSlotList(),aString3);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:instanceVariableNames:package:",{aString:aString,aString2:aString2,aString3:aString3})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSubclassable);
- $core.addMethod(
- $core.method({
- selector: "subclass:slots:",
- protocol: "class creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aCollection"],
- source: "subclass: aString slots: aCollection\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString slots: aCollection package: nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:slots:package:"]
- }, function ($methodClass){ return function (aString,aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._subclass_slots_package_(aString,aCollection,nil);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:slots:",{aString:aString,aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSubclassable);
- $core.addMethod(
- $core.method({
- selector: "subclass:slots:classVariables:package:",
- protocol: "class creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aCollection", "anObject", "anotherString"],
- source: "subclass: aString slots: aCollection classVariables: anObject package: anotherString\x0a\x09\x22Kept for file-in compatibility. ignores class variables.\x22\x0a\x09^ ClassBuilder new\x0a\x09\x09superclass: self subclass: aString slots: aCollection package: anotherString",
- referencedClasses: ["ClassBuilder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["superclass:subclass:slots:package:", "new"]
- }, function ($methodClass){ return function (aString,aCollection,anObject,anotherString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.ClassBuilder)._new())._superclass_subclass_slots_package_(self,aString,aCollection,anotherString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:slots:classVariables:package:",{aString:aString,aCollection:aCollection,anObject:anObject,anotherString:anotherString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSubclassable);
- $core.addMethod(
- $core.method({
- selector: "subclass:slots:classVariables:poolDictionaries:package:",
- protocol: "class creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aCollection", "anObject", "anotherObject", "anotherString"],
- source: "subclass: aString slots: aCollection classVariables: anObject poolDictionaries: anotherObject package: anotherString\x0a\x09\x22Kept for file-in compatibility. ignores class variables and pools.\x22\x0a\x09^ ClassBuilder new\x0a\x09\x09superclass: self subclass: aString slots: aCollection package: anotherString",
- referencedClasses: ["ClassBuilder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["superclass:subclass:slots:package:", "new"]
- }, function ($methodClass){ return function (aString,aCollection,anObject,anotherObject,anotherString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.ClassBuilder)._new())._superclass_subclass_slots_package_(self,aString,aCollection,anotherString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:slots:classVariables:poolDictionaries:package:",{aString:aString,aCollection:aCollection,anObject:anObject,anotherObject:anotherObject,anotherString:anotherString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSubclassable);
- $core.addMethod(
- $core.method({
- selector: "subclass:slots:package:",
- protocol: "class creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aCollection", "anotherString"],
- source: "subclass: aString slots: aCollection package: anotherString\x0a\x09^ ClassBuilder new\x0a\x09\x09superclass: self subclass: aString slots: aCollection package: anotherString",
- referencedClasses: ["ClassBuilder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["superclass:subclass:slots:package:", "new"]
- }, function ($methodClass){ return function (aString,aCollection,anotherString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.ClassBuilder)._new())._superclass_subclass_slots_package_(self,aString,aCollection,anotherString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:slots:package:",{aString:aString,aCollection:aCollection,anotherString:anotherString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSubclassable);
- $core.addMethod(
- $core.method({
- selector: "subclass:uses:",
- protocol: "class creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aTraitCompositionDescription"],
- source: "subclass: aString uses: aTraitCompositionDescription \x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription slots: #() package: nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:uses:slots:package:"]
- }, function ($methodClass){ return function (aString,aTraitCompositionDescription){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._subclass_uses_slots_package_(aString,aTraitCompositionDescription,[],nil);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:uses:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSubclassable);
- $core.addMethod(
- $core.method({
- selector: "subclass:uses:instanceVariableNames:",
- protocol: "class creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aTraitCompositionDescription", "anotherString"],
- source: "subclass: aString uses: aTraitCompositionDescription instanceVariableNames: anotherString\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription instanceVariableNames: anotherString package: nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:uses:instanceVariableNames:package:"]
- }, function ($methodClass){ return function (aString,aTraitCompositionDescription,anotherString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._subclass_uses_instanceVariableNames_package_(aString,aTraitCompositionDescription,anotherString,nil);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:uses:instanceVariableNames:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,anotherString:anotherString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSubclassable);
- $core.addMethod(
- $core.method({
- selector: "subclass:uses:instanceVariableNames:category:",
- protocol: "class creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aTraitCompositionDescription", "aString2", "aString3"],
- source: "subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 category: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 package: aString3",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:uses:instanceVariableNames:package:"]
- }, function ($methodClass){ return function (aString,aTraitCompositionDescription,aString2,aString3){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._subclass_uses_instanceVariableNames_package_(aString,aTraitCompositionDescription,aString2,aString3);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:uses:instanceVariableNames:category:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,aString2:aString2,aString3:aString3})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSubclassable);
- $core.addMethod(
- $core.method({
- selector: "subclass:uses:instanceVariableNames:classVariableNames:poolDictionaries:category:",
- protocol: "class creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aTraitCompositionDescription", "aString2", "classVars", "pools", "aString3"],
- source: "subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 classVariableNames: classVars poolDictionaries: pools category: aString3\x0a\x09\x22Kept for file-in compatibility. ignores class variables and pools.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 package: aString3",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:uses:instanceVariableNames:package:"]
- }, function ($methodClass){ return function (aString,aTraitCompositionDescription,aString2,classVars,pools,aString3){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._subclass_uses_instanceVariableNames_package_(aString,aTraitCompositionDescription,aString2,aString3);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:uses:instanceVariableNames:classVariableNames:poolDictionaries:category:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,aString2:aString2,classVars:classVars,pools:pools,aString3:aString3})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSubclassable);
- $core.addMethod(
- $core.method({
- selector: "subclass:uses:instanceVariableNames:package:",
- protocol: "class creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aTraitCompositionDescription", "aString2", "aString3"],
- source: "subclass: aString uses: aTraitCompositionDescription instanceVariableNames: aString2 package: aString3\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription slots: aString2 instanceVariablesStringAsSlotList package: aString3",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:uses:slots:package:", "instanceVariablesStringAsSlotList"]
- }, function ($methodClass){ return function (aString,aTraitCompositionDescription,aString2,aString3){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._subclass_uses_slots_package_(aString,aTraitCompositionDescription,$recv(aString2)._instanceVariablesStringAsSlotList(),aString3);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:uses:instanceVariableNames:package:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,aString2:aString2,aString3:aString3})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSubclassable);
- $core.addMethod(
- $core.method({
- selector: "subclass:uses:slots:",
- protocol: "class creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aTraitCompositionDescription", "aCollection"],
- source: "subclass: aString uses: aTraitCompositionDescription slots: aCollection\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self subclass: aString uses: aTraitCompositionDescription slots: aCollection package: nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:uses:slots:package:"]
- }, function ($methodClass){ return function (aString,aTraitCompositionDescription,aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._subclass_uses_slots_package_(aString,aTraitCompositionDescription,aCollection,nil);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:uses:slots:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSubclassable);
- $core.addMethod(
- $core.method({
- selector: "subclass:uses:slots:package:",
- protocol: "class creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aTraitCompositionDescription", "aCollection", "aString3"],
- source: "subclass: aString uses: aTraitCompositionDescription slots: aCollection package: aString3\x0a\x09| cls |\x0a\x09cls := self subclass: aString slots: aCollection package: aString3.\x0a\x09cls setTraitComposition: aTraitCompositionDescription asTraitComposition.\x0a\x09^ cls",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:slots:package:", "setTraitComposition:", "asTraitComposition"]
- }, function ($methodClass){ return function (aString,aTraitCompositionDescription,aCollection,aString3){
- var self=this,$self=this;
- var cls;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- cls=$self._subclass_slots_package_(aString,aCollection,aString3);
- $recv(cls)._setTraitComposition_($recv(aTraitCompositionDescription)._asTraitComposition());
- return cls;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:uses:slots:package:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,aCollection:aCollection,aString3:aString3,cls:cls})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSubclassable);
- });
- define('amber/core/Kernel-Objects',["amber/boot", "require", "amber/core/Kernel-Helpers"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Kernel-Objects");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("ProtoObject", null, "Kernel-Objects");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "= anObject\x0a\x09^ self == anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["=="]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self.__eq_eq(anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"=",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "==",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "== anObject\x0a<inlineJS: 'return self === anObject'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self === anObject"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self === anObject;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"==",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "asString",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asString\x0a\x09^ self printString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["printString"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._printString();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "class",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "class\x0a\x09<inlineJS: 'return $self.a$cls'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $self.a$cls"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self.a$cls;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"class",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "doesNotUnderstand:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMessage"],
- source: "doesNotUnderstand: aMessage\x0a\x09MessageNotUnderstood new\x0a\x09\x09receiver: self;\x0a\x09\x09message: aMessage;\x0a\x09\x09signal",
- referencedClasses: ["MessageNotUnderstood"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["receiver:", "new", "message:", "signal"]
- }, function ($methodClass){ return function (aMessage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.MessageNotUnderstood)._new();
- $recv($1)._receiver_(self);
- $recv($1)._message_(aMessage);
- $recv($1)._signal();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"doesNotUnderstand:",{aMessage:aMessage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "evaluate:on:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anEvaluator"],
- source: "evaluate: aString on: anEvaluator\x0a\x09^ anEvaluator evaluate: aString receiver: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["evaluate:receiver:"]
- }, function ($methodClass){ return function (aString,anEvaluator){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(anEvaluator)._evaluate_receiver_(aString,self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"evaluate:on:",{aString:aString,anEvaluator:anEvaluator})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "identityHash",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "identityHash\x0a\x09<inlineJS: '\x0a\x09\x09self._deprecatedAPI();\x0a\x09\x09var hash=self.identityHash;\x0a\x09\x09if (hash) return hash;\x0a\x09\x09hash=$core.nextId();\x0a\x09\x09Object.defineProperty(self, ''identityHash'', {value:hash});\x0a\x09\x09return hash;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09self._deprecatedAPI();\x0a\x09\x09var hash=self.identityHash;\x0a\x09\x09if (hash) return hash;\x0a\x09\x09hash=$core.nextId();\x0a\x09\x09Object.defineProperty(self, 'identityHash', {value:hash});\x0a\x09\x09return hash;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- self._deprecatedAPI();
- var hash=self.identityHash;
- if (hash) return hash;
- hash=$core.nextId();
- Object.defineProperty(self, 'identityHash', {value:hash});
- return hash;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"identityHash",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "ifNil:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "ifNil: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "ifNil:ifNotNil:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anotherBlock"],
- source: "ifNil: aBlock ifNotNil: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ anotherBlock value: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:"]
- }, function ($methodClass){ return function (aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(anotherBlock)._value_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifNil:ifNotNil:",{aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "ifNotNil:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "ifNotNil: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ aBlock value: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._value_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifNotNil:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "ifNotNil:ifNil:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anotherBlock"],
- source: "ifNotNil: aBlock ifNil: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ aBlock value: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:"]
- }, function ($methodClass){ return function (aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._value_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifNotNil:ifNil:",{aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "inspect",
- protocol: "inspecting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "inspect\x0a\x09Inspector inspect: self",
- referencedClasses: ["Inspector"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["inspect:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.Inspector)._inspect_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inspect",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "inspectOn:",
- protocol: "inspecting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInspector"],
- source: "inspectOn: anInspector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anInspector){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "instVarNamed:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "instVarNamed: aString\x0a\x09<inlineJS: 'return $self[aString]'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $self[aString]"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self[aString];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"instVarNamed:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "instVarNamed:put:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "instVarNamed: aString put: anObject\x0a\x09<inlineJS: '$self[aString] = anObject'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["$self[aString] = anObject"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self[aString] = anObject;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"instVarNamed:put:",{aString:aString,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "isKindOf:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "isKindOf: aClass\x0a\x09^ (self isMemberOf: aClass) or: [ self class inheritsFrom: aClass ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["or:", "isMemberOf:", "inheritsFrom:", "class"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._isMemberOf_(aClass))){
- return true;
- } else {
- return $recv($self._class())._inheritsFrom_(aClass);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isKindOf:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "isNil",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isNil\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "notNil",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "notNil\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "perform:",
- protocol: "message handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "perform: aString\x0a\x09^ self perform: aString withArguments: #()",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["perform:withArguments:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._perform_withArguments_(aString,[]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"perform:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "perform:with:",
- protocol: "message handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "perform: aString with: anObject\x0a\x09<inlineJS: 'return $core.send2(self, aString, [anObject])'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $core.send2(self, aString, [anObject])"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $core.send2(self, aString, [anObject]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"perform:with:",{aString:aString,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "perform:withArguments:",
- protocol: "message handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aCollection"],
- source: "perform: aString withArguments: aCollection\x0a\x09<inlineJS: 'return $core.send2(self, aString, aCollection)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $core.send2(self, aString, aCollection)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $core.send2(self, aString, aCollection);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"perform:withArguments:",{aString:aString,aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "ifTrue:ifFalse:", "isVowel", "first", "name", "class"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- if($core.assert($recv($recv([$recv([$self._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0])._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["name"]=1
- //>>excludeEnd("ctx");
- ][0])._first())._isVowel())){
- $1="an ";
- } else {
- $1="a ";
- }
- [$recv(aStream)._nextPutAll_($1)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._nextPutAll_($recv($self._class())._name());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "printString",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "printString\x0a\x09^ String streamContents: [ :str | \x0a\x09\x09self printOn: str ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "printOn:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(str){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._printOn_(str);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "yourself",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "yourself\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "~=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "~= anObject\x0a\x09^ (self = anObject) = false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["="]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return [$recv($self.__eq(anObject)).__eq(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"~=",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "~~",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "~~ anObject\x0a\x09^ (self == anObject) = false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["=", "=="]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.__eq_eq(anObject)).__eq(false);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"~~",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoObject);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.ProtoObject.a$cls);
- $core.addClass("Object", $globals.ProtoObject, "Kernel-Objects");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "->",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "-> anObject\x0a\x09^ Association key: self value: anObject",
- referencedClasses: ["Association"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["key:value:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Association)._key_value_(self,anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"->",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "andSelfToNumber:",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "andSelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("I am not a number.");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"andSelfToNumber:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "appendToString:",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "appendToString: aString\x0a\x09self error: 'Cannot add self to a string.'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("Cannot add self to a string.");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"appendToString:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "asJSONString",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJSONString\x0a\x09^ JSON stringify: self asJavaScriptObject",
- referencedClasses: ["JSON"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["stringify:", "asJavaScriptObject"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.JSON)._stringify_($self._asJavaScriptObject());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJSONString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptObject",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptObject\x0a\x09| variables |\x0a\x09self deprecatedAPI: 'Implement domain-specific #asJavaScriptObject on your classes instead.'.\x0a\x09variables := HashedCollection new.\x0a\x09self class allInstanceVariableNames do: [ :each |\x0a\x09\x09variables at: each put: (self instVarNamed: each) asJavaScriptObject ].\x0a\x09^ variables",
- referencedClasses: ["HashedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deprecatedAPI:", "new", "do:", "allInstanceVariableNames", "class", "at:put:", "asJavaScriptObject", "instVarNamed:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var variables;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deprecatedAPI_("Implement domain-specific #asJavaScriptObject on your classes instead.");
- variables=$recv($globals.HashedCollection)._new();
- $recv($recv($self._class())._allInstanceVariableNames())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(variables)._at_put_(each,$recv($self._instVarNamed_(each))._asJavaScriptObject());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return variables;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptObject",{variables:variables})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptSource",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptSource\x0a\x09self deprecatedAPI: 'Implement domain-specific #asJavaScriptSource on your classes instead.'.\x0a\x09^ self asString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deprecatedAPI:", "asString"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deprecatedAPI_("Implement domain-specific #asJavaScriptSource on your classes instead.");
- return $self._asString();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "basicAt:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "basicAt: aString\x0a\x09<inlineJS: 'return self[aString]'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self[aString]"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self[aString];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicAt:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "basicAt:put:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "basicAt: aString put: anObject\x0a\x09<inlineJS: 'return self[aString] = anObject'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self[aString] = anObject"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self[aString] = anObject;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicAt:put:",{aString:aString,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "basicDelete:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "basicDelete: aString\x0a\x09<inlineJS: 'delete self[aString]; return aString'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["delete self[aString]; return aString"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- delete self[aString]; return aString;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicDelete:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "basicPerform:",
- protocol: "message handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "basicPerform: aString\x0a\x09^ self basicPerform: aString withArguments: #()",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["basicPerform:withArguments:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._basicPerform_withArguments_(aString,[]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicPerform:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "basicPerform:withArguments:",
- protocol: "message handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aCollection"],
- source: "basicPerform: aString withArguments: aCollection\x0a\x09<inlineJS: 'return self[aString].apply(self, aCollection);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self[aString].apply(self, aCollection);"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self[aString].apply(self, aCollection);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicPerform:withArguments:",{aString:aString,aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "browse",
- protocol: "browsing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "browse\x0a\x09Finder findClass: self class",
- referencedClasses: ["Finder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["findClass:", "class"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.Finder)._findClass_($self._class());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"browse",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "copy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "copy\x0a\x09^ self shallowCopy postCopy",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["postCopy", "shallowCopy"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._shallowCopy())._postCopy();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"copy",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "deepCopy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "deepCopy\x0a\x09<inlineJS: '\x0a\x09\x09var copy = self.a$cls._new();\x0a\x09\x09Object.keys(self).forEach(function (i) {\x0a\x09\x09\x09copy[i] = $recv(self[i])._deepCopy();\x0a\x09\x09});\x0a\x09\x09return copy;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var copy = self.a$cls._new();\x0a\x09\x09Object.keys(self).forEach(function (i) {\x0a\x09\x09\x09copy[i] = $recv(self[i])._deepCopy();\x0a\x09\x09});\x0a\x09\x09return copy;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var copy = self.a$cls._new();
- Object.keys(self).forEach(function (i) {
- copy[i] = $recv(self[i])._deepCopy();
- });
- return copy;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"deepCopy",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "deprecatedAPI",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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, ')'.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["warn:", ",", "asString", "home"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(console)._warn_([$recv([$recv($recv([$recv([$core.getThisContext()._home()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["home"]=1
- //>>excludeEnd("ctx");
- ][0])._asString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asString"]=1
- //>>excludeEnd("ctx");
- ][0]).__comma(" is deprecated! (in ")).__comma($recv([$recv($core.getThisContext()._home())._home()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["home"]=2
- //>>excludeEnd("ctx");
- ][0])._asString())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(")")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"deprecatedAPI",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "deprecatedAPI:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["warn:", ",", "asString", "home"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv(console)._warn_([$recv([$recv($recv([$recv([$core.getThisContext()._home()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["home"]=1
- //>>excludeEnd("ctx");
- ][0])._asString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asString"]=1
- //>>excludeEnd("ctx");
- ][0]).__comma(" is deprecated! (in ")).__comma($recv([$recv($core.getThisContext()._home())._home()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["home"]=2
- //>>excludeEnd("ctx");
- ][0])._asString())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(")")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["warn:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(console)._warn_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"deprecatedAPI:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "divideBySelfToNumber:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "divideBySelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("I am not a number.");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"divideBySelfToNumber:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "divisionRemainderBySelfToNumber:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "divisionRemainderBySelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("I am not a number.");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"divisionRemainderBySelfToNumber:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "error:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "error: aString\x0a\x09Error signal: aString",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["signal:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.Error)._signal_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"error:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "halt",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "halt\x0a\x09Halt signal",
- referencedClasses: ["Halt"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["signal"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.Halt)._signal();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"halt",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "in:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aValuable"],
- source: "in: aValuable\x0a\x09^ aValuable value: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:"]
- }, function ($methodClass){ return function (aValuable){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aValuable)._value_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"in:",{aValuable:aValuable})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "isImmutable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isImmutable\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "isMemberOf:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "isMemberOf: aClass\x0a\x09^ self class = aClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["=", "class"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._class()).__eq(aClass);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isMemberOf:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "isNumberEqualToSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "isNumberEqualToSelf: aNumber\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "isNumberGreaterThanOrEqualToSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "isNumberGreaterThanOrEqualToSelf: aNumber\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "isNumberGreaterThanSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "isNumberGreaterThanSelf: aNumber\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "isNumberLessThanOrEqualToSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "isNumberLessThanOrEqualToSelf: aNumber\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "isNumberLessThanSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "isNumberLessThanSelf: aNumber\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "isParseFailure",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isParseFailure\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "isStringEqualToSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "isStringEqualToSelf: aString\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "isStringGreaterThanOrEqualToSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "isStringGreaterThanOrEqualToSelf: aString\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "isStringGreaterThanSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "isStringGreaterThanSelf: aString\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "isStringLessThanOrEqualToSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "isStringLessThanOrEqualToSelf: aString\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "isStringLessThanSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "isStringLessThanSelf: aString\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "minusSelfToNumber:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "minusSelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("I am not a number.");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"minusSelfToNumber:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "orSelfToNumber:",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "orSelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("I am not a number.");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"orSelfToNumber:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "plusSelfToNumber:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "plusSelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("I am not a number.");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"plusSelfToNumber:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "postCopy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "postCopy",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "putOn:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "putOn: aStream\x0a\x09aStream nextPut: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPut:"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._nextPut_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "respondsTo:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aSelector"],
- source: "respondsTo: aSelector\x0a\x09^ self class canUnderstand: aSelector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["canUnderstand:", "class"]
- }, function ($methodClass){ return function (aSelector){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._class())._canUnderstand_(aSelector);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"respondsTo:",{aSelector:aSelector})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "shallowCopy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "shallowCopy\x0a\x09<inlineJS: '\x0a\x09\x09var copy = self.a$cls._new();\x0a\x09\x09Object.keys(self).forEach(function(i) {\x0a\x09\x09\x09copy[i] = self[i];\x0a\x09\x09});\x0a\x09\x09return copy;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var copy = self.a$cls._new();\x0a\x09\x09Object.keys(self).forEach(function(i) {\x0a\x09\x09\x09copy[i] = self[i];\x0a\x09\x09});\x0a\x09\x09return copy;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var copy = self.a$cls._new();
- Object.keys(self).forEach(function(i) {
- copy[i] = self[i];
- });
- return copy;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shallowCopy",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "shouldNotImplement",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "shouldNotImplement\x0a\x09self error: 'This method should not be implemented in ', self class name",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:", ",", "name", "class"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("This method should not be implemented in ".__comma($recv($self._class())._name()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shouldNotImplement",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "size",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "size\x0a\x09self error: 'Object not indexable'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("Object not indexable");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"size",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "subclassResponsibility",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "subclassResponsibility\x0a\x09self error: 'This method is a responsibility of a subclass'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("This method is a responsibility of a subclass");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclassResponsibility",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "timesSelfToNumber:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "timesSelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("I am not a number.");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"timesSelfToNumber:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "value",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "value\x0a\x09<inlineJS: 'return self.valueOf()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.valueOf()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.valueOf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "xorSelfToNumber:",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "xorSelfToNumber: aNumber\x0a\x09self error: 'I am not a number.'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("I am not a number.");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"xorSelfToNumber:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "accessorProtocolWith:",
- protocol: "helios",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aGenerator"],
- source: "accessorProtocolWith: aGenerator\x0a\x09aGenerator accessorProtocolForObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["accessorProtocolForObject"]
- }, function ($methodClass){ return function (aGenerator){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aGenerator)._accessorProtocolForObject();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"accessorProtocolWith:",{aGenerator:aGenerator})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object.a$cls);
- $core.addMethod(
- $core.method({
- selector: "accessorsSourceCodesWith:",
- protocol: "helios",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aGenerator"],
- source: "accessorsSourceCodesWith: aGenerator\x0a\x09aGenerator accessorsForObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["accessorsForObject"]
- }, function ($methodClass){ return function (aGenerator){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aGenerator)._accessorsForObject();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"accessorsSourceCodesWith:",{aGenerator:aGenerator})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object.a$cls);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09\x22no op\x22",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.Object.a$cls);
- $core.addMethod(
- $core.method({
- selector: "initializeProtocolWith:",
- protocol: "helios",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aGenerator"],
- source: "initializeProtocolWith: aGenerator\x0a\x09aGenerator initializeProtocolForObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initializeProtocolForObject"]
- }, function ($methodClass){ return function (aGenerator){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aGenerator)._initializeProtocolForObject();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initializeProtocolWith:",{aGenerator:aGenerator})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object.a$cls);
- $core.addMethod(
- $core.method({
- selector: "initializeSourceCodesWith:",
- protocol: "helios",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aGenerator"],
- source: "initializeSourceCodesWith: aGenerator\x0a\x09aGenerator initializeForObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initializeForObject"]
- }, function ($methodClass){ return function (aGenerator){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aGenerator)._initializeForObject();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initializeSourceCodesWith:",{aGenerator:aGenerator})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object.a$cls);
- $core.addClass("Boolean", $globals.Object, "Kernel-Objects");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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: [ ... ]";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "&",
- protocol: "controlling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBoolean"],
- source: "& aBoolean\x0a\x09<inlineJS: '\x0a\x09\x09if(self == true) {\x0a\x09\x09return aBoolean;\x0a\x09\x09} else {\x0a\x09\x09return false;\x0a\x09\x09}\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09if(self == true) {\x0a\x09\x09return aBoolean;\x0a\x09\x09} else {\x0a\x09\x09return false;\x0a\x09\x09}\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBoolean){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(self == true) {
- return aBoolean;
- } else {
- return false;
- }
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"&",{aBoolean:aBoolean})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "==",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBoolean"],
- source: "== aBoolean\x0a<inlineJS: '\x0a\x09if (typeof aBoolean === \x22boolean\x22) return (self == true) === aBoolean;\x0a\x09else if (aBoolean != null && typeof aBoolean === \x22object\x22) return (self == true) === aBoolean.valueOf();\x0a\x09else return false;\x0a'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09if (typeof aBoolean === \x22boolean\x22) return (self == true) === aBoolean;\x0a\x09else if (aBoolean != null && typeof aBoolean === \x22object\x22) return (self == true) === aBoolean.valueOf();\x0a\x09else return false;"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBoolean){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if (typeof aBoolean === "boolean") return (self == true) === aBoolean;
- else if (aBoolean != null && typeof aBoolean === "object") return (self == true) === aBoolean.valueOf();
- else return false;;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"==",{aBoolean:aBoolean})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "and:",
- protocol: "controlling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "and: aBlock\x0a\x09^ self\x0a\x09\x09ifTrue: \x22aBlock\x22 [ aBlock value ]\x0a\x09\x09ifFalse: [ false ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "value"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert(self)){
- return $recv(aBlock)._value();
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"and:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "asBit",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asBit\x0a\x09^ self ifTrue: [ 1 ] ifFalse: [ 0 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert(self)){
- return (1);
- } else {
- return (0);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asBit",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptObject",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptObject\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptSource",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptSource\x0a\x09^ self asString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["asString"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._asString();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "asString",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asString\x0a\x09<inlineJS: 'return self.toString()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.toString()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.toString();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "deepCopy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "deepCopy\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "ifFalse:",
- protocol: "controlling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "ifFalse: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self ifTrue: [] ifFalse: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._ifTrue_ifFalse_((function(){
- }),aBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifFalse:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "ifFalse:ifTrue:",
- protocol: "controlling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anotherBlock"],
- source: "ifFalse: aBlock ifTrue: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self ifTrue: anotherBlock ifFalse: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:"]
- }, function ($methodClass){ return function (aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._ifTrue_ifFalse_(anotherBlock,aBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifFalse:ifTrue:",{aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "ifTrue:",
- protocol: "controlling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "ifTrue: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self ifTrue: aBlock ifFalse: []",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._ifTrue_ifFalse_(aBlock,(function(){
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifTrue:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "ifTrue:ifFalse:",
- protocol: "controlling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anotherBlock"],
- source: "ifTrue: aBlock ifFalse: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09<inlineJS: '\x0a\x09\x09if(self == true) {\x0a\x09\x09return aBlock._value();\x0a\x09\x09} else {\x0a\x09\x09return anotherBlock._value();\x0a\x09\x09}\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09if(self == true) {\x0a\x09\x09return aBlock._value();\x0a\x09\x09} else {\x0a\x09\x09return anotherBlock._value();\x0a\x09\x09}\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(self == true) {
- return aBlock._value();
- } else {
- return anotherBlock._value();
- }
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifTrue:ifFalse:",{aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "isBoolean",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isBoolean\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "isImmutable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isImmutable\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "not",
- protocol: "controlling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "not\x0a\x09^ self = false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self.__eq(false);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"not",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "or:",
- protocol: "controlling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "or: aBlock\x0a\x09^ self\x0a\x09\x09ifTrue: [ true ]\x0a\x09\x09ifFalse: \x22aBlock\x22 [ aBlock value ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "value"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert(self)){
- return true;
- } else {
- return $recv(aBlock)._value();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"or:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "printOn: aStream\x0a\x09aStream nextPutAll: self asString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "asString"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._nextPutAll_($self._asString());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "shallowCopy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "shallowCopy\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.Boolean);
- $core.addMethod(
- $core.method({
- selector: "|",
- protocol: "controlling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBoolean"],
- source: "| aBoolean\x0a\x09<inlineJS: '\x0a\x09\x09if(self == true) {\x0a\x09\x09return true;\x0a\x09\x09} else {\x0a\x09\x09return aBoolean;\x0a\x09\x09}\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09if(self == true) {\x0a\x09\x09return true;\x0a\x09\x09} else {\x0a\x09\x09return aBoolean;\x0a\x09\x09}\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBoolean){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(self == true) {
- return true;
- } else {
- return aBoolean;
- }
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"|",{aBoolean:aBoolean})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Boolean);
- $core.addClass("Date", $globals.Object, "Kernel-Objects");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.).";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "+",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "+ aNumber\x0a\x09<inlineJS: 'return new Date($self.getTime() + aNumber)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return new Date($self.getTime() + aNumber)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return new Date($self.getTime() + aNumber);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"+",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "-",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDate"],
- source: "- aDate\x0a\x09<inlineJS: 'return self - aDate'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self - aDate"]]],
- messageSends: []
- }, function ($methodClass){ return function (aDate){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self - aDate;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"-",{aDate:aDate})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "<",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDate"],
- source: "< aDate\x0a\x09<inlineJS: 'return self < aDate'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self < aDate"]]],
- messageSends: []
- }, function ($methodClass){ return function (aDate){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self < aDate;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"<",{aDate:aDate})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "<=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDate"],
- source: "<= aDate\x0a\x09<inlineJS: 'return self <= aDate'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self <= aDate"]]],
- messageSends: []
- }, function ($methodClass){ return function (aDate){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self <= aDate;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"<=",{aDate:aDate})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDate"],
- source: "= aDate\x0a\x09^ (aDate class == self class) and: [ self asMilliseconds == aDate asMilliseconds ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "==", "class", "asMilliseconds"]
- }, function ($methodClass){ return function (aDate){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv([$recv(aDate)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq_eq($self._class())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=1
- //>>excludeEnd("ctx");
- ][0])){
- return $recv([$self._asMilliseconds()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asMilliseconds"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq_eq($recv(aDate)._asMilliseconds());
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"=",{aDate:aDate})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: ">",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDate"],
- source: "> aDate\x0a\x09<inlineJS: 'return self > aDate'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self > aDate"]]],
- messageSends: []
- }, function ($methodClass){ return function (aDate){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self > aDate;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,">",{aDate:aDate})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: ">=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDate"],
- source: ">= aDate\x0a\x09<inlineJS: 'return self >= aDate'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self >= aDate"]]],
- messageSends: []
- }, function ($methodClass){ return function (aDate){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self >= aDate;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,">=",{aDate:aDate})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "asDateString",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asDateString\x0a\x09<inlineJS: 'return self.toDateString()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.toDateString()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.toDateString();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asDateString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "asLocaleString",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asLocaleString\x0a\x09<inlineJS: 'return self.toLocaleString()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.toLocaleString()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.toLocaleString();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asLocaleString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "asMilliseconds",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asMilliseconds\x0a\x09^ self time",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["time"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._time();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asMilliseconds",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "asNumber",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asNumber\x0a\x09^ self asMilliseconds",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["asMilliseconds"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._asMilliseconds();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asNumber",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "asString",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asString\x0a\x09<inlineJS: 'return self.toString()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.toString()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.toString();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "asTimeString",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asTimeString\x0a\x09<inlineJS: 'return self.toTimeString()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.toTimeString()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.toTimeString();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asTimeString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "day",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "day\x0a\x09^ self dayOfWeek",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["dayOfWeek"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._dayOfWeek();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"day",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "day:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "day: aNumber\x0a\x09self dayOfWeek: aNumber",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["dayOfWeek:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._dayOfWeek_(aNumber);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"day:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "dayOfMonth",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "dayOfMonth\x0a\x09<inlineJS: 'return self.getDate()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.getDate()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.getDate();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dayOfMonth",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "dayOfMonth:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "dayOfMonth: aNumber\x0a\x09<inlineJS: 'self.setDate(aNumber)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["self.setDate(aNumber)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- self.setDate(aNumber);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dayOfMonth:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "dayOfWeek",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "dayOfWeek\x0a\x09<inlineJS: 'return self.getDay() + 1'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.getDay() + 1"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.getDay() + 1;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dayOfWeek",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "dayOfWeek:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "dayOfWeek: aNumber\x0a\x09<inlineJS: 'return self.setDay(aNumber - 1)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.setDay(aNumber - 1)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.setDay(aNumber - 1);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dayOfWeek:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "hours",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "hours\x0a\x09<inlineJS: 'return self.getHours()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.getHours()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.getHours();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"hours",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "hours:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "hours: aNumber\x0a\x09<inlineJS: 'self.setHours(aNumber)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["self.setHours(aNumber)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- self.setHours(aNumber);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"hours:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "milliseconds",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "milliseconds\x0a\x09<inlineJS: 'return self.getMilliseconds()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.getMilliseconds()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.getMilliseconds();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"milliseconds",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "milliseconds:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "milliseconds: aNumber\x0a\x09<inlineJS: 'self.setMilliseconds(aNumber)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["self.setMilliseconds(aNumber)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- self.setMilliseconds(aNumber);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"milliseconds:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "minutes",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "minutes\x0a\x09<inlineJS: 'return self.getMinutes()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.getMinutes()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.getMinutes();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"minutes",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "minutes:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "minutes: aNumber\x0a\x09<inlineJS: 'self.setMinutes(aNumber)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["self.setMinutes(aNumber)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- self.setMinutes(aNumber);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"minutes:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "month",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "month\x0a\x09<inlineJS: 'return self.getMonth() + 1'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.getMonth() + 1"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.getMonth() + 1;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"month",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "month:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "month: aNumber\x0a\x09<inlineJS: 'self.setMonth(aNumber - 1)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["self.setMonth(aNumber - 1)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- self.setMonth(aNumber - 1);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"month:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "printOn: aStream\x0a\x09aStream nextPutAll: self asString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "asString"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._nextPutAll_($self._asString());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "seconds",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "seconds\x0a\x09<inlineJS: 'return self.getSeconds()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.getSeconds()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.getSeconds();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"seconds",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "seconds:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "seconds: aNumber\x0a\x09<inlineJS: 'self.setSeconds(aNumber)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["self.setSeconds(aNumber)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- self.setSeconds(aNumber);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"seconds:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "time",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "time\x0a\x09<inlineJS: 'return self.getTime()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.getTime()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.getTime();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"time",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "time:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "time: aNumber\x0a\x09<inlineJS: 'self.setTime(aNumber)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["self.setTime(aNumber)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- self.setTime(aNumber);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"time:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "year",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "year\x0a\x09<inlineJS: 'return self.getFullYear()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.getFullYear()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.getFullYear();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"year",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "year:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "year: aNumber\x0a\x09<inlineJS: 'self.setFullYear(aNumber)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["self.setFullYear(aNumber)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- self.setFullYear(aNumber);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"year:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "classTag",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classTag\x0a\x09\x22Returns a tag or general category for this class.\x0a\x09Typically used to help tools do some reflection.\x0a\x09Helios, for example, uses this to decide what icon the class should display.\x22\x0a\x09\x0a\x09^ 'magnitude'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "magnitude";
- }; }),
- $globals.Date.a$cls);
- $core.addMethod(
- $core.method({
- selector: "fromMilliseconds:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "fromMilliseconds: aNumber\x0a\x09^ self new: aNumber",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._new_(aNumber);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fromMilliseconds:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date.a$cls);
- $core.addMethod(
- $core.method({
- selector: "fromSeconds:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "fromSeconds: aNumber\x0a\x09^ self fromMilliseconds: aNumber * 1000",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["fromMilliseconds:", "*"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._fromMilliseconds_($recv(aNumber).__star((1000)));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fromSeconds:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date.a$cls);
- $core.addMethod(
- $core.method({
- selector: "fromString:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "fromString: aString\x0a\x09\x22Example: Date fromString('2011/04/15 00:00:00')\x22\x0a\x09^ self new: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._new_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fromString:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date.a$cls);
- $core.addMethod(
- $core.method({
- selector: "millisecondsToRun:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "millisecondsToRun: aBlock\x0a\x09| t |\x0a\x09t := Date now.\x0a\x09aBlock value.\x0a\x09^ Date now - t",
- referencedClasses: ["Date"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["now", "value", "-"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- var t;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- t=[$recv($globals.Date)._now()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["now"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aBlock)._value();
- return $recv($recv($globals.Date)._now()).__minus(t);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"millisecondsToRun:",{aBlock:aBlock,t:t})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date.a$cls);
- $core.addMethod(
- $core.method({
- selector: "new:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "new: anObject\x0a\x09<inlineJS: 'return new Date(anObject)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return new Date(anObject)"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return new Date(anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"new:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date.a$cls);
- $core.addMethod(
- $core.method({
- selector: "now",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "now\x0a\x09^ self today",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["today"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._today();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"now",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date.a$cls);
- $core.addMethod(
- $core.method({
- selector: "today",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "today\x0a\x09^ self new",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"today",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date.a$cls);
- $core.addClass("Number", $globals.Object, "Kernel-Objects");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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 ].";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "&",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "& aNumber\x0a\x09^ self bitAnd: aNumber",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["bitAnd:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._bitAnd_(aNumber);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"&",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "*",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "* aNumber\x0a\x09<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self * aNumber :\x0a\x09\x09$recv(aNumber)._timesSelfToNumber_(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self * aNumber :\x0a\x09\x09$recv(aNumber)._timesSelfToNumber_(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aNumber === "number" ?
- self * aNumber :
- $recv(aNumber)._timesSelfToNumber_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"*",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "**",
- protocol: "mathematical functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["exponent"],
- source: "** exponent\x0a\x09^ self raisedTo: exponent",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["raisedTo:"]
- }, function ($methodClass){ return function (exponent){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._raisedTo_(exponent);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"**",{exponent:exponent})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "+",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "+ aNumber\x0a\x09<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self + aNumber :\x0a\x09\x09$recv(aNumber)._plusSelfToNumber_(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self + aNumber :\x0a\x09\x09$recv(aNumber)._plusSelfToNumber_(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aNumber === "number" ?
- self + aNumber :
- $recv(aNumber)._plusSelfToNumber_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"+",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "-",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "- aNumber\x0a\x09<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self - aNumber :\x0a\x09\x09$recv(aNumber)._minusSelfToNumber_(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self - aNumber :\x0a\x09\x09$recv(aNumber)._minusSelfToNumber_(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aNumber === "number" ?
- self - aNumber :
- $recv(aNumber)._minusSelfToNumber_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"-",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "/",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "/ aNumber\x0a\x09<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self / aNumber :\x0a\x09\x09$recv(aNumber)._divideBySelfToNumber_(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self / aNumber :\x0a\x09\x09$recv(aNumber)._divideBySelfToNumber_(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aNumber === "number" ?
- self / aNumber :
- $recv(aNumber)._divideBySelfToNumber_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"/",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "//",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "// aNumber\x0a\x09^ (self / aNumber) floor",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["floor", "/"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.__slash(aNumber))._floor();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"//",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "<",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "< aNumber\x0a<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) < aNumber :\x0a\x09$recv(aNumber)._isNumberLessThanSelf_(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) < aNumber :\x0a\x09$recv(aNumber)._isNumberLessThanSelf_(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aNumber === "number" ?
- Number(self) < aNumber :
- $recv(aNumber)._isNumberLessThanSelf_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"<",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "<=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "<= aNumber\x0a<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) <= aNumber :\x0a\x09$recv(aNumber)._isNumberLessThanOrEqualToSelf_(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) <= aNumber :\x0a\x09$recv(aNumber)._isNumberLessThanOrEqualToSelf_(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aNumber === "number" ?
- Number(self) <= aNumber :
- $recv(aNumber)._isNumberLessThanOrEqualToSelf_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"<=",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "==",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "== aNumber\x0a<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) === aNumber :\x0a\x09$recv(aNumber)._isNumberEqualToSelf_(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) === aNumber :\x0a\x09$recv(aNumber)._isNumberEqualToSelf_(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aNumber === "number" ?
- Number(self) === aNumber :
- $recv(aNumber)._isNumberEqualToSelf_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"==",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: ">",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "> aNumber\x0a<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) > aNumber :\x0a\x09$recv(aNumber)._isNumberGreaterThanSelf_(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) > aNumber :\x0a\x09$recv(aNumber)._isNumberGreaterThanSelf_(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aNumber === "number" ?
- Number(self) > aNumber :
- $recv(aNumber)._isNumberGreaterThanSelf_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,">",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: ">=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: ">= aNumber\x0a<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) >= aNumber :\x0a\x09$recv(aNumber)._isNumberGreaterThanOrEqualToSelf_(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09Number(self) >= aNumber :\x0a\x09$recv(aNumber)._isNumberGreaterThanOrEqualToSelf_(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aNumber === "number" ?
- Number(self) >= aNumber :
- $recv(aNumber)._isNumberGreaterThanOrEqualToSelf_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,">=",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "@",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "@ aNumber\x0a\x09^ Point x: self y: aNumber",
- referencedClasses: ["Point"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["x:y:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Point)._x_y_(self,aNumber);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"@",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "\x5c\x5c",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "\x5c\x5c aNumber\x0a\x09<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self % aNumber :\x0a\x09\x09$recv(aNumber)._divisionRemainderBySelfToNumber_(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self % aNumber :\x0a\x09\x09$recv(aNumber)._divisionRemainderBySelfToNumber_(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aNumber === "number" ?
- self % aNumber :
- $recv(aNumber)._divisionRemainderBySelfToNumber_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"\x5c\x5c",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "abs",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "abs\x0a\x09<inlineJS: 'return Math.abs(self);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.abs(self);"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.abs(self);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"abs",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "andSelfToNumber:",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "andSelfToNumber: aNumber\x0a\x09<inlineJS: 'return aNumber & self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aNumber & self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aNumber & self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"andSelfToNumber:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "arcCos",
- protocol: "mathematical functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "arcCos\x0a\x09<inlineJS: 'return Math.acos(self);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.acos(self);"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.acos(self);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"arcCos",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "arcSin",
- protocol: "mathematical functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "arcSin\x0a\x09<inlineJS: 'return Math.asin(self);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.asin(self);"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.asin(self);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"arcSin",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "arcTan",
- protocol: "mathematical functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "arcTan\x0a\x09<inlineJS: 'return Math.atan(self);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.atan(self);"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.atan(self);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"arcTan",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "arcTan:",
- protocol: "mathematical functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "arcTan: aNumber\x0a\x09<inlineJS: 'return Math.atan2(self, aNumber);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.atan2(self, aNumber);"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.atan2(self, aNumber);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"arcTan:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptObject",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptObject\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptSource",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptSource\x0a\x09^ '(', self printString, ')'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "printString"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return [$recv("(".__comma($self._printString())).__comma(")")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "asNumber",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asNumber\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "asPoint",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asPoint\x0a\x09^ Point x: self y: self",
- referencedClasses: ["Point"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["x:y:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Point)._x_y_(self,self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asPoint",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "asString",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asString\x0a\x09<inlineJS: 'return String(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return String(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return String(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "atRandom",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "atRandom\x0a\x09^ (Random new next * self) truncated + 1",
- referencedClasses: ["Random"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["+", "truncated", "*", "next", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($recv($recv($recv($globals.Random)._new())._next()).__star(self))._truncated()).__plus((1));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"atRandom",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "between:and:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["min", "max"],
- source: "between: min and: max\x0a ^ self >= min and: [ self <= max ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", ">=", "<="]
- }, function ($methodClass){ return function (min,max){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self.__gt_eq(min))){
- return $self.__lt_eq(max);
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"between:and:",{min:min,max:max})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "bitAnd:",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "bitAnd: aNumber\x0a\x09<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self & aNumber :\x0a\x09\x09$recv(aNumber)._andSelfToNumber_(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self & aNumber :\x0a\x09\x09$recv(aNumber)._andSelfToNumber_(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aNumber === "number" ?
- self & aNumber :
- $recv(aNumber)._andSelfToNumber_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"bitAnd:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "bitNot",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "bitNot\x0a\x09<inlineJS: 'return ~self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return ~self"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return ~self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"bitNot",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "bitOr:",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "bitOr: aNumber\x0a\x09<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self | aNumber :\x0a\x09\x09$recv(aNumber)._orSelfToNumber_(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self | aNumber :\x0a\x09\x09$recv(aNumber)._orSelfToNumber_(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aNumber === "number" ?
- self | aNumber :
- $recv(aNumber)._orSelfToNumber_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"bitOr:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "bitXor:",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "bitXor: aNumber\x0a\x09<inlineJS: 'return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self ^ aNumber :\x0a\x09\x09$recv(aNumber)._xorSelfToNumber_(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aNumber === \x22number\x22 ?\x0a\x09\x09self ^ aNumber :\x0a\x09\x09$recv(aNumber)._xorSelfToNumber_(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aNumber === "number" ?
- self ^ aNumber :
- $recv(aNumber)._xorSelfToNumber_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"bitXor:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "ceiling",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "ceiling\x0a\x09<inlineJS: 'return Math.ceil(self);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.ceil(self);"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.ceil(self);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ceiling",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "copy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "copy\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "cos",
- protocol: "mathematical functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "cos\x0a\x09<inlineJS: 'return Math.cos(self);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.cos(self);"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.cos(self);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"cos",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "deepCopy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "deepCopy\x0a\x09^ self copy",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copy"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._copy();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"deepCopy",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "degreesToRadians",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "degreesToRadians\x0a\x09^ self * Number radiansPerDegree",
- referencedClasses: ["Number"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["*", "radiansPerDegree"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self.__star($recv($globals.Number)._radiansPerDegree());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"degreesToRadians",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "divideBySelfToNumber:",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "divideBySelfToNumber: aNumber\x0a\x09<inlineJS: 'return aNumber / self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aNumber / self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aNumber / self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"divideBySelfToNumber:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "divisionRemainderBySelfToNumber:",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "divisionRemainderBySelfToNumber: aNumber\x0a\x09<inlineJS: 'return aNumber % self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aNumber % self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aNumber % self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"divisionRemainderBySelfToNumber:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "even",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "even\x0a\x09^ 0 = (self \x5c\x5c 2)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["=", "\x5c\x5c"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return (0).__eq($self.__backslash_backslash((2)));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"even",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "floor",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "floor\x0a\x09<inlineJS: 'return Math.floor(self);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.floor(self);"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.floor(self);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"floor",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "isFinite",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isFinite\x0a\x09\x22Answer whether the receiver is finite\x22\x0a\x09<inlineJS: 'return Number.isFinite(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Number.isFinite(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Number.isFinite(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isFinite",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "isImmutable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isImmutable\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "isNaN",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isNaN\x0a\x09\x22Answer whether the receiver is IEEE-754 not-a-number\x22\x0a\x09<inlineJS: 'return Number.isNaN(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Number.isNaN(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Number.isNaN(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isNaN",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "isNumber",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isNumber\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "isNumberEqualToSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "isNumberEqualToSelf: aNumber\x0a\x09<inlineJS: 'return aNumber === Number(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aNumber === Number(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aNumber === Number(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isNumberEqualToSelf:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "isNumberGreaterThanOrEqualToSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "isNumberGreaterThanOrEqualToSelf: aNumber\x0a\x09<inlineJS: 'return aNumber >= self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aNumber >= self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aNumber >= self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isNumberGreaterThanOrEqualToSelf:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "isNumberGreaterThanSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "isNumberGreaterThanSelf: aNumber\x0a\x09<inlineJS: 'return aNumber > self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aNumber > self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aNumber > self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isNumberGreaterThanSelf:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "isNumberLessThanOrEqualToSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "isNumberLessThanOrEqualToSelf: aNumber\x0a\x09<inlineJS: 'return aNumber <= self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aNumber <= self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aNumber <= self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isNumberLessThanOrEqualToSelf:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "isNumberLessThanSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "isNumberLessThanSelf: aNumber\x0a\x09<inlineJS: 'return aNumber < self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aNumber < self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aNumber < self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isNumberLessThanSelf:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "isZero",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isZero\x0a\x09^ self = 0",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self.__eq((0));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isZero",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "ln",
- protocol: "mathematical functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "ln\x0a\x09<inlineJS: 'return Math.log(self);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.log(self);"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.log(self);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ln",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "ln1p",
- protocol: "mathematical functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "ln1p\x0a\x09<inlineJS: 'return Math.log1p(self);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.log1p(self);"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.log1p(self);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ln1p",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "log",
- protocol: "mathematical functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "log\x0a\x09<inlineJS: 'return Math.log(self) / Math.LN10;'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.log(self) / Math.LN10;"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.log(self) / Math.LN10;;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"log",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "log:",
- protocol: "mathematical functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "log: aNumber\x0a\x09<inlineJS: 'return Math.log(self) / Math.log(aNumber);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.log(self) / Math.log(aNumber);"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.log(self) / Math.log(aNumber);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"log:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "max:",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "max: aNumber\x0a\x09<inlineJS: 'return Math.max(self, aNumber);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.max(self, aNumber);"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.max(self, aNumber);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"max:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "min:",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "min: aNumber\x0a\x09<inlineJS: 'return Math.min(self, aNumber);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.min(self, aNumber);"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.min(self, aNumber);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"min:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "min:max:",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMin", "aMax"],
- source: "min: aMin max: aMax\x0a\x09^ (self min: aMin) max: aMax",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["max:", "min:"]
- }, function ($methodClass){ return function (aMin,aMax){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._min_(aMin))._max_(aMax);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"min:max:",{aMin:aMin,aMax:aMax})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "minusSelfToNumber:",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "minusSelfToNumber: aNumber\x0a\x09<inlineJS: 'return aNumber - self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aNumber - self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aNumber - self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"minusSelfToNumber:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "negated",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "negated\x0a\x09^ 0 - self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["-"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return (0).__minus(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"negated",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "negative",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "negative\x0a\x09\x22Answer whether the receiver is mathematically negative.\x22\x0a\x0a\x09^ self < 0",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["<"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self.__lt((0));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"negative",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "odd",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "odd\x0a\x09^ self even not",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["not", "even"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._even())._not();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"odd",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "orSelfToNumber:",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "orSelfToNumber: aNumber\x0a\x09<inlineJS: 'return aNumber | self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aNumber | self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aNumber | self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"orSelfToNumber:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "plusSelfToNumber:",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "plusSelfToNumber: aNumber\x0a\x09<inlineJS: 'return aNumber + self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aNumber + self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aNumber + self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"plusSelfToNumber:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "positive",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "positive\x0a\x09\x22Answer whether the receiver is positive or equal to 0. (ST-80 protocol).\x22\x0a\x0a\x09^ self >= 0",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [">="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self.__gt_eq((0));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"positive",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "printOn: aStream\x0a\x09aStream nextPutAll: self asString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "asString"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._nextPutAll_($self._asString());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "printShowingDecimalPlaces:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["placesDesired"],
- source: "printShowingDecimalPlaces: placesDesired\x0a\x09<inlineJS: 'return self.toFixed(placesDesired)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.toFixed(placesDesired)"]]],
- messageSends: []
- }, function ($methodClass){ return function (placesDesired){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.toFixed(placesDesired);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printShowingDecimalPlaces:",{placesDesired:placesDesired})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "printStringBase:",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBase"],
- source: "printStringBase: aBase\x0a\x09<inlineJS: 'return self.toString(aBase)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.toString(aBase)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBase){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.toString(aBase);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printStringBase:",{aBase:aBase})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "radiansToDegrees",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "radiansToDegrees\x0a\x09^ self / Number radiansPerDegree",
- referencedClasses: ["Number"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["/", "radiansPerDegree"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self.__slash($recv($globals.Number)._radiansPerDegree());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"radiansToDegrees",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "raisedTo:",
- protocol: "mathematical functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["exponent"],
- source: "raisedTo: exponent\x0a\x09<inlineJS: 'return Math.pow(self, exponent);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.pow(self, exponent);"]]],
- messageSends: []
- }, function ($methodClass){ return function (exponent){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.pow(self, exponent);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"raisedTo:",{exponent:exponent})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "rounded",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "rounded\x0a\x09<inlineJS: 'return Math.round(self);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.round(self);"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.round(self);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"rounded",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "sign",
- protocol: "mathematical functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sign\x0a\x09self isZero \x0a\x09\x09ifTrue: [ ^ 0 ].\x0a\x09self positive\x0a\x09\x09ifTrue: [ ^ 1 ]\x0a\x09\x09ifFalse: [ ^ -1 ].",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "isZero", "ifTrue:ifFalse:", "positive"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._isZero())){
- return (0);
- }
- if($core.assert($self._positive())){
- return (1);
- } else {
- return (-1);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sign",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "sin",
- protocol: "mathematical functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sin\x0a\x09<inlineJS: 'return Math.sin(self);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.sin(self);"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.sin(self);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sin",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "sqrt",
- protocol: "mathematical functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sqrt\x0a\x09<inlineJS: 'return Math.sqrt(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.sqrt(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.sqrt(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sqrt",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "squared",
- protocol: "mathematical functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "squared\x0a\x09^ self * self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["*"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self.__star(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"squared",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "tan",
- protocol: "mathematical functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "tan\x0a\x09<inlineJS: 'return Math.tan(self);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.tan(self);"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.tan(self);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"tan",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "timesRepeat:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "timesRepeat: aBlock\x0a\x09| count |\x0a\x09count := 1.\x0a\x09[ count > self ] whileFalse: [\x0a\x09\x09aBlock value.\x0a\x09\x09count := count + 1 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["whileFalse:", ">", "value", "+"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- var count;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- count=(1);
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(count).__gt(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._whileFalse_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(aBlock)._value();
- count=$recv(count).__plus((1));
- return count;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"timesRepeat:",{aBlock:aBlock,count:count})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "timesSelfToNumber:",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "timesSelfToNumber: aNumber\x0a\x09<inlineJS: 'return aNumber * self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aNumber * self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aNumber * self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"timesSelfToNumber:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "to:",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- 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",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["truncated", "+", "new", "timesRepeat:", "-", "at:put:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- var array,first,last,count;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- first=[$self._truncated()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["truncated"]=1
- //>>excludeEnd("ctx");
- ][0];
- last=[$recv($recv(aNumber)._truncated()).__plus((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["+"]=1
- //>>excludeEnd("ctx");
- ][0];
- count=(1);
- array=$recv($globals.Array)._new();
- $recv($recv(last).__minus(first))._timesRepeat_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(array)._at_put_(count,first);
- count=[$recv(count).__plus((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["+"]=2
- //>>excludeEnd("ctx");
- ][0];
- first=$recv(first).__plus((1));
- return first;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return array;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"to:",{aNumber:aNumber,array:array,first:first,last:last,count:count})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "to:by:",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["stop", "step"],
- 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",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "ifTrue:", "=", "error:", "ifTrue:ifFalse:", "<", "whileTrue:", ">=", "at:put:", "+", "<="]
- }, function ($methodClass){ return function (stop,step){
- var self=this,$self=this;
- var array,value,pos;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- value=self;
- array=$recv($globals.Array)._new();
- pos=(1);
- if($core.assert($recv(step).__eq((0)))){
- $self._error_("step must be non-zero");
- }
- if($core.assert($recv(step).__lt((0)))){
- [$recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(value).__gt_eq(stop);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }))._whileTrue_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(array)._at_put_(pos,value)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["at:put:"]=1
- //>>excludeEnd("ctx");
- ][0];
- pos=[$recv(pos).__plus((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["+"]=1
- //>>excludeEnd("ctx");
- ][0];
- value=[$recv(value).__plus(step)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["+"]=2
- //>>excludeEnd("ctx");
- ][0];
- return value;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["whileTrue:"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(value).__lt_eq(stop);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
- //>>excludeEnd("ctx");
- }))._whileTrue_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(array)._at_put_(pos,value);
- pos=[$recv(pos).__plus((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["+"]=3
- //>>excludeEnd("ctx");
- ][0];
- value=$recv(value).__plus(step);
- return value;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)});
- //>>excludeEnd("ctx");
- }));
- }
- return array;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"to:by:",{stop:stop,step:step,array:array,value:value,pos:pos})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "to:by:do:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["stop", "step", "aBlock"],
- 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 ]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "=", "error:", "ifTrue:ifFalse:", "<", "whileTrue:", ">=", "value:", "+", "<="]
- }, function ($methodClass){ return function (stop,step,aBlock){
- var self=this,$self=this;
- var value;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- value=self;
- if($core.assert($recv(step).__eq((0)))){
- $self._error_("step must be non-zero");
- }
- if($core.assert($recv(step).__lt((0)))){
- [$recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(value).__gt_eq(stop);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }))._whileTrue_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(aBlock)._value_(value)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["value:"]=1
- //>>excludeEnd("ctx");
- ][0];
- value=[$recv(value).__plus(step)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["+"]=1
- //>>excludeEnd("ctx");
- ][0];
- return value;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["whileTrue:"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(value).__lt_eq(stop);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
- //>>excludeEnd("ctx");
- }))._whileTrue_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(aBlock)._value_(value);
- value=$recv(value).__plus(step);
- return value;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)});
- //>>excludeEnd("ctx");
- }));
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"to:by:do:",{stop:stop,step:step,aBlock:aBlock,value:value})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "to:do:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["stop", "aBlock"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["whileTrue:", "<=", "value:", "+"]
- }, function ($methodClass){ return function (stop,aBlock){
- var self=this,$self=this;
- var nextValue;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- nextValue=self;
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(nextValue).__lt_eq(stop);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._whileTrue_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(aBlock)._value_(nextValue);
- nextValue=$recv(nextValue).__plus((1));
- return nextValue;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"to:do:",{stop:stop,aBlock:aBlock,nextValue:nextValue})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "truncated",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "truncated\x0a\x09<inlineJS: '\x0a\x09\x09if(self >= 0) {\x0a\x09\x09\x09return Math.floor(self);\x0a\x09\x09} else {\x0a\x09\x09\x09return Math.floor(self * (-1)) * (-1);\x0a\x09\x09};\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09if(self >= 0) {\x0a\x09\x09\x09return Math.floor(self);\x0a\x09\x09} else {\x0a\x09\x09\x09return Math.floor(self * (-1)) * (-1);\x0a\x09\x09};\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(self >= 0) {
- return Math.floor(self);
- } else {
- return Math.floor(self * (-1)) * (-1);
- };
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"truncated",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "xorSelfToNumber:",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "xorSelfToNumber: aNumber\x0a\x09<inlineJS: 'return aNumber ^ self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aNumber ^ self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aNumber ^ self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"xorSelfToNumber:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "|",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "| aNumber\x0a\x09^ self bitOr: aNumber",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["bitOr:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._bitOr_(aNumber);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"|",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number);
- $core.addMethod(
- $core.method({
- selector: "classTag",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classTag\x0a\x09\x22Returns a tag or general category for this class.\x0a\x09Typically used to help tools do some reflection.\x0a\x09Helios, for example, uses this to decide what icon the class should display.\x22\x0a\x09\x0a\x09^ 'magnitude'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "magnitude";
- }; }),
- $globals.Number.a$cls);
- $core.addMethod(
- $core.method({
- selector: "e",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "e\x0a\x09<inlineJS: 'return Math.E;'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.E;"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.E;;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"e",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number.a$cls);
- $core.addMethod(
- $core.method({
- selector: "negativeInfinity",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "negativeInfinity\x0a\x09<inlineJS: 'return Number.NEGATIVE_INFINITY'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Number.NEGATIVE_INFINITY"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Number.NEGATIVE_INFINITY;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"negativeInfinity",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number.a$cls);
- $core.addMethod(
- $core.method({
- selector: "pi",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "pi\x0a\x09<inlineJS: 'return Math.PI'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.PI"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.PI;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"pi",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number.a$cls);
- $core.addMethod(
- $core.method({
- selector: "positiveInfinity",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "positiveInfinity\x0a\x09<inlineJS: 'return Number.POSITIVE_INFINITY'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Number.POSITIVE_INFINITY"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Number.POSITIVE_INFINITY;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"positiveInfinity",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number.a$cls);
- $core.addMethod(
- $core.method({
- selector: "radiansPerDegree",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "radiansPerDegree\x0a\x09^ (self pi) / 180",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["/", "pi"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._pi()).__slash((180));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"radiansPerDegree",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Number.a$cls);
- $core.addClass("Point", $globals.Object, "Kernel-Objects");
- $core.setSlots($globals.Point, ["x", "y"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "*",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint"],
- source: "* aPoint\x0a\x09^ Point x: self x * aPoint asPoint x y: self y * aPoint asPoint y",
- referencedClasses: ["Point"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["x:y:", "*", "x", "asPoint", "y"]
- }, function ($methodClass){ return function (aPoint){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Point)._x_y_([$recv([$self._x()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x"]=1
- //>>excludeEnd("ctx");
- ][0]).__star($recv([$recv(aPoint)._asPoint()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asPoint"]=1
- //>>excludeEnd("ctx");
- ][0])._x())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["*"]=1
- //>>excludeEnd("ctx");
- ][0],$recv([$self._y()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["y"]=1
- //>>excludeEnd("ctx");
- ][0]).__star($recv($recv(aPoint)._asPoint())._y()));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"*",{aPoint:aPoint})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "+",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint"],
- source: "+ aPoint\x0a\x09^ Point x: self x + aPoint asPoint x y: self y + aPoint asPoint y",
- referencedClasses: ["Point"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["x:y:", "+", "x", "asPoint", "y"]
- }, function ($methodClass){ return function (aPoint){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Point)._x_y_([$recv([$self._x()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x"]=1
- //>>excludeEnd("ctx");
- ][0]).__plus($recv([$recv(aPoint)._asPoint()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asPoint"]=1
- //>>excludeEnd("ctx");
- ][0])._x())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["+"]=1
- //>>excludeEnd("ctx");
- ][0],$recv([$self._y()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["y"]=1
- //>>excludeEnd("ctx");
- ][0]).__plus($recv($recv(aPoint)._asPoint())._y()));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"+",{aPoint:aPoint})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "-",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint"],
- source: "- aPoint\x0a\x09^ Point x: self x - aPoint asPoint x y: self y - aPoint asPoint y",
- referencedClasses: ["Point"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["x:y:", "-", "x", "asPoint", "y"]
- }, function ($methodClass){ return function (aPoint){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Point)._x_y_([$recv([$self._x()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x"]=1
- //>>excludeEnd("ctx");
- ][0]).__minus($recv([$recv(aPoint)._asPoint()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asPoint"]=1
- //>>excludeEnd("ctx");
- ][0])._x())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["-"]=1
- //>>excludeEnd("ctx");
- ][0],$recv([$self._y()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["y"]=1
- //>>excludeEnd("ctx");
- ][0]).__minus($recv($recv(aPoint)._asPoint())._y()));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"-",{aPoint:aPoint})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "/",
- protocol: "arithmetic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint"],
- source: "/ aPoint\x0a\x09^ Point x: self x / aPoint asPoint x y: self y / aPoint asPoint y",
- referencedClasses: ["Point"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["x:y:", "/", "x", "asPoint", "y"]
- }, function ($methodClass){ return function (aPoint){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Point)._x_y_([$recv([$self._x()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x"]=1
- //>>excludeEnd("ctx");
- ][0]).__slash($recv([$recv(aPoint)._asPoint()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asPoint"]=1
- //>>excludeEnd("ctx");
- ][0])._x())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["/"]=1
- //>>excludeEnd("ctx");
- ][0],$recv([$self._y()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["y"]=1
- //>>excludeEnd("ctx");
- ][0]).__slash($recv($recv(aPoint)._asPoint())._y()));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"/",{aPoint:aPoint})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "<",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint"],
- source: "< aPoint\x0a\x09^ self x < aPoint x and: [\x0a\x09\x09self y < aPoint y ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "<", "x", "y"]
- }, function ($methodClass){ return function (aPoint){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv([$self._x()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt($recv(aPoint)._x())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["<"]=1
- //>>excludeEnd("ctx");
- ][0])){
- return $recv([$self._y()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["y"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt($recv(aPoint)._y());
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"<",{aPoint:aPoint})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "<=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint"],
- source: "<= aPoint\x0a\x09^ self x <= aPoint x and: [\x0a\x09\x09self y <= aPoint y ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "<=", "x", "y"]
- }, function ($methodClass){ return function (aPoint){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv([$self._x()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt_eq($recv(aPoint)._x())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["<="]=1
- //>>excludeEnd("ctx");
- ][0])){
- return $recv([$self._y()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["y"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt_eq($recv(aPoint)._y());
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"<=",{aPoint:aPoint})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint"],
- source: "= aPoint\x0a\x09^ aPoint class = self class and: [\x0a\x09\x09(aPoint x = self x) & (aPoint y = self y) ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "=", "class", "&", "x", "y"]
- }, function ($methodClass){ return function (aPoint){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv([$recv(aPoint)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($self._class())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])){
- return $recv([$recv([$recv(aPoint)._x()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($self._x())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=2
- //>>excludeEnd("ctx");
- ][0]).__and($recv([$recv(aPoint)._y()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["y"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($self._y()));
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"=",{aPoint:aPoint})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: ">",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint"],
- source: "> aPoint\x0a\x09^ self x > aPoint x and: [\x0a\x09\x09self y > aPoint y ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", ">", "x", "y"]
- }, function ($methodClass){ return function (aPoint){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv([$self._x()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x"]=1
- //>>excludeEnd("ctx");
- ][0]).__gt($recv(aPoint)._x())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=1
- //>>excludeEnd("ctx");
- ][0])){
- return $recv([$self._y()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["y"]=1
- //>>excludeEnd("ctx");
- ][0]).__gt($recv(aPoint)._y());
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,">",{aPoint:aPoint})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: ">=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint"],
- source: ">= aPoint\x0a\x09^ self x >= aPoint x and: [\x0a\x09\x09self y >= aPoint y ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", ">=", "x", "y"]
- }, function ($methodClass){ return function (aPoint){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv([$self._x()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x"]=1
- //>>excludeEnd("ctx");
- ][0]).__gt_eq($recv(aPoint)._x())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">="]=1
- //>>excludeEnd("ctx");
- ][0])){
- return $recv([$self._y()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["y"]=1
- //>>excludeEnd("ctx");
- ][0]).__gt_eq($recv(aPoint)._y());
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,">=",{aPoint:aPoint})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "angle",
- protocol: "geometry",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "angle\x0a\x09^ self y arcTan: self x",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["arcTan:", "y", "x"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._y())._arcTan_($self._x());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"angle",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "asPoint",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asPoint\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "corner:",
- protocol: "rectangle creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint"],
- source: "corner: aPoint\x0a\x09^ Rectangle origin: self corner: aPoint",
- referencedClasses: ["Rectangle"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["origin:corner:"]
- }, function ($methodClass){ return function (aPoint){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Rectangle)._origin_corner_(self,aPoint);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"corner:",{aPoint:aPoint})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "dist:",
- protocol: "transforming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["-", "x", "y", "sqrt", "+", "*"]
- }, function ($methodClass){ return function (aPoint){
- var self=this,$self=this;
- var dx,dy;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- dx=[$recv($recv(aPoint)._x()).__minus($self.x)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["-"]=1
- //>>excludeEnd("ctx");
- ][0];
- dy=$recv($recv(aPoint)._y()).__minus($self.y);
- return $recv($recv([$recv(dx).__star(dx)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["*"]=1
- //>>excludeEnd("ctx");
- ][0]).__plus($recv(dy).__star(dy)))._sqrt();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dist:",{aPoint:aPoint,dx:dx,dy:dy})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "dotProduct:",
- protocol: "point functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint"],
- source: "dotProduct: aPoint\x0a\x09^ (x * aPoint x) + (y * aPoint y)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["+", "*", "x", "y"]
- }, function ($methodClass){ return function (aPoint){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv([$recv($self.x).__star($recv(aPoint)._x())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["*"]=1
- //>>excludeEnd("ctx");
- ][0]).__plus($recv($self.y).__star($recv(aPoint)._y()));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dotProduct:",{aPoint:aPoint})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "extent:",
- protocol: "rectangle creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint"],
- source: "extent: aPoint\x0a\x09^ Rectangle origin: self extent: aPoint",
- referencedClasses: ["Rectangle"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["origin:extent:"]
- }, function ($methodClass){ return function (aPoint){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Rectangle)._origin_extent_(self,aPoint);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"extent:",{aPoint:aPoint})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "normal",
- protocol: "point functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "normal\x0a\x09\x22Answer a Point representing the unit vector rotated 90 deg clockwise. For the zero point return -1@0.\x22\x0a\x0a\x09| n d |\x0a\x09n := y negated @ x.\x0a\x09(d := (n x * n x + (n y * n y))) = 0\x0a\x09\x09 ifTrue: [ ^ -1 @0 ].\x0a\x09^ n / d sqrt",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["@", "negated", "ifTrue:", "=", "+", "*", "x", "y", "/", "sqrt"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var n,d;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- n=[$recv($recv($self.y)._negated()).__at($self.x)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=1
- //>>excludeEnd("ctx");
- ][0];
- d=$recv([$recv([$recv(n)._x()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x"]=1
- //>>excludeEnd("ctx");
- ][0]).__star($recv(n)._x())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["*"]=1
- //>>excludeEnd("ctx");
- ][0]).__plus($recv([$recv(n)._y()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["y"]=1
- //>>excludeEnd("ctx");
- ][0]).__star($recv(n)._y()));
- if($core.assert($recv(d).__eq((0)))){
- return (-1).__at((0));
- }
- return $recv(n).__slash($recv(d)._sqrt());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"normal",{n:n,d:d})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "normalized",
- protocol: "point functions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "normalized\x0a\x09| r |\x0a\x09r := self r.\x0a\x09\x0a\x09r = 0\x0a\x09\x09ifTrue: [ ^ Point x: 0 y: 0 ]\x0a\x09\x09ifFalse: [ ^ Point x: x / r y: y / r ]",
- referencedClasses: ["Point"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["r", "ifTrue:ifFalse:", "=", "x:y:", "/"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var r;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- r=$self._r();
- if($core.assert($recv(r).__eq((0)))){
- return [$recv($globals.Point)._x_y_((0),(0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x:y:"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- return $recv($globals.Point)._x_y_([$recv($self.x).__slash(r)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["/"]=1
- //>>excludeEnd("ctx");
- ][0],$recv($self.y).__slash(r));
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"normalized",{r:r})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["printOn:", "nextPutAll:", "ifTrue:", "and:", "notNil", "negative", "space"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- [$recv($self.x)._printOn_(aStream)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printOn:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._nextPutAll_("@");
- if($core.assert($recv($self.y)._notNil())){
- $1=$recv($self.y)._negative();
- } else {
- $1=false;
- }
- if($core.assert($1)){
- $recv(aStream)._space();
- }
- $recv($self.y)._printOn_(aStream);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "r",
- protocol: "polar coordinates",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "r\x0a\x09^ ((x * x) + (y * y)) sqrt",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["sqrt", "+", "*"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv([$recv($self.x).__star($self.x)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["*"]=1
- //>>excludeEnd("ctx");
- ][0]).__plus($recv($self.y).__star($self.y)))._sqrt();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"r",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "rectangle:",
- protocol: "rectangle creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint"],
- source: "rectangle: aPoint\x0a\x09^ Rectangle point: self point: aPoint",
- referencedClasses: ["Rectangle"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["point:point:"]
- }, function ($methodClass){ return function (aPoint){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Rectangle)._point_point_(self,aPoint);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"rectangle:",{aPoint:aPoint})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "translateBy:",
- protocol: "transforming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["delta"],
- source: "translateBy: delta\x0a\x09\x22Answer a Point translated by delta (an instance of Point).\x22\x0a\x09^ (delta x + x) @ (delta y + y)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["@", "+", "x", "y"]
- }, function ($methodClass){ return function (delta){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv([$recv($recv(delta)._x()).__plus($self.x)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["+"]=1
- //>>excludeEnd("ctx");
- ][0]).__at($recv($recv(delta)._y()).__plus($self.y));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"translateBy:",{delta:delta})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "x",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "x\x0a\x09^ x",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.x;
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "x:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "x: aNumber\x0a\x09x := aNumber",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- $self.x=aNumber;
- return self;
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "y",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "y\x0a\x09^ y",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.y;
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "y:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "y: aNumber\x0a\x09y := aNumber",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- $self.y=aNumber;
- return self;
- }; }),
- $globals.Point);
- $core.addMethod(
- $core.method({
- selector: "classTag",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classTag\x0a\x09\x22Returns a tag or general category for this class.\x0a\x09Typically used to help tools do some reflection.\x0a\x09Helios, for example, uses this to decide what icon the class should display.\x22\x0a\x09\x0a\x09^ 'magnitude'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "magnitude";
- }; }),
- $globals.Point.a$cls);
- $core.addMethod(
- $core.method({
- selector: "x:y:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber", "anotherNumber"],
- source: "x: aNumber y: anotherNumber\x0a\x09^ self new\x0a\x09\x09x: aNumber;\x0a\x09\x09y: anotherNumber;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["x:", "new", "y:", "yourself"]
- }, function ($methodClass){ return function (aNumber,anotherNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._x_(aNumber);
- $recv($1)._y_(anotherNumber);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"x:y:",{aNumber:aNumber,anotherNumber:anotherNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Point.a$cls);
- $core.addClass("Random", $globals.Object, "Kernel-Objects");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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'`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "next",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "next\x0a\x09<inlineJS: 'return Math.random()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Math.random()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Math.random();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"next",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Random);
- $core.addMethod(
- $core.method({
- selector: "next:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- source: "next: anInteger\x0a\x09^ (1 to: anInteger) collect: [ :each | self next ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "to:", "next"]
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv((1)._to_(anInteger))._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._next();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"next:",{anInteger:anInteger})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Random);
- $core.addClass("Rectangle", $globals.Object, "Kernel-Objects");
- $core.setSlots($globals.Rectangle, ["origin", "corner"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.Rectangle.comment="I represent a Rectangle defined by my two corners.\x0a\x0aThe simplest way to create an instance is using Point methods:\x0a\x0a 1@1 corner: 2@2\x0a\x0aWIll create a rectangle with 1@1 as the top left and 2@2 at the bottom right.\x0a\x0a 1@1 extent: 1@1\x0a\x0aWill create the same rectangle, defining an origin and a size instead of an origin and a corner.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "=",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aRectangle"],
- source: "= aRectangle\x0a\x09^ origin = aRectangle origin and: [ corner = aRectangle corner ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "=", "origin", "corner"]
- }, function ($methodClass){ return function (aRectangle){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv($self.origin).__eq($recv(aRectangle)._origin())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])){
- return $recv($self.corner).__eq($recv(aRectangle)._corner());
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"=",{aRectangle:aRectangle})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Rectangle);
- $core.addMethod(
- $core.method({
- selector: "containsPoint:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint"],
- source: "containsPoint: aPoint\x0a\x09^ origin <= aPoint and: [ corner >= aPoint ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "<=", ">="]
- }, function ($methodClass){ return function (aPoint){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($self.origin).__lt_eq(aPoint))){
- return $recv($self.corner).__gt_eq(aPoint);
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"containsPoint:",{aPoint:aPoint})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Rectangle);
- $core.addMethod(
- $core.method({
- selector: "containsRect:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aRect"],
- source: "containsRect: aRect\x0a\x09^ aRect origin >= origin and: [ aRect corner <= corner ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", ">=", "origin", "<=", "corner"]
- }, function ($methodClass){ return function (aRect){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv(aRect)._origin()).__gt_eq($self.origin))){
- return $recv($recv(aRect)._corner()).__lt_eq($self.corner);
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"containsRect:",{aRect:aRect})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Rectangle);
- $core.addMethod(
- $core.method({
- selector: "corner",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "corner\x0a\x09^ corner",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.corner;
- }; }),
- $globals.Rectangle);
- $core.addMethod(
- $core.method({
- selector: "origin",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "origin\x0a\x09^ origin",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.origin;
- }; }),
- $globals.Rectangle);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "printOn: aStream\x0a\x09origin printOn: aStream.\x0a\x09aStream nextPutAll: ' corner: '.\x0a\x09corner printOn: aStream.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["printOn:", "nextPutAll:"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv($self.origin)._printOn_(aStream)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printOn:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._nextPutAll_(" corner: ");
- $recv($self.corner)._printOn_(aStream);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Rectangle);
- $core.addMethod(
- $core.method({
- selector: "setPoint:point:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["pt1", "pt2"],
- source: "setPoint: pt1 point: pt2\x0a\x0a\x09origin := (pt1 x min: pt2 x)@(pt1 y min: pt2 y).\x0a\x09corner := (pt1 x max: pt2 x)@(pt1 y max: pt2 y).",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["@", "min:", "x", "y", "max:"]
- }, function ($methodClass){ return function (pt1,pt2){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.origin=[$recv([$recv([$recv(pt1)._x()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x"]=1
- //>>excludeEnd("ctx");
- ][0])._min_([$recv(pt2)._x()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["min:"]=1
- //>>excludeEnd("ctx");
- ][0]).__at($recv([$recv(pt1)._y()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["y"]=1
- //>>excludeEnd("ctx");
- ][0])._min_([$recv(pt2)._y()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["y"]=2
- //>>excludeEnd("ctx");
- ][0]))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self.corner=$recv([$recv([$recv(pt1)._x()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x"]=3
- //>>excludeEnd("ctx");
- ][0])._max_($recv(pt2)._x())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["max:"]=1
- //>>excludeEnd("ctx");
- ][0]).__at($recv([$recv(pt1)._y()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["y"]=3
- //>>excludeEnd("ctx");
- ][0])._max_($recv(pt2)._y()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setPoint:point:",{pt1:pt1,pt2:pt2})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Rectangle);
- $core.addMethod(
- $core.method({
- selector: "origin:corner:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anOrigin", "aCorner"],
- source: "origin: anOrigin corner: aCorner\x0a\x09^ self basicNew setPoint: anOrigin point: aCorner.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["setPoint:point:", "basicNew"]
- }, function ($methodClass){ return function (anOrigin,aCorner){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._basicNew())._setPoint_point_(anOrigin,aCorner);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"origin:corner:",{anOrigin:anOrigin,aCorner:aCorner})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Rectangle.a$cls);
- $core.addMethod(
- $core.method({
- selector: "origin:extent:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anOrigin", "anExtent"],
- source: "origin: anOrigin extent: anExtent\x0a\x09^ self basicNew setPoint: anOrigin point: anOrigin + anExtent.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["setPoint:point:", "basicNew", "+"]
- }, function ($methodClass){ return function (anOrigin,anExtent){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._basicNew())._setPoint_point_(anOrigin,$recv(anOrigin).__plus(anExtent));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"origin:extent:",{anOrigin:anOrigin,anExtent:anExtent})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Rectangle.a$cls);
- $core.addMethod(
- $core.method({
- selector: "point:point:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anOrigin", "aCorner"],
- source: "point: anOrigin point: aCorner\x0a\x09^ self basicNew setPoint: anOrigin point: aCorner.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["setPoint:point:", "basicNew"]
- }, function ($methodClass){ return function (anOrigin,aCorner){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._basicNew())._setPoint_point_(anOrigin,aCorner);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"point:point:",{anOrigin:anOrigin,aCorner:aCorner})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Rectangle.a$cls);
- $core.addClass("UndefinedObject", $globals.Object, "Kernel-Objects");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "==",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "== anObject\x0a\x09^ anObject isNil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["isNil"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(anObject)._isNil();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"==",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.UndefinedObject);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptObject",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptObject\x0a\x09^ null",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return null;
- }; }),
- $globals.UndefinedObject);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptSource",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptSource\x0a\x09^ 'null'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "null";
- }; }),
- $globals.UndefinedObject);
- $core.addMethod(
- $core.method({
- selector: "deepCopy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "deepCopy\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.UndefinedObject);
- $core.addMethod(
- $core.method({
- selector: "identityHash",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "identityHash\x0a\x09^ 'NIL'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "NIL";
- }; }),
- $globals.UndefinedObject);
- $core.addMethod(
- $core.method({
- selector: "ifNil:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "ifNil: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self ifNil: aBlock ifNotNil: []",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:ifNotNil:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._ifNil_ifNotNil_(aBlock,(function(){
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifNil:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.UndefinedObject);
- $core.addMethod(
- $core.method({
- selector: "ifNil:ifNotNil:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anotherBlock"],
- source: "ifNil: aBlock ifNotNil: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ aBlock value",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value"]
- }, function ($methodClass){ return function (aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._value();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifNil:ifNotNil:",{aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.UndefinedObject);
- $core.addMethod(
- $core.method({
- selector: "ifNotNil:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "ifNotNil: aBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.UndefinedObject);
- $core.addMethod(
- $core.method({
- selector: "ifNotNil:ifNil:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anotherBlock"],
- source: "ifNotNil: aBlock ifNil: anotherBlock\x0a\x09\x22inlined in the Compiler\x22\x0a\x09^ anotherBlock value",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value"]
- }, function ($methodClass){ return function (aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(anotherBlock)._value();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifNotNil:ifNil:",{aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.UndefinedObject);
- $core.addMethod(
- $core.method({
- selector: "isImmutable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isImmutable\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.UndefinedObject);
- $core.addMethod(
- $core.method({
- selector: "isNil",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isNil\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.UndefinedObject);
- $core.addMethod(
- $core.method({
- selector: "notNil",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "notNil\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.UndefinedObject);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "printOn: aStream\x0a\x09aStream nextPutAll: 'nil'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._nextPutAll_("nil");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.UndefinedObject);
- $core.addMethod(
- $core.method({
- selector: "shallowCopy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "shallowCopy\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.UndefinedObject);
- $core.addMethod(
- $core.method({
- selector: "value",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "value\x0a\x09<inlineJS: 'return null'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return null"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return null;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.UndefinedObject);
- $core.addMethod(
- $core.method({
- selector: "new",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "new\x0a\x09\x09self error: 'You cannot create new instances of UndefinedObject. Use nil'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("You cannot create new instances of UndefinedObject. Use nil");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"new",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.UndefinedObject.a$cls);
- $core.setTraitComposition([{trait: $globals.TIsInGroup}], $globals.Object);
- $core.setTraitComposition([{trait: $globals.TSubclassable}], $globals.UndefinedObject);
- });
- define('amber/core/Kernel-Collections',["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Kernel-Collections");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("Association", $globals.Object, "Kernel-Collections");
- $core.setSlots($globals.Association, ["key", "value"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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:`";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anAssociation"],
- source: "= anAssociation\x0a\x09^ self class = anAssociation class and: [\x0a\x09\x09self key = anAssociation key and: [\x0a\x09\x09self value = anAssociation value ]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "=", "class", "key", "value"]
- }, function ($methodClass){ return function (anAssociation){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv([$self._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv(anAssociation)._class())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])){
- if($core.assert([$recv([$self._key()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["key"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv(anAssociation)._key())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=2
- //>>excludeEnd("ctx");
- ][0])){
- return $recv([$self._value()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv(anAssociation)._value());
- } else {
- return false;
- }
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"=",{anAssociation:anAssociation})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Association);
- $core.addMethod(
- $core.method({
- selector: "key",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "key\x0a\x09^ key",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.key;
- }; }),
- $globals.Association);
- $core.addMethod(
- $core.method({
- selector: "key:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aKey"],
- source: "key: aKey\x0a\x09key := aKey",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aKey){
- var self=this,$self=this;
- $self.key=aKey;
- return self;
- }; }),
- $globals.Association);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "printOn: aStream\x0a\x09self key printOn: aStream.\x0a\x09aStream nextPutAll: ' -> '.\x0a\x09self value printOn: aStream",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["printOn:", "key", "nextPutAll:", "value"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv($self._key())._printOn_(aStream)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printOn:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._nextPutAll_(" -> ");
- $recv($self._value())._printOn_(aStream);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Association);
- $core.addMethod(
- $core.method({
- selector: "value",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "value\x0a\x09^ value",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.value;
- }; }),
- $globals.Association);
- $core.addMethod(
- $core.method({
- selector: "value:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aValue"],
- source: "value: aValue\x0a\x09value := aValue",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aValue){
- var self=this,$self=this;
- $self.value=aValue;
- return self;
- }; }),
- $globals.Association);
- $core.addMethod(
- $core.method({
- selector: "key:value:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aKey", "aValue"],
- source: "key: aKey value: aValue\x0a\x09\x09^ self new\x0a\x09\x09key: aKey;\x0a\x09\x09value: aValue;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["key:", "new", "value:", "yourself"]
- }, function ($methodClass){ return function (aKey,aValue){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._key_(aKey);
- $recv($1)._value_(aValue);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"key:value:",{aKey:aKey,aValue:aValue})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Association.a$cls);
- $core.addClass("BucketStore", $globals.Object, "Kernel-Collections");
- $core.setSlots($globals.BucketStore, ["buckets", "hashBlock"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "bucketOfElement:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "bucketOfElement: anObject\x0a\x09<inlineJS: '\x0a\x09\x09var hash = $self.hashBlock(anObject);\x0a\x09\x09if (!hash) return null;\x0a\x09\x09var buckets = $self.buckets,\x0a\x09\x09\x09bucket = buckets[hash];\x0a\x09\x09if (!bucket) { bucket = buckets[hash] = $self._newBucket(); }\x0a\x09\x09return bucket;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var hash = $self.hashBlock(anObject);\x0a\x09\x09if (!hash) return null;\x0a\x09\x09var buckets = $self.buckets,\x0a\x09\x09\x09bucket = buckets[hash];\x0a\x09\x09if (!bucket) { bucket = buckets[hash] = $self._newBucket(); }\x0a\x09\x09return bucket;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var hash = $self.hashBlock(anObject);
- if (!hash) return null;
- var buckets = $self.buckets,
- bucket = buckets[hash];
- if (!bucket) { bucket = buckets[hash] = $self._newBucket(); }
- return bucket;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"bucketOfElement:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BucketStore);
- $core.addMethod(
- $core.method({
- selector: "do:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "do: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09var buckets = $self.buckets;\x0a\x09\x09var keys = Object.keys(buckets);\x0a\x09\x09for (var i = 0; i < keys.length; ++i) { buckets[keys[i]]._do_(aBlock); }\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var buckets = $self.buckets;\x0a\x09\x09var keys = Object.keys(buckets);\x0a\x09\x09for (var i = 0; i < keys.length; ++i) { buckets[keys[i]]._do_(aBlock); }\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var buckets = $self.buckets;
- var keys = Object.keys(buckets);
- for (var i = 0; i < keys.length; ++i) { buckets[keys[i]]._do_(aBlock); }
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BucketStore);
- $core.addMethod(
- $core.method({
- selector: "hashBlock:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "hashBlock: aBlock\x0a\x09hashBlock := aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- $self.hashBlock=aBlock;
- return self;
- }; }),
- $globals.BucketStore);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x09self removeAll",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "removeAll"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self._removeAll();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BucketStore);
- $core.addMethod(
- $core.method({
- selector: "newBucket",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "newBucket\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newBucket",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BucketStore);
- $core.addMethod(
- $core.method({
- selector: "removeAll",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "removeAll\x0a\x09<inlineJS: '$self.buckets = Object.create(null);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["$self.buckets = Object.create(null);"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.buckets = Object.create(null);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeAll",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BucketStore);
- $core.addMethod(
- $core.method({
- selector: "hashBlock:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "hashBlock: aBlock\x0a\x09^ self new\x0a\x09\x09hashBlock: aBlock;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["hashBlock:", "new", "yourself"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._hashBlock_(aBlock);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"hashBlock:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BucketStore.a$cls);
- $core.addClass("ArrayBucketStore", $globals.BucketStore, "Kernel-Collections");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ArrayBucketStore.comment="I am a concrete `BucketStore` with buckets being instance of `Array`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "newBucket",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "newBucket\x0a\x09^ #()",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return [];
- }; }),
- $globals.ArrayBucketStore);
- $core.addClass("Collection", $globals.Object, "Kernel-Collections");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: ",",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: ", aCollection\x0a\x09^ self copy\x0a\x09\x09addAll: aCollection;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addAll:", "copy", "yourself"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._copy();
- $recv($1)._addAll_(aCollection);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,",",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "add:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "add: anObject\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "addAll:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "addAll: aCollection\x0a\x09aCollection do: [ :each |\x0a\x09\x09self add: each ].\x0a\x09^ aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "add:"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aCollection)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._add_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return aCollection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addAll:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "allSatisfy:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "ifFalse:", "value:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- $self._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv(aBlock)._value_(each))){
- throw $early=[false];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return true;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"allSatisfy:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "anyOne",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifEmpty:", "error:", "do:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- $self._ifEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._error_("Collection is empty");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $self._do_((function(each){
- throw $early=[each];
- }));
- return self;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"anyOne",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "anySatisfy:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "ifTrue:", "value:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- $self._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(aBlock)._value_(each))){
- throw $early=[true];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return false;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"anySatisfy:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "asArray",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asArray\x0a\x09^ Array withAll: self",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["withAll:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Array)._withAll_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asArray",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptObject",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptObject\x0a\x09^ self asArray collect: [ :each | each asJavaScriptObject ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "asArray", "asJavaScriptObject"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._asArray())._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._asJavaScriptObject();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptObject",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "asOrderedCollection",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asOrderedCollection\x0a\x09^ self asArray",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["asArray"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._asArray();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asOrderedCollection",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "asSet",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asSet\x0a\x09^ Set withAll: self",
- referencedClasses: ["Set"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["withAll:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Set)._withAll_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asSet",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "collect:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["writeStream", "new", "class", "do:", "nextPut:", "value:", "contents"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- var stream;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- stream=$recv($recv($self._class())._new())._writeStream();
- $self._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(stream)._nextPut_($recv(aBlock)._value_(each));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return $recv(stream)._contents();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock,stream:stream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "copyEmpty",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "copyEmpty\x0a\x09^ self class new",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "class"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._class())._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"copyEmpty",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "copyWith:",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "copyWith: anObject\x0a\x09^ self copy add: anObject; yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "copy", "yourself"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._copy();
- $recv($1)._add_(anObject);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"copyWith:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "copyWithAll:",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "copyWithAll: aCollection\x0a\x09self deprecatedAPI: 'Use #, instead.'.\x0a\x09^ self, aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deprecatedAPI:", ","]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deprecatedAPI_("Use #, instead.");
- return $self.__comma(aCollection);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"copyWithAll:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "copyWithout:",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "copyWithout: anObject\x0a\x09\x22Answer a copy of the receiver that does not contain\x0a\x09any occurrences of anObject.\x22\x0a\x0a\x09^ self reject: [ :each | each = anObject ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["reject:", "="]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._reject_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each).__eq(anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"copyWithout:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "copyWithoutAll:",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["reject:", "includes:"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._reject_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aCollection)._includes_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"copyWithoutAll:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "deepCopy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "deepCopy\x0a\x09^ self collect: [ :each | each deepCopy ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "deepCopy"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._deepCopy();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"deepCopy",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "detect:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "detect: aBlock\x0a\x09^ self detect: aBlock ifNone: [ self errorNotFound ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["detect:ifNone:", "errorNotFound"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._detect_ifNone_(aBlock,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._errorNotFound();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"detect:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "detect:ifNone:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anotherBlock"],
- source: "detect: aBlock ifNone: anotherBlock\x0a\x09self do: [ :each | (aBlock value: each) ifTrue: [ ^each ] ].\x0a\x09^ anotherBlock value",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "ifTrue:", "value:", "value"]
- }, function ($methodClass){ return function (aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- $self._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(aBlock)._value_(each))){
- throw $early=[each];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return $recv(anotherBlock)._value();
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"detect:ifNone:",{aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "do:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "do: aBlock\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "do:separatedBy:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anotherBlock"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "value", "value:"]
- }, function ($methodClass){ return function (aBlock,anotherBlock){
- var self=this,$self=this;
- var actionBeforeElement;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- actionBeforeElement=(function(){
- actionBeforeElement=anotherBlock;
- return actionBeforeElement;
- });
- $self._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(actionBeforeElement)._value();
- return $recv(aBlock)._value_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"do:separatedBy:",{aBlock:aBlock,anotherBlock:anotherBlock,actionBeforeElement:actionBeforeElement})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "errorNotFound",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "errorNotFound\x0a\x09self error: 'Object is not in the collection'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("Object is not in the collection");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"errorNotFound",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "ifEmpty:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "ifEmpty: aBlock\x0a\x09\x22Evaluate the given block with the receiver as argument, answering its value if the receiver is empty, otherwise answer the receiver. \x0a\x09Note that the fact that this method returns its argument in case the receiver is not empty allows one to write expressions like the following ones: \x0a\x09\x09self classifyMethodAs:\x0a\x09\x09\x09(myProtocol ifEmpty: ['As yet unclassified'])\x22\x0a\x09^ self isEmpty\x0a\x09\x09ifTrue: \x22aBlock\x22 [ aBlock value ]\x0a\x09\x09ifFalse: [ self ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "isEmpty", "value"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._isEmpty())){
- return $recv(aBlock)._value();
- } else {
- return self;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifEmpty:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "ifEmpty:ifNotEmpty:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anotherBlock"],
- source: "ifEmpty: aBlock ifNotEmpty: anotherBlock\x0a\x09^ self isEmpty\x0a\x09\x09ifTrue: \x22aBlock\x22 [ aBlock value ]\x0a\x09\x09ifFalse: [ anotherBlock value: self ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "isEmpty", "value", "value:"]
- }, function ($methodClass){ return function (aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._isEmpty())){
- return $recv(aBlock)._value();
- } else {
- return $recv(anotherBlock)._value_(self);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifEmpty:ifNotEmpty:",{aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "ifNotEmpty:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "ifNotEmpty: aBlock\x0a\x09^ self notEmpty\x0a\x09\x09ifTrue: [ aBlock value: self ]\x0a\x09\x09ifFalse: [ self ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "notEmpty", "value:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._notEmpty())){
- return $recv(aBlock)._value_(self);
- } else {
- return self;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifNotEmpty:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "ifNotEmpty:ifEmpty:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anotherBlock"],
- source: "ifNotEmpty: aBlock ifEmpty: anotherBlock\x0a\x09^ self notEmpty\x0a\x09\x09ifTrue: [ aBlock value: self ]\x0a\x09\x09ifFalse: \x22anotherBlock\x22 [ anotherBlock value ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "notEmpty", "value:", "value"]
- }, function ($methodClass){ return function (aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._notEmpty())){
- return $recv(aBlock)._value_(self);
- } else {
- return $recv(anotherBlock)._value();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifNotEmpty:ifEmpty:",{aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "includes:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "includes: anObject\x0a\x09^ self anySatisfy: [ :each | each = anObject ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["anySatisfy:", "="]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._anySatisfy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each).__eq(anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"includes:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "inject:into:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "aBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "value:value:"]
- }, function ($methodClass){ return function (anObject,aBlock){
- var self=this,$self=this;
- var result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- result=anObject;
- $self._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- result=$recv(aBlock)._value_value_(result,each);
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inject:into:",{anObject:anObject,aBlock:aBlock,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "intersection:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- 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",
- referencedClasses: ["Set"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["asSet", "new", "do:", "ifTrue:", "and:", "includes:", "not", "add:", "withAll:", "class", "asArray"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- var set,outputSet;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- set=$self._asSet();
- outputSet=$recv($globals.Set)._new();
- $recv(aCollection)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv(set)._includes_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["includes:"]=1
- //>>excludeEnd("ctx");
- ][0])){
- $1=$recv($recv(outputSet)._includes_(each))._not();
- } else {
- $1=false;
- }
- if($core.assert($1)){
- return $recv(outputSet)._add_(each);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return $recv($self._class())._withAll_($recv(outputSet)._asArray());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"intersection:",{aCollection:aCollection,set:set,outputSet:outputSet})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "isEmpty",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isEmpty\x0a\x09^ self size = 0",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["=", "size"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._size()).__eq((0));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isEmpty",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "noneSatisfy:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "ifTrue:", "value:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- $self._do_((function(item){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(aBlock)._value_(item))){
- throw $early=[false];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({item:item},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return true;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"noneSatisfy:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "notEmpty",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "notEmpty\x0a\x09^ self isEmpty not",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["not", "isEmpty"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._isEmpty())._not();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"notEmpty",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "occurrencesOf:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "ifTrue:", "=", "+"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- var tally;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- tally=(0);
- $self._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(anObject).__eq(each))){
- tally=$recv(tally).__plus((1));
- return tally;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return tally;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"occurrencesOf:",{anObject:anObject,tally:tally})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "putOn:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "putOn: aStream\x0a\x09self do: [ :each | each putOn: aStream ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "putOn:"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._putOn_(aStream);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "reject:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "reject: aBlock\x0a\x09^ self select: [ :each | (aBlock value: each) = false ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["select:", "=", "value:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._select_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv(aBlock)._value_(each)).__eq(false);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"reject:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "remove:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "remove: anObject\x0a\x09^ self remove: anObject ifAbsent: [ self errorNotFound ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["remove:ifAbsent:", "errorNotFound"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._remove_ifAbsent_(anObject,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._errorNotFound();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"remove:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "remove:ifAbsent:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "aBlock"],
- source: "remove: anObject ifAbsent: aBlock\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (anObject,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{anObject:anObject,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "removeAll",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "removeAll\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeAll",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "select:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["writeStream", "new", "class", "do:", "ifTrue:", "value:", "nextPut:", "contents"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- var stream;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- stream=$recv($recv($self._class())._new())._writeStream();
- $self._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(aBlock)._value_(each))){
- return $recv(stream)._nextPut_(each);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return $recv(stream)._contents();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock,stream:stream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "select:thenCollect:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["selectBlock", "collectBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["writeStream", "new", "class", "do:", "ifTrue:", "value:", "nextPut:", "contents"]
- }, function ($methodClass){ return function (selectBlock,collectBlock){
- var self=this,$self=this;
- var stream;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- stream=$recv($recv($self._class())._new())._writeStream();
- $self._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv(selectBlock)._value_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["value:"]=1
- //>>excludeEnd("ctx");
- ][0])){
- return $recv(stream)._nextPut_($recv(collectBlock)._value_(each));
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return $recv(stream)._contents();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"select:thenCollect:",{selectBlock:selectBlock,collectBlock:collectBlock,stream:stream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "shallowCopy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "shallowCopy\x0a\x09^ self collect: [ :each | each ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._collect_((function(each){
- return each;
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shallowCopy",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "shortenedPrintString",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "shortenedPrintString\x0a\x09^ self size <= 1\x0a\x09\x09ifTrue: [ self printString ]\x0a\x09\x09ifFalse: [ (self copyEmpty copyWith: self anyOne) printString, ' ... ', (self size - 1) asString, ' more items' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "<=", "size", "printString", ",", "copyWith:", "copyEmpty", "anyOne", "asString", "-"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv([$self._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt_eq((1)))){
- return [$self._printString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printString"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- return [$recv([$recv($recv($recv($recv($self._copyEmpty())._copyWith_($self._anyOne()))._printString()).__comma(" ... ")).__comma($recv($recv($self._size()).__minus((1)))._asString())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(" more items")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shortenedPrintString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "single",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "single\x0a\x09\x22Answer a single element.\x0a\x09Raise an error if collection holds less or more than one element.\x22\x0a\x0a\x09self ifEmpty: [ self error: 'Collection is empty' ].\x0a\x09self size > 1 ifTrue: [ self error: 'Collection holds more than one element' ].\x0a\x09^ self anyOne",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifEmpty:", "error:", "ifTrue:", ">", "size", "anyOne"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._ifEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$self._error_("Collection is empty")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["error:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- if($core.assert($recv($self._size()).__gt((1)))){
- $self._error_("Collection holds more than one element");
- }
- return $self._anyOne();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"single",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "size",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "size\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"size",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "classTag",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classTag\x0a\x09\x22Returns a tag or general category for this class.\x0a\x09Typically used to help tools do some reflection.\x0a\x09Helios, for example, uses this to decide what icon the class should display.\x22\x0a\x09\x0a\x09^ 'collection'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "collection";
- }; }),
- $globals.Collection.a$cls);
- $core.addMethod(
- $core.method({
- selector: "new:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- source: "new: anInteger\x0a\x09^ self new",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new"]
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"new:",{anInteger:anInteger})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection.a$cls);
- $core.addMethod(
- $core.method({
- selector: "with:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "with: anObject\x0a\x09\x09^ self new\x0a\x09\x09add: anObject;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "new", "yourself"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._add_(anObject);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"with:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection.a$cls);
- $core.addMethod(
- $core.method({
- selector: "with:with:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "anotherObject"],
- source: "with: anObject with: anotherObject\x0a\x09\x09^ self new\x0a\x09\x09add: anObject;\x0a\x09\x09add: anotherObject;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "new", "yourself"]
- }, function ($methodClass){ return function (anObject,anotherObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- [$recv($1)._add_(anObject)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._add_(anotherObject);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"with:with:",{anObject:anObject,anotherObject:anotherObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection.a$cls);
- $core.addMethod(
- $core.method({
- selector: "with:with:with:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["firstObject", "secondObject", "thirdObject"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "new", "yourself"]
- }, function ($methodClass){ return function (firstObject,secondObject,thirdObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- [$recv($1)._add_(firstObject)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._add_(secondObject)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._add_(thirdObject);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"with:with:with:",{firstObject:firstObject,secondObject:secondObject,thirdObject:thirdObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection.a$cls);
- $core.addMethod(
- $core.method({
- selector: "withAll:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "withAll: aCollection\x0a\x09\x09^ self new\x0a\x09\x09addAll: aCollection;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addAll:", "new", "yourself"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._addAll_(aCollection);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"withAll:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection.a$cls);
- $core.addClass("AssociativeCollection", $globals.Collection, "Kernel-Collections");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.AssociativeCollection.comment="I am a base class for object-indexed collections (Dictionary et.al.).";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anAssociativeCollection"],
- source: "= anAssociativeCollection\x0a\x09^ self class = anAssociativeCollection class and: [\x0a\x09\x09self size = anAssociativeCollection size and: [\x0a\x09\x09\x09| comparisons |\x0a\x09\x09\x09comparisons := OrderedCollection new.\x0a\x09\x09\x09(self associations allSatisfy: [ :each |\x0a\x09\x09\x09\x09anAssociativeCollection at: each key\x0a\x09\x09\x09\x09\x09ifPresent: [ :otherValue | comparisons add: { each value. otherValue }. true ]\x0a\x09\x09\x09\x09\x09ifAbsent: [ false ] ]) and: [\x0a\x09\x09\x09\x09\x09\x09comparisons allSatisfy: [ :each | each first = each second ] ] ] ]",
- referencedClasses: ["OrderedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "=", "class", "size", "new", "allSatisfy:", "associations", "at:ifPresent:ifAbsent:", "key", "add:", "value", "first", "second"]
- }, function ($methodClass){ return function (anAssociativeCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv([$self._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv(anAssociativeCollection)._class())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])){
- if($core.assert([$recv([$self._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv(anAssociativeCollection)._size())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=2
- //>>excludeEnd("ctx");
- ][0])){
- var comparisons;
- comparisons=$recv($globals.OrderedCollection)._new();
- if($core.assert([$recv($self._associations())._allSatisfy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(anAssociativeCollection)._at_ifPresent_ifAbsent_($recv(each)._key(),(function(otherValue){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- $recv(comparisons)._add_([$recv(each)._value(),otherValue]);
- return true;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({otherValue:otherValue},$ctx2,4)});
- //>>excludeEnd("ctx");
- }),(function(){
- return false;
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["allSatisfy:"]=1
- //>>excludeEnd("ctx");
- ][0])){
- return $recv(comparisons)._allSatisfy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv(each)._first()).__eq($recv(each)._second());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,7)});
- //>>excludeEnd("ctx");
- }));
- } else {
- return false;
- }
- } else {
- return false;
- }
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"=",{anAssociativeCollection:anAssociativeCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "add:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anAssociation"],
- source: "add: anAssociation\x0a\x09self at: anAssociation key put: anAssociation value",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "key", "value"]
- }, function ($methodClass){ return function (anAssociation){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._at_put_($recv(anAssociation)._key(),$recv(anAssociation)._value());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"add:",{anAssociation:anAssociation})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "addAll:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anAssociativeCollection"],
- source: "addAll: anAssociativeCollection\x0a\x09super addAll: anAssociativeCollection associations.\x0a\x09^ anAssociativeCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addAll:", "associations"]
- }, function ($methodClass){ return function (anAssociativeCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._addAll_.call($self,$recv(anAssociativeCollection)._associations()))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- return anAssociativeCollection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addAll:",{anAssociativeCollection:anAssociativeCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "asDictionary",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asDictionary\x0a\x09^ Dictionary from: self associations",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["from:", "associations"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Dictionary)._from_($self._associations());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asDictionary",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "asHashedCollection",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asHashedCollection\x0a\x09^ HashedCollection from: self associations",
- referencedClasses: ["HashedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["from:", "associations"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.HashedCollection)._from_($self._associations());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asHashedCollection",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptObject",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptObject\x0a\x09| hash |\x0a\x09hash := HashedCollection new.\x0a\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09hash at: key put: value asJavaScriptObject ].\x0a\x09^ hash",
- referencedClasses: ["HashedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "keysAndValuesDo:", "at:put:", "asJavaScriptObject"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var hash;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- hash=$recv($globals.HashedCollection)._new();
- $self._keysAndValuesDo_((function(key,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(hash)._at_put_(key,$recv(value)._asJavaScriptObject());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return hash;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptObject",{hash:hash})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "associations",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "associations\x0a\x09| associations |\x0a\x09associations := #().\x0a\x09self associationsDo: [ :each | associations add: each ].\x0a\x09^ associations",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["associationsDo:", "add:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var associations;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- associations=[];
- $self._associationsDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(associations)._add_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return associations;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"associations",{associations:associations})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "associationsDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "associationsDo: aBlock\x0a\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09aBlock value: (Association key: key value: value) ]",
- referencedClasses: ["Association"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["keysAndValuesDo:", "value:", "key:value:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._keysAndValuesDo_((function(key,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._value_($recv($globals.Association)._key_value_(key,value));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"associationsDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "at:ifPresent:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aKey", "aBlock", "anotherBlock"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "includesKey:", "value:", "at:", "value"]
- }, function ($methodClass){ return function (aKey,aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._includesKey_(aKey))){
- return $recv(aBlock)._value_($self._at_(aKey));
- } else {
- return $recv(anotherBlock)._value();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{aKey:aKey,aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "collect:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "class", "keysAndValuesDo:", "at:put:", "value:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- var newDict;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- newDict=$recv($self._class())._new();
- $self._keysAndValuesDo_((function(key,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(newDict)._at_put_(key,$recv(aBlock)._value_(value));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return newDict;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock,newDict:newDict})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "deepCopy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "class", "keysAndValuesDo:", "at:put:", "deepCopy"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var copy;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- copy=$recv($self._class())._new();
- $self._keysAndValuesDo_((function(key,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(copy)._at_put_(key,$recv(value)._deepCopy());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return copy;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"deepCopy",{copy:copy})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "detect:ifNone:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anotherBlock"],
- source: "detect: aBlock ifNone: anotherBlock\x0a\x09^ self values detect: aBlock ifNone: anotherBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["detect:ifNone:", "values"]
- }, function ($methodClass){ return function (aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._values())._detect_ifNone_(aBlock,anotherBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"detect:ifNone:",{aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "do:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "do: aBlock\x0a\x09self valuesDo: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["valuesDo:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._valuesDo_(aBlock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "includes:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "includes: anObject\x0a\x09^ self values includes: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["includes:", "values"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._values())._includes_(anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"includes:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "includesKey:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aKey"],
- source: "includesKey: aKey\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aKey){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"includesKey:",{aKey:aKey})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "indexOf:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "aBlock"],
- source: "indexOf: anObject ifAbsent: aBlock\x0a\x09^ self keys \x0a\x09\x09detect: [ :each | (self at: each) = anObject ] \x0a\x09\x09ifNone: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["detect:ifNone:", "keys", "=", "at:"]
- }, function ($methodClass){ return function (anObject,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._keys())._detect_ifNone_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._at_(each)).__eq(anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),aBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "keyAtValue:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "keyAtValue: anObject\x0a\x09^ self keyAtValue: anObject ifAbsent: [ self errorNotFound ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["keyAtValue:ifAbsent:", "errorNotFound"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._keyAtValue_ifAbsent_(anObject,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._errorNotFound();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"keyAtValue:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "keyAtValue:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "aBlock"],
- source: "keyAtValue: anObject ifAbsent: aBlock\x0a\x09^ self indexOf: anObject ifAbsent: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["indexOf:ifAbsent:"]
- }, function ($methodClass){ return function (anObject,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._indexOf_ifAbsent_(anObject,aBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"keyAtValue:ifAbsent:",{anObject:anObject,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "keys",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "keys\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"keys",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "keysAndValuesDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "keysAndValuesDo: aBlock\x0a\x09self keysDo: [ :each |\x0a\x09\x09aBlock value: each value: (self at: each) ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["keysDo:", "value:value:", "at:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._keysDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._value_value_(each,$self._at_(each));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"keysAndValuesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "keysDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "keysDo: aBlock\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"keysDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- 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: ')'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["printOn:", "nextPutAll:", "do:separatedBy:", "associations"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printOn:"]=1,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._nextPutAll_(" (")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($self._associations())._do_separatedBy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._printOn_(aStream);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(aStream)._nextPutAll_(" , ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $recv(aStream)._nextPutAll_(")");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "remove:ifAbsent:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aKey", "aBlock"],
- source: "remove: aKey ifAbsent: aBlock\x0a\x09^ self removeKey: aKey ifAbsent: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["removeKey:ifAbsent:"]
- }, function ($methodClass){ return function (aKey,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._removeKey_ifAbsent_(aKey,aBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{aKey:aKey,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "removeAll",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "removeAll\x0a\x09^ self keys do: [ :each | self removeKey: each ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "keys", "removeKey:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._keys())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._removeKey_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeAll",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "removeKey:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aKey"],
- source: "removeKey: aKey\x0a\x09^ self remove: aKey",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["remove:"]
- }, function ($methodClass){ return function (aKey){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._remove_(aKey);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeKey:",{aKey:aKey})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "removeKey:ifAbsent:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aKey", "aBlock"],
- source: "removeKey: aKey ifAbsent: aBlock\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aKey,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeKey:ifAbsent:",{aKey:aKey,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "select:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "class", "keysAndValuesDo:", "ifTrue:", "value:", "at:put:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- var newDict;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- newDict=$recv($self._class())._new();
- $self._keysAndValuesDo_((function(key,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(aBlock)._value_(value))){
- return $recv(newDict)._at_put_(key,value);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return newDict;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock,newDict:newDict})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "select:thenCollect:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["selectBlock", "collectBlock"],
- source: "select: selectBlock thenCollect: collectBlock\x0a\x09| newDict |\x0a\x09newDict := self class new.\x0a\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09(selectBlock value: value) ifTrue: [ newDict at: key put: (collectBlock value: value) ]].\x0a\x09^ newDict",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "class", "keysAndValuesDo:", "ifTrue:", "value:", "at:put:"]
- }, function ($methodClass){ return function (selectBlock,collectBlock){
- var self=this,$self=this;
- var newDict;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- newDict=$recv($self._class())._new();
- $self._keysAndValuesDo_((function(key,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv(selectBlock)._value_(value)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["value:"]=1
- //>>excludeEnd("ctx");
- ][0])){
- return $recv(newDict)._at_put_(key,$recv(collectBlock)._value_(value));
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return newDict;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"select:thenCollect:",{selectBlock:selectBlock,collectBlock:collectBlock,newDict:newDict})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "shallowCopy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "class", "keysAndValuesDo:", "at:put:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var copy;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- copy=$recv($self._class())._new();
- $self._keysAndValuesDo_((function(key,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(copy)._at_put_(key,value);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return copy;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shallowCopy",{copy:copy})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "shortenedPrintString",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "shortenedPrintString\x0a\x09^ self size <= 1\x0a\x09\x09ifTrue: [ self printString ]\x0a\x09\x09ifFalse: [ | key | key := self keys anyOne. (self copyEmpty at: key put: (self at: key); yourself) printString, ' ... ', (self size - 1) asString, ' more items' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "<=", "size", "printString", "anyOne", "keys", ",", "at:put:", "copyEmpty", "at:", "yourself", "asString", "-"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- if($core.assert($recv([$self._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt_eq((1)))){
- return [$self._printString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printString"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- var key;
- key=$recv($self._keys())._anyOne();
- $1=$self._copyEmpty();
- $recv($1)._at_put_(key,$self._at_(key));
- return [$recv([$recv($recv($recv($recv($1)._yourself())._printString()).__comma(" ... ")).__comma($recv($recv($self._size()).__minus((1)))._asString())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(" more items")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shortenedPrintString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "size",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "size\x0a\x09^ self keys size",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["size", "keys"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._keys())._size();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"size",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "values",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "values\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"values",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "valuesDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "valuesDo: aBlock\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"valuesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "withIndexDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "withIndexDo: aBlock\x0a\x09self keysAndValuesDo: [ :key :value | aBlock value: value value: key ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["keysAndValuesDo:", "value:value:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._keysAndValuesDo_((function(key,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._value_value_(value,key);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"withIndexDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "from:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "from: aCollection\x0a\x09| newCollection |\x0a\x09newCollection := self new.\x0a\x09aCollection do: [ :each | newCollection add: each ].\x0a\x09^ newCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "do:", "add:"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- var newCollection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- newCollection=$self._new();
- $recv(aCollection)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(newCollection)._add_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return newCollection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"from:",{aCollection:aCollection,newCollection:newCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection.a$cls);
- $core.addMethod(
- $core.method({
- selector: "fromPairs:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "fromPairs: aCollection\x0a\x09\x22This message is poorly named and has been replaced by #from:\x22\x0a\x09^ self from: aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["from:"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._from_(aCollection);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fromPairs:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection.a$cls);
- $core.addMethod(
- $core.method({
- selector: "newFromPairs:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "even", "size", "error:", "new", "do:", "to:by:", "at:put:", "at:", "+"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- var newCollection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv([$recv(aCollection)._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=1
- //>>excludeEnd("ctx");
- ][0])._even())){
- $self._error_("#newFromPairs only accepts arrays of an even length");
- }
- newCollection=$self._new();
- $recv((1)._to_by_($recv(aCollection)._size(),(2)))._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(newCollection)._at_put_([$recv(aCollection)._at_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["at:"]=1
- //>>excludeEnd("ctx");
- ][0],$recv(aCollection)._at_($recv(each).__plus((1))));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return newCollection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newFromPairs:",{aCollection:aCollection,newCollection:newCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection.a$cls);
- $core.addClass("Dictionary", $globals.AssociativeCollection, "Kernel-Collections");
- $core.setSlots($globals.Dictionary, ["keys", "values"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "at:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aKey", "aBlock"],
- source: "at: aKey ifAbsent: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09var index = $self._positionOfKey_(aKey);\x0a\x09\x09return index >=0 ? $self.values[index] : aBlock._value();\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var index = $self._positionOfKey_(aKey);\x0a\x09\x09return index >=0 ? $self.values[index] : aBlock._value();\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aKey,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var index = $self._positionOfKey_(aKey);
- return index >=0 ? $self.values[index] : aBlock._value();
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aKey:aKey,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Dictionary);
- $core.addMethod(
- $core.method({
- selector: "at:put:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aKey", "aValue"],
- source: "at: aKey put: aValue\x0a\x09<inlineJS: '\x0a\x09\x09var index = $self._positionOfKey_(aKey);\x0a\x09\x09if(index === -1) {\x0a\x09\x09\x09var keys = $self.keys;\x0a\x09\x09\x09index = keys.length;\x0a\x09\x09\x09keys.push(aKey);\x0a\x09\x09}\x0a\x0a\x09\x09return $self.values[index] = aValue;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var index = $self._positionOfKey_(aKey);\x0a\x09\x09if(index === -1) {\x0a\x09\x09\x09var keys = $self.keys;\x0a\x09\x09\x09index = keys.length;\x0a\x09\x09\x09keys.push(aKey);\x0a\x09\x09}\x0a\x0a\x09\x09return $self.values[index] = aValue;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aKey,aValue){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var index = $self._positionOfKey_(aKey);
- if(index === -1) {
- var keys = $self.keys;
- index = keys.length;
- keys.push(aKey);
- }
- return $self.values[index] = aValue;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:put:",{aKey:aKey,aValue:aValue})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Dictionary);
- $core.addMethod(
- $core.method({
- selector: "includesKey:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aKey"],
- source: "includesKey: aKey\x0a\x09<inlineJS: 'return $self._positionOfKey_(aKey) >= 0;'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $self._positionOfKey_(aKey) >= 0;"]]],
- messageSends: []
- }, function ($methodClass){ return function (aKey){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._positionOfKey_(aKey) >= 0;;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"includesKey:",{aKey:aKey})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Dictionary);
- $core.addMethod(
- $core.method({
- selector: "indexOf:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "aBlock"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["indexOf:ifAbsent:", "ifTrue:ifFalse:", "=", "value", "at:"]
- }, function ($methodClass){ return function (anObject,aBlock){
- var self=this,$self=this;
- var index;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- index=$recv($self.values)._indexOf_ifAbsent_(anObject,(function(){
- return (0);
- }));
- if($core.assert($recv(index).__eq((0)))){
- return $recv(aBlock)._value();
- } else {
- return $recv($self.keys)._at_(index);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock,index:index})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Dictionary);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x09keys := #().\x0a\x09values := #()",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.keys=[];
- $self.values=[];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Dictionary);
- $core.addMethod(
- $core.method({
- selector: "keys",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "keys\x0a\x09^ keys copy",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copy"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.keys)._copy();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"keys",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Dictionary);
- $core.addMethod(
- $core.method({
- selector: "keysAndValuesDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "keysAndValuesDo: aBlock\x0a\x09^ keys with: values do: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["with:do:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.keys)._with_do_($self.values,aBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"keysAndValuesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Dictionary);
- $core.addMethod(
- $core.method({
- selector: "keysDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "keysDo: aBlock\x0a\x09^ keys do: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.keys)._do_(aBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"keysDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Dictionary);
- $core.addMethod(
- $core.method({
- selector: "positionOfKey:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "positionOfKey: anObject\x0a\x09<inlineJS: '\x0a\x09\x09var keys = $self.keys;\x0a\x09\x09for(var i=0;i<keys.length;i++){\x0a\x09\x09\x09if(keys[i].__eq(anObject)) { return i;}\x0a\x09\x09}\x0a\x09\x09return -1;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var keys = $self.keys;\x0a\x09\x09for(var i=0;i<keys.length;i++){\x0a\x09\x09\x09if(keys[i].__eq(anObject)) { return i;}\x0a\x09\x09}\x0a\x09\x09return -1;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var keys = $self.keys;
- for(var i=0;i<keys.length;i++){
- if(keys[i].__eq(anObject)) { return i;}
- }
- return -1;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"positionOfKey:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Dictionary);
- $core.addMethod(
- $core.method({
- selector: "removeAll",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "removeAll\x0a\x09keys removeAll.\x0a\x09values removeAll",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["removeAll"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv($self.keys)._removeAll()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["removeAll"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($self.values)._removeAll();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeAll",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Dictionary);
- $core.addMethod(
- $core.method({
- selector: "removeKey:ifAbsent:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aKey", "aBlock"],
- source: "removeKey: aKey ifAbsent: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09var index = $self._positionOfKey_(aKey);\x0a\x09\x09if(index === -1) {\x0a\x09\x09\x09return aBlock._value()\x0a\x09\x09} else {\x0a\x09\x09\x09var keys = $self.keys, values = $self.values;\x0a\x09\x09\x09var value = values[index], l = keys.length;\x0a\x09\x09\x09keys[index] = keys[l-1];\x0a\x09\x09\x09keys.pop();\x0a\x09\x09\x09values[index] = values[l-1];\x0a\x09\x09\x09values.pop();\x0a\x09\x09\x09return value;\x0a\x09\x09}\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var index = $self._positionOfKey_(aKey);\x0a\x09\x09if(index === -1) {\x0a\x09\x09\x09return aBlock._value()\x0a\x09\x09} else {\x0a\x09\x09\x09var keys = $self.keys, values = $self.values;\x0a\x09\x09\x09var value = values[index], l = keys.length;\x0a\x09\x09\x09keys[index] = keys[l-1];\x0a\x09\x09\x09keys.pop();\x0a\x09\x09\x09values[index] = values[l-1];\x0a\x09\x09\x09values.pop();\x0a\x09\x09\x09return value;\x0a\x09\x09}\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aKey,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var index = $self._positionOfKey_(aKey);
- if(index === -1) {
- return aBlock._value()
- } else {
- var keys = $self.keys, values = $self.values;
- var value = values[index], l = keys.length;
- keys[index] = keys[l-1];
- keys.pop();
- values[index] = values[l-1];
- values.pop();
- return value;
- }
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeKey:ifAbsent:",{aKey:aKey,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Dictionary);
- $core.addMethod(
- $core.method({
- selector: "values",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "values\x0a\x09^ values",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.values;
- }; }),
- $globals.Dictionary);
- $core.addMethod(
- $core.method({
- selector: "valuesDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "valuesDo: aBlock\x0a\x09^ values do: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.values)._do_(aBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"valuesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Dictionary);
- $core.addClass("HashedCollection", $globals.AssociativeCollection, "Kernel-Collections");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.HashedCollection.comment="I am a traditional JavaScript object, or a Smalltalk `Dictionary`.\x0a\x0aUnlike a `Dictionary`, I can only have strings as keys.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptSource",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptSource\x0a\x09^ String streamContents: [ :str |\x0a\x09\x09str nextPut: '{'.\x0a\x09\x09self keysAndValuesDo: [ :key :value |\x0a\x09\x09\x09str nextPutAll: key asJavaScriptSource; nextPut: ':'; nextPutAll: value asJavaScriptSource; nextPut: ',' ].\x0a\x09\x09str skip: -1; nextPut: '}' ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "nextPut:", "keysAndValuesDo:", "nextPutAll:", "asJavaScriptSource", "skip:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(str){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(str)._nextPut_("{")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._keysAndValuesDo_((function(key,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- [$recv(str)._nextPutAll_([$recv(key)._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["asJavaScriptSource"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(str)._nextPut_(":")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["nextPut:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(str)._nextPutAll_($recv(value)._asJavaScriptSource());
- return [$recv(str)._nextPut_(",")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["nextPut:"]=3
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({key:key,value:value},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- $recv(str)._skip_((-1));
- return $recv(str)._nextPut_("}");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.HashedCollection);
- $core.addMethod(
- $core.method({
- selector: "at:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aKey", "aBlock"],
- source: "at: aKey ifAbsent: aBlock\x0a\x09^ (self includesKey: aKey)\x0a\x09\x09ifTrue: [ self basicAt: aKey ]\x0a\x09\x09ifFalse: [ aBlock value ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "includesKey:", "basicAt:", "value"]
- }, function ($methodClass){ return function (aKey,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._includesKey_(aKey))){
- return $self._basicAt_(aKey);
- } else {
- return $recv(aBlock)._value();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aKey:aKey,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.HashedCollection);
- $core.addMethod(
- $core.method({
- selector: "at:put:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aKey", "aValue"],
- source: "at: aKey put: aValue\x0a\x09^ self basicAt: aKey put: aValue",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["basicAt:put:"]
- }, function ($methodClass){ return function (aKey,aValue){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._basicAt_put_(aKey,aValue);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:put:",{aKey:aKey,aValue:aValue})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.HashedCollection);
- $core.addMethod(
- $core.method({
- selector: "includesKey:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aKey"],
- source: "includesKey: aKey\x0a\x09<inlineJS: 'return self.hasOwnProperty(aKey)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.hasOwnProperty(aKey)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aKey){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.hasOwnProperty(aKey);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"includesKey:",{aKey:aKey})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.HashedCollection);
- $core.addMethod(
- $core.method({
- selector: "keys",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "keys\x0a\x09<inlineJS: 'return Object.keys(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Object.keys(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Object.keys(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"keys",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.HashedCollection);
- $core.addMethod(
- $core.method({
- selector: "keysDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "keysDo: aBlock\x0a\x09self keys do: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "keys"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._keys())._do_(aBlock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"keysDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.HashedCollection);
- $core.addMethod(
- $core.method({
- selector: "removeKey:ifAbsent:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aKey", "aBlock"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifPresent:ifAbsent:", "basicDelete:", "value"]
- }, function ($methodClass){ return function (aKey,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._at_ifPresent_ifAbsent_(aKey,(function(removed){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self._basicDelete_(aKey);
- return removed;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({removed:removed},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._value();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeKey:ifAbsent:",{aKey:aKey,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.HashedCollection);
- $core.addMethod(
- $core.method({
- selector: "values",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "values\x0a\x09<inlineJS: '\x0a\x09\x09return $self._keys().map(function(key){\x0a\x09\x09\x09return $self._at_(key);\x0a\x09\x09});\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return $self._keys().map(function(key){\x0a\x09\x09\x09return $self._at_(key);\x0a\x09\x09});\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._keys().map(function(key){
- return $self._at_(key);
- });
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"values",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.HashedCollection);
- $core.addMethod(
- $core.method({
- selector: "valuesDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "valuesDo: aBlock\x0a\x09self values do: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "values"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._values())._do_(aBlock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"valuesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.HashedCollection);
- $core.addClass("SequenceableCollection", $globals.Collection, "Kernel-Collections");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.SequenceableCollection.comment="I am an IndexableCollection\x0awith numeric indexes starting with 1.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "and:", "=", "class", "size", "withIndexDo:", "at:"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- var $early={};
- try {
- if($core.assert([$recv([$self._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv(aCollection)._class())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])){
- $1=[$recv([$self._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv(aCollection)._size())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=2
- //>>excludeEnd("ctx");
- ][0];
- } else {
- $1=false;
- }
- if(!$core.assert($1)){
- return false;
- }
- $self._withIndexDo_((function(each,i){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv($recv(aCollection)._at_(i)).__eq(each))){
- throw $early=[false];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each,i:i},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return true;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"=",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "addLast:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "addLast: anObject\x0a\x09self add: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._add_(anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addLast:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "allButFirst",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "allButFirst\x0a\x09^ self copyFrom: 2 to: self size",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyFrom:to:", "size"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._copyFrom_to_((2),$self._size());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"allButFirst",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "allButLast",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "allButLast\x0a\x09^ self copyFrom: 1 to: self size - 1",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyFrom:to:", "-", "size"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._copyFrom_to_((1),$recv($self._size()).__minus((1)));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"allButLast",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "anyOne",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "anyOne\x0a\x09^ self at: 1",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._at_((1));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"anyOne",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "atRandom",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "atRandom\x0a\x09^ self at: self size atRandom",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:", "atRandom", "size"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._at_($recv($self._size())._atRandom());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"atRandom",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "beginsWith:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["prefix"],
- source: "beginsWith: prefix\x0a\x09self size < prefix size ifTrue: [ ^ false ].\x0a\x09^ (self first: prefix size) = prefix",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "<", "size", "=", "first:"]
- }, function ($methodClass){ return function (prefix){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv([$self._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt([$recv(prefix)._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=2
- //>>excludeEnd("ctx");
- ][0]))){
- return false;
- }
- return $recv($self._first_($recv(prefix)._size())).__eq(prefix);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"beginsWith:",{prefix:prefix})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "copyFrom:to:",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIndex", "anotherIndex"],
- source: "copyFrom: anIndex to: anotherIndex\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (anIndex,anotherIndex){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"copyFrom:to:",{anIndex:anIndex,anotherIndex:anotherIndex})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "copyWithFirst:",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "copyWithFirst: anObject\x0a\x09^ (self class with: anObject) addAll: self; yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addAll:", "with:", "class", "yourself"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($self._class())._with_(anObject);
- $recv($1)._addAll_(self);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"copyWithFirst:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "endsWith:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["suffix"],
- source: "endsWith: suffix\x0a\x09self size < suffix size ifTrue: [ ^ false ].\x0a\x09^ (self last: suffix size) = suffix",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "<", "size", "=", "last:"]
- }, function ($methodClass){ return function (suffix){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv([$self._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt([$recv(suffix)._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=2
- //>>excludeEnd("ctx");
- ][0]))){
- return false;
- }
- return $recv($self._last_($recv(suffix)._size())).__eq(suffix);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"endsWith:",{suffix:suffix})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "first",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "first\x0a\x09^ self at: 1",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._at_((1));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"first",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "first:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "<", "size", "error:", "copyFrom:to:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($self._size()).__lt(aNumber))){
- $self._error_("Invalid number of elements");
- }
- return $self._copyFrom_to_((1),aNumber);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"first:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "fourth",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "fourth\x0a\x09^ self at: 4",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._at_((4));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fourth",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "includes:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "includes: anObject\x0a\x09^ (self indexOf: anObject ifAbsent: [ nil ]) notNil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["notNil", "indexOf:ifAbsent:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._indexOf_ifAbsent_(anObject,(function(){
- return nil;
- })))._notNil();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"includes:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "indexOf:startingAt:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "start"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["indexOf:startingAt:ifAbsent:"]
- }, function ($methodClass){ return function (anObject,start){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._indexOf_startingAt_ifAbsent_(anObject,start,(function(){
- return (0);
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"indexOf:startingAt:",{anObject:anObject,start:start})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "indexOf:startingAt:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "start", "aBlock"],
- source: "indexOf: anObject startingAt: start ifAbsent: aBlock\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (anObject,start,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"indexOf:startingAt:ifAbsent:",{anObject:anObject,start:start,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "last",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "last\x0a\x09^ self at: self size",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:", "size"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._at_($self._size());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"last",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "last:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "<", "size", "error:", "copyFrom:to:", "+", "-"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv([$self._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt(aNumber))){
- $self._error_("Invalid number of elements");
- }
- return $self._copyFrom_to_($recv($recv([$self._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=2
- //>>excludeEnd("ctx");
- ][0]).__minus(aNumber)).__plus((1)),$self._size());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"last:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "newStream",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "newStream\x0a\x09^ self streamClass on: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:", "streamClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._streamClass())._on_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newStream",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "pairsCollect:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "pairsCollect: aBlock\x0a\x09\x22Evaluate aBlock with my elements taken two at a time,\x0a\x09and return an Array with the results\x22\x0a\x0a\x09\x22(#(1 'fred' 2 'charlie' 3 'elmer') pairsCollect: [:a :b | b, ' is number ', a printString]) >>> #('fred is number 1' 'charlie is number 2' 'elmer is number 3')\x22\x0a\x0a\x09^ (1 to: self size // 2) collect: [ :index |\x0a\x09\x09aBlock value: (self at: 2 * index - 1) value: (self at: 2 * index) ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "to:", "//", "size", "value:value:", "at:", "-", "*"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv((1)._to_($recv($self._size()).__slash_slash((2))))._collect_((function(index){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._value_value_([$self._at_($recv([(2).__star(index)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["*"]=1
- //>>excludeEnd("ctx");
- ][0]).__minus((1)))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["at:"]=1
- //>>excludeEnd("ctx");
- ][0],$self._at_((2).__star(index)));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({index:index},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"pairsCollect:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "pairsDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "pairsDo: aBlock\x0a\x09\x22Evaluate aBlock with my elements taken two at a time.\x0a\x09If there's an odd number of items, ignore the last one.\x0a\x09Allows use of a flattened array for things that naturally group into pairs.\x0a\x09See also pairsCollect:\x22\x0a\x0a\x09\x22(#(1 'fred' 2 'charlie' 3 'elmer') pairsDo: [:a :b | Transcript cr; show: b, ' is number ', a printString]) >>> #(1 'fred' 2 'charlie' 3 'elmer')\x22\x0a\x0a\x091 to: self size // 2 do: [ :index |\x0a\x09\x09aBlock value: (self at: 2 * index - 1) value: (self at: 2 * index) ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["to:do:", "//", "size", "value:value:", "at:", "-", "*"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- (1)._to_do_($recv($self._size()).__slash_slash((2)),(function(index){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._value_value_([$self._at_($recv([(2).__star(index)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["*"]=1
- //>>excludeEnd("ctx");
- ][0]).__minus((1)))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["at:"]=1
- //>>excludeEnd("ctx");
- ][0],$self._at_((2).__star(index)));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({index:index},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"pairsDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "readStream",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "readStream\x0a\x09\x22For Pharo compatibility\x22\x0a\x09\x0a\x09^ self stream",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["stream"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._stream();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"readStream",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "removeLast",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "removeLast\x0a\x09^ self remove: self last",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["remove:", "last"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._remove_($self._last());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeLast",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "reverseDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "reverseDo: aBlock\x0a\x09self reversed do: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "reversed"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._reversed())._do_(aBlock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"reverseDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "reversed",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "reversed\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"reversed",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "second",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "second\x0a\x09^ self at: 2",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._at_((2));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"second",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "stream",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "stream\x0a\x09^ self newStream",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["newStream"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._newStream();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"stream",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "streamClass",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "streamClass\x0a\x09^ self class streamClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamClass", "class"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._class())._streamClass();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"streamClass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "third",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "third\x0a\x09^ self at: 3",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._at_((3));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"third",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "writeStream",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "writeStream\x0a\x09\x22For Pharo compatibility\x22\x0a\x09\x0a\x09^ self stream",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["stream"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._stream();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"writeStream",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "streamClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "streamClass\x0a\x09\x09^ Stream",
- referencedClasses: ["Stream"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.Stream;
- }; }),
- $globals.SequenceableCollection.a$cls);
- $core.addMethod(
- $core.method({
- selector: "streamContents:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "streamContents: aBlock\x0a\x09| stream |\x0a\x09stream := (self streamClass on: self new).\x0a\x09aBlock value: stream.\x0a\x09^ stream contents",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:", "streamClass", "new", "value:", "contents"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- var stream;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- stream=$recv($self._streamClass())._on_($self._new());
- $recv(aBlock)._value_(stream);
- return $recv(stream)._contents();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"streamContents:",{aBlock:aBlock,stream:stream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection.a$cls);
- $core.addClass("Array", $globals.SequenceableCollection, "Kernel-Collections");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "add:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "add: anObject\x0a\x09<inlineJS: 'self.push(anObject); return anObject;'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["self.push(anObject); return anObject;"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- self.push(anObject); return anObject;;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "addAll:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "addAll: aCollection\x0a<inlineJS: '\x0a\x09if (Array.isArray(aCollection) && aCollection.length < 65000) self.push.apply(self, aCollection);\x0a\x09else $globals.Array.superclass.fn.prototype._addAll_.call($self, aCollection);\x0a\x09return aCollection;\x0a'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09if (Array.isArray(aCollection) && aCollection.length < 65000) self.push.apply(self, aCollection);\x0a\x09else $globals.Array.superclass.fn.prototype._addAll_.call($self, aCollection);\x0a\x09return aCollection;"]]],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if (Array.isArray(aCollection) && aCollection.length < 65000) self.push.apply(self, aCollection);
- else $globals.Array.superclass.fn.prototype._addAll_.call($self, aCollection);
- return aCollection;;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addAll:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "addFirst:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "addFirst: anObject\x0a\x09<inlineJS: 'self.unshift(anObject); return anObject;'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["self.unshift(anObject); return anObject;"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- self.unshift(anObject); return anObject;;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addFirst:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "allIn:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "allIn: aBlock\x0a\x09^ aBlock valueWithPossibleArguments:\x0a\x09\x09\x22collect to match #in: behaviour\x22\x0a\x09\x09(self collect: [ :each | each in: [ :x | x ] ])",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["valueWithPossibleArguments:", "collect:", "in:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._valueWithPossibleArguments_($self._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._in_((function(x){
- return x;
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- })));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"allIn:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "appendToString:",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "appendToString: aString\x0a<inlineJS: '\x0a\x09for (var i = 0, l = $self.length; i < l; ++i) {\x0a\x09\x09var el = $self[i];\x0a\x09\x09if ((typeof el === \x22string\x22) || $recv(el)._isString()) {\x0a\x09\x09\x09if (el.length === 1) { aString += el; continue; }\x0a\x09\x09}\x0a\x09\x09$self._error_(\x22Not a character.\x22);\x0a\x09}\x0a\x09return aString'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09for (var i = 0, l = $self.length; i < l; ++i) {\x0a\x09\x09var el = $self[i];\x0a\x09\x09if ((typeof el === \x22string\x22) || $recv(el)._isString()) {\x0a\x09\x09\x09if (el.length === 1) { aString += el; continue; }\x0a\x09\x09}\x0a\x09\x09$self._error_(\x22Not a character.\x22);\x0a\x09}\x0a\x09return aString"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- for (var i = 0, l = $self.length; i < l; ++i) {
- var el = $self[i];
- if ((typeof el === "string") || $recv(el)._isString()) {
- if (el.length === 1) { aString += el; continue; }
- }
- $self._error_("Not a character.");
- }
- return aString;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"appendToString:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptSource",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptSource\x0a\x09^ '[', ((self collect: [:each | each asJavaScriptSource ]) join: ', '), ']'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "join:", "collect:", "asJavaScriptSource"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return [$recv("[".__comma($recv($self._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._asJavaScriptSource();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))._join_(", "))).__comma("]")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "at:put:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIndex", "anObject"],
- source: "at: anIndex put: anObject\x0a\x09<inlineJS: 'return self[anIndex - 1] = anObject'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self[anIndex - 1] = anObject"]]],
- messageSends: []
- }, function ($methodClass){ return function (anIndex,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self[anIndex - 1] = anObject;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:put:",{anIndex:anIndex,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "collect:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "collect: aBlock\x0a\x09\x22Optimized version\x22\x0a\x09\x0a\x09<inlineJS: 'return self.map(function(each) {return aBlock._value_(each)})'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.map(function(each) {return aBlock._value_(each)})"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.map(function(each) {return aBlock._value_(each)});
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "copyFrom:to:",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIndex", "anotherIndex"],
- source: "copyFrom: anIndex to: anotherIndex\x0a<inlineJS: '\x0a\x09if (anIndex >= 1 && anotherIndex <= self.length) {\x0a\x09\x09return self.slice(anIndex - 1, anotherIndex);\x0a\x09} else {\x0a\x09\x09self._at_(anIndex);\x0a\x09\x09self._at_(self.length + 1);\x0a\x09\x09throw new Error(\x22Incorrect indexes in #copyFrom:to: not caught by #at:\x22);\x0a\x09}\x0a'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09if (anIndex >= 1 && anotherIndex <= self.length) {\x0a\x09\x09return self.slice(anIndex - 1, anotherIndex);\x0a\x09} else {\x0a\x09\x09self._at_(anIndex);\x0a\x09\x09self._at_(self.length + 1);\x0a\x09\x09throw new Error(\x22Incorrect indexes in #copyFrom:to: not caught by #at:\x22);\x0a\x09}"]]],
- messageSends: []
- }, function ($methodClass){ return function (anIndex,anotherIndex){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if (anIndex >= 1 && anotherIndex <= self.length) {
- return self.slice(anIndex - 1, anotherIndex);
- } else {
- self._at_(anIndex);
- self._at_(self.length + 1);
- throw new Error("Incorrect indexes in #copyFrom:to: not caught by #at:");
- };
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"copyFrom:to:",{anIndex:anIndex,anotherIndex:anotherIndex})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "join:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "join: aString\x0a\x09<inlineJS: 'return self.join(aString)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.join(aString)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.join(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"join:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- 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: ')'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["printOn:", "nextPutAll:", "do:separatedBy:"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printOn:"]=1,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._nextPutAll_(" (")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._do_separatedBy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._printOn_(aStream);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(aStream)._nextPutAll_(" ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $recv(aStream)._nextPutAll_(")");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "remove:ifAbsent:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "aBlock"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["indexOf:ifAbsent:", "ifFalse:ifTrue:", "=", "removeIndex:", "value"]
- }, function ($methodClass){ return function (anObject,aBlock){
- var self=this,$self=this;
- var index;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- index=$self._indexOf_ifAbsent_(anObject,(function(){
- return (0);
- }));
- if($core.assert($recv(index).__eq((0)))){
- return $recv(aBlock)._value();
- } else {
- $self._removeIndex_(index);
- return anObject;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{anObject:anObject,aBlock:aBlock,index:index})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "removeAll",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "removeAll\x0a\x09<inlineJS: 'self.length = 0'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["self.length = 0"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- self.length = 0;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeAll",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "removeFrom:to:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber", "anotherNumber"],
- source: "removeFrom: aNumber to: anotherNumber\x0a\x09<inlineJS: 'self.splice(aNumber -1, anotherNumber - aNumber + 1)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["self.splice(aNumber -1, anotherNumber - aNumber + 1)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber,anotherNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- self.splice(aNumber -1, anotherNumber - aNumber + 1);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeFrom:to:",{aNumber:aNumber,anotherNumber:anotherNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "removeIndex:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- source: "removeIndex: anInteger\x0a\x09<inlineJS: 'self.splice(anInteger - 1, 1)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["self.splice(anInteger - 1, 1)"]]],
- messageSends: []
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- self.splice(anInteger - 1, 1);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeIndex:",{anInteger:anInteger})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "removeLast",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "removeLast\x0a\x09<inlineJS: 'return self.pop();'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.pop();"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.pop();;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeLast",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "reversed",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "reversed\x0a\x09<inlineJS: 'return self.slice().reverse()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.slice().reverse()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.slice().reverse();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"reversed",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "select:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "select: aBlock\x0a\x09\x22Optimized version\x22\x0a\x09\x0a\x09<inlineJS: 'return self.filter(function(each) {return aBlock._value_(each)})'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.filter(function(each) {return aBlock._value_(each)})"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.filter(function(each) {return aBlock._value_(each)});
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "shallowCopy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "shallowCopy\x0a\x09<inlineJS: 'return self.slice()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.slice()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.slice();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shallowCopy",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "sort",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sort\x0a\x09^ self sort: [ :a :b | a < b ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["sort:", "<"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._sort_((function(a,b){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(a).__lt(b);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sort",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "sort:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "sort: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09return self.sort(function(a, b) {\x0a\x09\x09\x09if(aBlock._value_value_(a,b)) {return -1} else {return 1}\x0a\x09\x09})\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return self.sort(function(a, b) {\x0a\x09\x09\x09if(aBlock._value_value_(a,b)) {return -1} else {return 1}\x0a\x09\x09})\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.sort(function(a, b) {
- if(aBlock._value_value_(a,b)) {return -1} else {return 1}
- })
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sort:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "sorted",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sorted\x0a\x09^ self copy sort",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["sort", "copy"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._copy())._sort();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sorted",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "sorted:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "sorted: aBlock\x0a\x09^ self copy sort: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["sort:", "copy"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._copy())._sort_(aBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sorted:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "new:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- source: "new: anInteger\x0a\x09<inlineJS: 'return new Array(anInteger)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return new Array(anInteger)"]]],
- messageSends: []
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return new Array(anInteger);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"new:",{anInteger:anInteger})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array.a$cls);
- $core.addMethod(
- $core.method({
- selector: "with:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "with: anObject\x0a\x09\x09^ (self new: 1)\x0a\x09\x09at: 1 put: anObject;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "new:", "yourself"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new_((1));
- $recv($1)._at_put_((1),anObject);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"with:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array.a$cls);
- $core.addMethod(
- $core.method({
- selector: "with:with:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "anObject2"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "new:", "yourself"]
- }, function ($methodClass){ return function (anObject,anObject2){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new_((2));
- [$recv($1)._at_put_((1),anObject)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._at_put_((2),anObject2);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"with:with:",{anObject:anObject,anObject2:anObject2})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array.a$cls);
- $core.addMethod(
- $core.method({
- selector: "with:with:with:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "anObject2", "anObject3"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "new:", "yourself"]
- }, function ($methodClass){ return function (anObject,anObject2,anObject3){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new_((3));
- [$recv($1)._at_put_((1),anObject)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_((2),anObject2)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._at_put_((3),anObject3);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"with:with:with:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array.a$cls);
- $core.addMethod(
- $core.method({
- selector: "withAll:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new:", "size", "do:", "at:put:", "+"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- var instance,index;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- index=(1);
- instance=$self._new_($recv(aCollection)._size());
- $recv(aCollection)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(instance)._at_put_(index,each);
- index=$recv(index).__plus((1));
- return index;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return instance;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"withAll:",{aCollection:aCollection,instance:instance,index:index})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array.a$cls);
- $core.addClass("String", $globals.SequenceableCollection, "Kernel-Collections");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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 >> #,`";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: ",",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: ", aString\x0a\x09<inlineJS: 'return typeof aString === \x22string\x22 ?\x0a\x09\x09String(self) + aString :\x0a\x09\x09$recv(aString)._appendToString_(String(self))'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aString === \x22string\x22 ?\x0a\x09\x09String(self) + aString :\x0a\x09\x09$recv(aString)._appendToString_(String(self))"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aString === "string" ?
- String(self) + aString :
- $recv(aString)._appendToString_(String(self));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,",",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "<",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "< aString\x0a<inlineJS: 'return typeof aString === \x22string\x22 ?\x0a\x09String(self) < aString :\x0a\x09$recv(aString)._isStringLessThanSelf_(String(self))'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aString === \x22string\x22 ?\x0a\x09String(self) < aString :\x0a\x09$recv(aString)._isStringLessThanSelf_(String(self))"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aString === "string" ?
- String(self) < aString :
- $recv(aString)._isStringLessThanSelf_(String(self));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"<",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "<=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "<= aString\x0a<inlineJS: 'return typeof aString === \x22string\x22 ?\x0a\x09String(self) <= aString :\x0a\x09$recv(aString)._isStringLessThanOrEqualToSelf_(String(self))'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aString === \x22string\x22 ?\x0a\x09String(self) <= aString :\x0a\x09$recv(aString)._isStringLessThanOrEqualToSelf_(String(self))"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aString === "string" ?
- String(self) <= aString :
- $recv(aString)._isStringLessThanOrEqualToSelf_(String(self));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"<=",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "= aString\x0a<inlineJS: 'return typeof aString === \x22string\x22 ?\x0a\x09String(self) === aString :\x0a\x09$recv(aString)._isStringEqualToSelf_(String(self))'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aString === \x22string\x22 ?\x0a\x09String(self) === aString :\x0a\x09$recv(aString)._isStringEqualToSelf_(String(self))"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aString === "string" ?
- String(self) === aString :
- $recv(aString)._isStringEqualToSelf_(String(self));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"=",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "==",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "== aString\x0a<inlineJS: 'return typeof aString === \x22string\x22 ?\x0a\x09String(self) === aString :\x0a\x09$recv(aString)._isStringEqualToSelf_(String(self))'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aString === \x22string\x22 ?\x0a\x09String(self) === aString :\x0a\x09$recv(aString)._isStringEqualToSelf_(String(self))"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aString === "string" ?
- String(self) === aString :
- $recv(aString)._isStringEqualToSelf_(String(self));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"==",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: ">",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "> aString\x0a<inlineJS: 'return typeof aString === \x22string\x22 ?\x0a\x09String(self) > aString :\x0a\x09$recv(aString)._isStringGreaterThanSelf_(String(self))'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aString === \x22string\x22 ?\x0a\x09String(self) > aString :\x0a\x09$recv(aString)._isStringGreaterThanSelf_(String(self))"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aString === "string" ?
- String(self) > aString :
- $recv(aString)._isStringGreaterThanSelf_(String(self));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,">",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: ">=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: ">= aString\x0a<inlineJS: 'return typeof aString === \x22string\x22 ?\x0a\x09String(self) >= aString :\x0a\x09$recv(aString)._isStringGreaterThanOrEqualSelf_(String(self))'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof aString === \x22string\x22 ?\x0a\x09String(self) >= aString :\x0a\x09$recv(aString)._isStringGreaterThanOrEqualSelf_(String(self))"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof aString === "string" ?
- String(self) >= aString :
- $recv(aString)._isStringGreaterThanOrEqualSelf_(String(self));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,">=",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "add:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "add: anObject\x0a\x09self errorReadOnly",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["errorReadOnly"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._errorReadOnly();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "appendToString:",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "appendToString: aString\x0a\x09<inlineJS: 'return aString + self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aString + self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aString + self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"appendToString:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptMethodName",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptMethodName\x0a\x09<inlineJS: 'return $core.st2js(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $core.st2js(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $core.st2js(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptMethodName",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptObject",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptObject\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptSource",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptSource\x0a\x09<inlineJS: '\x0a\x09\x09if(self.search(/^[a-zA-Z0-9_:.$ ]*$/) == -1)\x0a\x09\x09\x09return \x22\x5c\x22\x22 + self.replace(/[\x5cx00-\x5cx1f\x22\x5c\x5c\x5cx7f-\x5cx9f]/g, function(ch){var c=ch.charCodeAt(0);return \x22\x5c\x5cx\x22+(\x220\x22+c.toString(16)).slice(-2)}) + \x22\x5c\x22\x22;\x0a\x09\x09else\x0a\x09\x09\x09return \x22\x5c\x22\x22 + self + \x22\x5c\x22\x22;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09if(self.search(/^[a-zA-Z0-9_:.$ ]*$/) == -1)\x0a\x09\x09\x09return \x22\x5c\x22\x22 + self.replace(/[\x5cx00-\x5cx1f\x22\x5c\x5c\x5cx7f-\x5cx9f]/g, function(ch){var c=ch.charCodeAt(0);return \x22\x5c\x5cx\x22+(\x220\x22+c.toString(16)).slice(-2)}) + \x22\x5c\x22\x22;\x0a\x09\x09else\x0a\x09\x09\x09return \x22\x5c\x22\x22 + self + \x22\x5c\x22\x22;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(self.search(/^[a-zA-Z0-9_:.$ ]*$/) == -1)
- return "\"" + self.replace(/[\x00-\x1f"\\\x7f-\x9f]/g, function(ch){var c=ch.charCodeAt(0);return "\\x"+("0"+c.toString(16)).slice(-2)}) + "\"";
- else
- return "\"" + self + "\"";
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "asLowercase",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asLowercase\x0a\x09<inlineJS: 'return self.toLowerCase()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.toLowerCase()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.toLowerCase();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asLowercase",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "asMutator",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "=", "last", ","]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv($self._last()).__eq(":"))){
- return $self.__comma(":");
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asMutator",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "asNumber",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asNumber\x0a\x09<inlineJS: 'return Number(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Number(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Number(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asNumber",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "asRegexp",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asRegexp\x0a\x09^ RegularExpression fromString: self",
- referencedClasses: ["RegularExpression"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["fromString:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.RegularExpression)._fromString_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asRegexp",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "asString",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asString\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "asSymbol",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asSymbol\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "asSymbolPrintOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "asSymbolPrintOn: aStream\x0a\x09aStream nextPutAll: '#'.\x0a\x09self asString isSelector\x0a\x09\x09ifTrue: [ aStream nextPut: self ]\x0a\x09\x09ifFalse: [ self printOn: aStream ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "ifTrue:ifFalse:", "isSelector", "asString", "nextPut:", "printOn:"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._nextPutAll_("#");
- if($core.assert($recv($self._asString())._isSelector())){
- $recv(aStream)._nextPut_(self);
- } else {
- $self._printOn_(aStream);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asSymbolPrintOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "asUppercase",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asUppercase\x0a\x09<inlineJS: 'return self.toUpperCase()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.toUpperCase()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.toUpperCase();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asUppercase",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "asciiValue",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asciiValue\x0a\x09<inlineJS: 'return self.charCodeAt(0);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.charCodeAt(0);"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.charCodeAt(0);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asciiValue",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "at:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIndex", "aBlock"],
- source: "at: anIndex ifAbsent: aBlock\x0a\x09<inlineJS: 'return String(self)[anIndex - 1] || aBlock._value()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return String(self)[anIndex - 1] || aBlock._value()"]]],
- messageSends: []
- }, function ($methodClass){ return function (anIndex,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return String(self)[anIndex - 1] || aBlock._value();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{anIndex:anIndex,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "at:ifPresent:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIndex", "aBlock", "anotherBlock"],
- source: "at: anIndex ifPresent: aBlock ifAbsent: anotherBlock\x0a\x09<inlineJS: '\x0a\x09\x09var result = String(self)[anIndex - 1];\x0a\x09\x09return result ? aBlock._value_(result) : anotherBlock._value();\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var result = String(self)[anIndex - 1];\x0a\x09\x09return result ? aBlock._value_(result) : anotherBlock._value();\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (anIndex,aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var result = String(self)[anIndex - 1];
- return result ? aBlock._value_(result) : anotherBlock._value();
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{anIndex:anIndex,aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "at:put:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIndex", "anObject"],
- source: "at: anIndex put: anObject\x0a\x09self errorReadOnly",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["errorReadOnly"]
- }, function ($methodClass){ return function (anIndex,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._errorReadOnly();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:put:",{anIndex:anIndex,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "capitalized",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "capitalized\x0a\x09^ self ifNotEmpty: [ self first asUppercase, self allButFirst ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotEmpty:", ",", "asUppercase", "first", "allButFirst"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv($self._first())._asUppercase()).__comma($self._allButFirst());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"capitalized",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "charCodeAt:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- source: "charCodeAt: anInteger\x0a\x09<inlineJS: 'return self.charCodeAt(anInteger - 1)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.charCodeAt(anInteger - 1)"]]],
- messageSends: []
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.charCodeAt(anInteger - 1);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"charCodeAt:",{anInteger:anInteger})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "copyFrom:to:",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIndex", "anotherIndex"],
- source: "copyFrom: anIndex to: anotherIndex\x0a\x09<inlineJS: 'return self.substring(anIndex - 1, anotherIndex)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.substring(anIndex - 1, anotherIndex)"]]],
- messageSends: []
- }, function ($methodClass){ return function (anIndex,anotherIndex){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.substring(anIndex - 1, anotherIndex);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"copyFrom:to:",{anIndex:anIndex,anotherIndex:anotherIndex})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "copyWithFirst:",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "copyWithFirst: anObject\x0a\x09(anObject isString and: [ anObject size = 1 ]) \x22character is one-char string in JS\x22\x0a\x09\x09ifFalse: [ self error: 'Cannot put ', anObject class name, ' in a String' ].\x0a\x09^ anObject, self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "and:", "isString", "=", "size", "error:", ",", "name", "class"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- if($core.assert($recv(anObject)._isString())){
- $1=$recv($recv(anObject)._size()).__eq((1));
- } else {
- $1=false;
- }
- if(!$core.assert($1)){
- $self._error_([$recv(["Cannot put ".__comma($recv($recv(anObject)._class())._name())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(" in a String")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]);
- }
- return $recv(anObject).__comma(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"copyWithFirst:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "crlfSanitized",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "crlfSanitized\x0a\x09^ self lines join: String lf",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["join:", "lines", "lf"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._lines())._join_($recv($globals.String)._lf());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"crlfSanitized",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "deepCopy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "deepCopy\x0a\x09^ self shallowCopy",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["shallowCopy"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._shallowCopy();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"deepCopy",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "errorReadOnly",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "errorReadOnly\x0a\x09self error: 'Object is read-only'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("Object is read-only");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"errorReadOnly",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "escaped",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "escaped\x0a\x09<inlineJS: 'return escape(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return escape(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return escape(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"escaped",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "includesSubString:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["subString"],
- source: "includesSubString: subString\x0a\x09<inlineJS: 'return self.indexOf(subString) != -1'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.indexOf(subString) != -1"]]],
- messageSends: []
- }, function ($methodClass){ return function (subString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.indexOf(subString) != -1;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"includesSubString:",{subString:subString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "isCapitalized",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isCapitalized\x0a\x09^ self first asUppercase == self first",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["==", "asUppercase", "first"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv([$self._first()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["first"]=1
- //>>excludeEnd("ctx");
- ][0])._asUppercase()).__eq_eq($self._first());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isCapitalized",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "isImmutable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isImmutable\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "isSelector",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSelector\x0a<inlineJS:\x0a\x09'return !!self.match(/^([a-zA-Z][a-zA-Z0-9]*|[\x5c\x5c+*/=><,@%~|&-]+|([a-zA-Z][a-zA-Z0-9]*\x5c:)+)$/)'\x0a>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return !!self.match(/^([a-zA-Z][a-zA-Z0-9]*|[\x5c\x5c+*/=><,@%~|&-]+|([a-zA-Z][a-zA-Z0-9]*\x5c:)+)$/)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return !!self.match(/^([a-zA-Z][a-zA-Z0-9]*|[\\+*/=><,@%~|&-]+|([a-zA-Z][a-zA-Z0-9]*\:)+)$/);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isSelector",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "isString",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isString\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "isStringEqualToSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "isStringEqualToSelf: aString\x0a\x09<inlineJS: 'return aString === String(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aString === String(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aString === String(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isStringEqualToSelf:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "isStringGreaterThanOrEqualToSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "isStringGreaterThanOrEqualToSelf: aString\x0a\x09<inlineJS: 'return aString >= self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aString >= self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aString >= self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isStringGreaterThanOrEqualToSelf:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "isStringGreaterThanSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "isStringGreaterThanSelf: aString\x0a\x09<inlineJS: 'return aString > self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aString > self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aString > self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isStringGreaterThanSelf:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "isStringLessThanOrEqualToSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "isStringLessThanOrEqualToSelf: aString\x0a\x09<inlineJS: 'return aString <= self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aString <= self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aString <= self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isStringLessThanOrEqualToSelf:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "isStringLessThanSelf:",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "isStringLessThanSelf: aString\x0a\x09<inlineJS: 'return aString < self'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aString < self"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aString < self;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isStringLessThanSelf:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "isVowel",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "=", "size", "includes:", "asLowercase"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($self._size()).__eq((1)))){
- return "aeiou"._includes_($self._asLowercase());
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isVowel",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "join:",
- protocol: "split join",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- 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 ]]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "do:separatedBy:", "nextPutAll:", "asString"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(stream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aCollection)._do_separatedBy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [$recv(stream)._nextPutAll_($recv(each)._asString())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(stream)._nextPutAll_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"join:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "lineIndicesDo:",
- protocol: "split join",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- 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 ] ]]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["size", "cr", "indexOf:startingAt:", "lf", "whileTrue:", "<=", "ifTrue:", "and:", "=", "value:value:value:", "ifTrue:ifFalse:", "or:", "<", "-", "+"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- var cr,lf,start,sz,nextLF,nextCR;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- var $early={};
- try {
- start=(1);
- sz=$self._size();
- cr=$recv($globals.String)._cr();
- nextCR=[$self._indexOf_startingAt_(cr,(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["indexOf:startingAt:"]=1
- //>>excludeEnd("ctx");
- ][0];
- lf=$recv($globals.String)._lf();
- nextLF=[$self._indexOf_startingAt_(lf,(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["indexOf:startingAt:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(start).__lt_eq(sz);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._whileTrue_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv(nextLF).__eq((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])){
- $1=[$recv(nextCR).__eq((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["="]=2
- //>>excludeEnd("ctx");
- ][0];
- } else {
- $1=false;
- }
- if($core.assert($1)){
- [$recv(aBlock)._value_value_value_(start,sz,sz)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["value:value:value:"]=1
- //>>excludeEnd("ctx");
- ][0];
- throw $early=[self];
- }
- if($core.assert([$recv(nextCR).__eq((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["="]=3
- //>>excludeEnd("ctx");
- ][0])){
- $2=true;
- } else {
- if($core.assert([(0).__lt(nextLF)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["<"]=1
- //>>excludeEnd("ctx");
- ][0])){
- $2=$recv(nextLF).__lt(nextCR);
- } else {
- $2=false;
- }
- }
- if($core.assert($2)){
- [$recv(aBlock)._value_value_value_(start,[$recv(nextLF).__minus((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["-"]=1
- //>>excludeEnd("ctx");
- ][0],nextLF)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["value:value:value:"]=2
- //>>excludeEnd("ctx");
- ][0];
- start=[(1).__plus(nextLF)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["+"]=1
- //>>excludeEnd("ctx");
- ][0];
- nextLF=[$self._indexOf_startingAt_(lf,start)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["indexOf:startingAt:"]=3
- //>>excludeEnd("ctx");
- ][0];
- return nextLF;
- } else {
- if($core.assert($recv([(1).__plus(nextCR)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["+"]=2
- //>>excludeEnd("ctx");
- ][0]).__eq(nextLF))){
- [$recv(aBlock)._value_value_value_(start,[$recv(nextCR).__minus((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["-"]=2
- //>>excludeEnd("ctx");
- ][0],nextLF)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["value:value:value:"]=3
- //>>excludeEnd("ctx");
- ][0];
- start=[(1).__plus(nextLF)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["+"]=3
- //>>excludeEnd("ctx");
- ][0];
- nextCR=[$self._indexOf_startingAt_(cr,start)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["indexOf:startingAt:"]=4
- //>>excludeEnd("ctx");
- ][0];
- nextLF=[$self._indexOf_startingAt_(lf,start)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["indexOf:startingAt:"]=5
- //>>excludeEnd("ctx");
- ][0];
- return nextLF;
- } else {
- $recv(aBlock)._value_value_value_(start,$recv(nextCR).__minus((1)),nextCR);
- start=(1).__plus(nextCR);
- nextCR=$self._indexOf_startingAt_(cr,start);
- return nextCR;
- }
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"lineIndicesDo:",{aBlock:aBlock,cr:cr,lf:lf,start:start,sz:sz,nextLF:nextLF,nextCR:nextCR})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "lineNumber:",
- protocol: "split join",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIndex"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["lineIndicesDo:", "ifTrue:", "=", "+", "copyFrom:to:"]
- }, function ($methodClass){ return function (anIndex){
- var self=this,$self=this;
- var lineCount;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- lineCount=(0);
- $self._lineIndicesDo_((function(start,endWithoutDelimiters,end){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- lineCount=$recv(lineCount).__plus((1));
- if($core.assert($recv(lineCount).__eq(anIndex))){
- throw $early=[$self._copyFrom_to_(start,endWithoutDelimiters)];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({start:start,endWithoutDelimiters:endWithoutDelimiters,end:end},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return nil;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"lineNumber:",{anIndex:anIndex,lineCount:lineCount})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "lines",
- protocol: "split join",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "lines\x0a\x09\x22Answer an array of lines composing this receiver without the line ending delimiters.\x22\x0a<inlineJS: '\x0a\x09var result = self.split(/\x5cr\x5cn|\x5cr|\x5cn/);\x0a\x09if (!result[result.length-1]) result.pop();\x0a\x09return result;\x0a'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09var result = self.split(/\x5cr\x5cn|\x5cr|\x5cn/);\x0a\x09if (!result[result.length-1]) result.pop();\x0a\x09return result;"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var result = self.split(/\r\n|\r|\n/);
- if (!result[result.length-1]) result.pop();
- return result;;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"lines",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "linesDo:",
- protocol: "split join",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "linesDo: aBlock\x0a\x09\x22Execute aBlock with each line in this string. The terminating line\x0a\x09delimiters CR, LF or CRLF pairs are not included in what is passed to aBlock\x22\x0a\x0a\x09self lines do: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "lines"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._lines())._do_(aBlock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"linesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "match:",
- protocol: "regular expressions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aRegexp"],
- source: "match: aRegexp\x0a\x09<inlineJS: 'return self.search(aRegexp) != -1'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.search(aRegexp) != -1"]]],
- messageSends: []
- }, function ($methodClass){ return function (aRegexp){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.search(aRegexp) != -1;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"match:",{aRegexp:aRegexp})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "matchesOf:",
- protocol: "regular expressions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aRegularExpression"],
- source: "matchesOf: aRegularExpression\x0a\x09<inlineJS: 'return self.match(aRegularExpression)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.match(aRegularExpression)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aRegularExpression){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.match(aRegularExpression);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"matchesOf:",{aRegularExpression:aRegularExpression})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "printNl",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "printNl\x0a\x09<inlineJS: 'console.log(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["console.log(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- console.log(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printNl",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "printOn: aStream\x0a\x09aStream \x0a\x09\x09nextPutAll: '''';\x0a\x09\x09nextPutAll: (self replace: '''' with: '''''');\x0a\x09\x09nextPutAll: ''''",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "replace:with:"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._nextPutAll_("'")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._nextPutAll_($self._replace_with_("'","''"))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._nextPutAll_("'");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "putOn:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "putOn: aStream\x0a\x09aStream nextPutString: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutString:"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._nextPutString_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "remove:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "remove: anObject\x0a\x09self errorReadOnly",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["errorReadOnly"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._errorReadOnly();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"remove:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "remove:ifAbsent:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "aBlock"],
- source: "remove: anObject ifAbsent: aBlock\x0a\x09self errorReadOnly",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["errorReadOnly"]
- }, function ($methodClass){ return function (anObject,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._errorReadOnly();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{anObject:anObject,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "replace:with:",
- protocol: "regular expressions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anotherString"],
- source: "replace: aString with: anotherString\x0a\x09^ self replaceRegexp: (RegularExpression fromString: aString flag: 'g') with: anotherString",
- referencedClasses: ["RegularExpression"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["replaceRegexp:with:", "fromString:flag:"]
- }, function ($methodClass){ return function (aString,anotherString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._replaceRegexp_with_($recv($globals.RegularExpression)._fromString_flag_(aString,"g"),anotherString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"replace:with:",{aString:aString,anotherString:anotherString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "replaceRegexp:with:",
- protocol: "regular expressions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aRegexp", "aString"],
- source: "replaceRegexp: aRegexp with: aString\x0a\x09<inlineJS: 'return self.replace(aRegexp, aString)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.replace(aRegexp, aString)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aRegexp,aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.replace(aRegexp, aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"replaceRegexp:with:",{aRegexp:aRegexp,aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "reversed",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "reversed\x0a\x09<inlineJS: 'return self.split(\x22\x22).reverse().join(\x22\x22)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.split(\x22\x22).reverse().join(\x22\x22)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.split("").reverse().join("");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"reversed",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "shallowCopy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "shallowCopy\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "shortenedPrintString",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "shortenedPrintString\x0a\x09^ self printString size > 30\x0a\x09\x09ifTrue: [ (self printString copyFrom: 1 to: 30), '...''' ]\x0a\x09\x09ifFalse: [ self printString ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", ">", "size", "printString", ",", "copyFrom:to:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv([$self._printString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printString"]=1
- //>>excludeEnd("ctx");
- ][0])._size()).__gt((30)))){
- return $recv($recv([$self._printString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printString"]=2
- //>>excludeEnd("ctx");
- ][0])._copyFrom_to_((1),(30))).__comma("...'");
- } else {
- return $self._printString();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shortenedPrintString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "subStrings:",
- protocol: "split join",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "subStrings: aString\x0a\x09^ self tokenize: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["tokenize:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._tokenize_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subStrings:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "symbolPrintString",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "symbolPrintString\x0a\x09^ String streamContents: [ :str | self asSymbolPrintOn: str ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "asSymbolPrintOn:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(str){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._asSymbolPrintOn_(str);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"symbolPrintString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "tokenize:",
- protocol: "split join",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "tokenize: aString\x0a\x09<inlineJS: 'return self.split(aString)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.split(aString)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.split(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"tokenize:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "trimBoth",
- protocol: "regular expressions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "trimBoth\x0a\x09^ self trimBoth: '\x5cs'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["trimBoth:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._trimBoth_("\x5cs");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"trimBoth",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "trimBoth:",
- protocol: "regular expressions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["separators"],
- source: "trimBoth: separators\x0a\x09^ (self trimLeft: separators) trimRight: separators",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["trimRight:", "trimLeft:"]
- }, function ($methodClass){ return function (separators){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._trimLeft_(separators))._trimRight_(separators);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"trimBoth:",{separators:separators})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "trimLeft",
- protocol: "regular expressions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "trimLeft\x0a\x09^ self trimLeft: '\x5cs'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["trimLeft:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._trimLeft_("\x5cs");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"trimLeft",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "trimLeft:",
- protocol: "regular expressions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["separators"],
- source: "trimLeft: separators\x0a\x09^ self replaceRegexp: (RegularExpression fromString: '^[', separators, ']+' flag: 'g') with: ''",
- referencedClasses: ["RegularExpression"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["replaceRegexp:with:", "fromString:flag:", ","]
- }, function ($methodClass){ return function (separators){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._replaceRegexp_with_($recv($globals.RegularExpression)._fromString_flag_([$recv("^[".__comma(separators)).__comma("]+")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0],"g"),"");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"trimLeft:",{separators:separators})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "trimRight",
- protocol: "regular expressions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "trimRight\x0a\x09^ self trimRight: '\x5cs'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["trimRight:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._trimRight_("\x5cs");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"trimRight",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "trimRight:",
- protocol: "regular expressions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["separators"],
- source: "trimRight: separators\x0a\x09^ self replaceRegexp: (RegularExpression fromString: '[', separators, ']+$' flag: 'g') with: ''",
- referencedClasses: ["RegularExpression"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["replaceRegexp:with:", "fromString:flag:", ","]
- }, function ($methodClass){ return function (separators){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._replaceRegexp_with_($recv($globals.RegularExpression)._fromString_flag_([$recv("[".__comma(separators)).__comma("]+$")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0],"g"),"");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"trimRight:",{separators:separators})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "unescaped",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "unescaped\x0a\x09<inlineJS: 'return unescape(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return unescape(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return unescape(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"unescaped",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "uriComponentDecoded",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "uriComponentDecoded\x0a\x09<inlineJS: 'return decodeURIComponent(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return decodeURIComponent(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return decodeURIComponent(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"uriComponentDecoded",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "uriComponentEncoded",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "uriComponentEncoded\x0a\x09<inlineJS: 'return encodeURIComponent(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return encodeURIComponent(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return encodeURIComponent(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"uriComponentEncoded",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "uriDecoded",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "uriDecoded\x0a\x09<inlineJS: 'return decodeURI(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return decodeURI(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return decodeURI(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"uriDecoded",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "uriEncoded",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "uriEncoded\x0a\x09<inlineJS: 'return encodeURI(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return encodeURI(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return encodeURI(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"uriEncoded",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "value:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "value: anObject \x0a\x09^ anObject perform: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["perform:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(anObject)._perform_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "cr",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "cr\x0a\x09<inlineJS: 'return \x22\x5cr\x22'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return \x22\x5cr\x22"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return "\r";
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"cr",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String.a$cls);
- $core.addMethod(
- $core.method({
- selector: "crlf",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "crlf\x0a\x09<inlineJS: 'return \x22\x5cr\x5cn\x22'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return \x22\x5cr\x5cn\x22"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return "\r\n";
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"crlf",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String.a$cls);
- $core.addMethod(
- $core.method({
- selector: "esc",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "esc\x0a\x09^ self fromCharCode: 27",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["fromCharCode:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._fromCharCode_((27));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"esc",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String.a$cls);
- $core.addMethod(
- $core.method({
- selector: "fromCharCode:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- source: "fromCharCode: anInteger\x0a\x09<inlineJS: 'return String.fromCharCode(anInteger)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return String.fromCharCode(anInteger)"]]],
- messageSends: []
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return String.fromCharCode(anInteger);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fromCharCode:",{anInteger:anInteger})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String.a$cls);
- $core.addMethod(
- $core.method({
- selector: "fromString:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "fromString: aString\x0a\x09\x09<inlineJS: 'return String(aString)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return String(aString)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return String(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fromString:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String.a$cls);
- $core.addMethod(
- $core.method({
- selector: "lf",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "lf\x0a\x09<inlineJS: 'return \x22\x5cn\x22'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return \x22\x5cn\x22"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return "\n";
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"lf",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String.a$cls);
- $core.addMethod(
- $core.method({
- selector: "random",
- protocol: "random",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "random\x0a\x09\x22Returns random alphanumeric string beginning with letter\x22\x0a\x09<inlineJS: 'return ((10+22*Math.random())/32).toString(32).slice(2);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return ((10+22*Math.random())/32).toString(32).slice(2);"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return ((10+22*Math.random())/32).toString(32).slice(2);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"random",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String.a$cls);
- $core.addMethod(
- $core.method({
- selector: "randomNotIn:",
- protocol: "random",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "randomNotIn: aString\x0a\x09| result |\x0a\x09[ result := self random. aString includesSubString: result ] whileTrue.\x0a\x09^ result",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["whileTrue", "random", "includesSubString:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- var result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- result=$self._random();
- return $recv(aString)._includesSubString_(result);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._whileTrue();
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"randomNotIn:",{aString:aString,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String.a$cls);
- $core.addMethod(
- $core.method({
- selector: "space",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "space\x0a\x09<inlineJS: 'return \x22 \x22'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return \x22 \x22"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return " ";
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"space",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String.a$cls);
- $core.addMethod(
- $core.method({
- selector: "streamClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "streamClass\x0a\x09\x09^ StringStream",
- referencedClasses: ["StringStream"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.StringStream;
- }; }),
- $globals.String.a$cls);
- $core.addMethod(
- $core.method({
- selector: "tab",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "tab\x0a\x09<inlineJS: 'return \x22\x5ct\x22'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return \x22\x5ct\x22"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return "\t";
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"tab",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String.a$cls);
- $core.addMethod(
- $core.method({
- selector: "value:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aUTFCharCode"],
- source: "value: aUTFCharCode\x0a\x0a\x09<inlineJS: 'return String.fromCharCode(aUTFCharCode);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return String.fromCharCode(aUTFCharCode);"]]],
- messageSends: []
- }, function ($methodClass){ return function (aUTFCharCode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return String.fromCharCode(aUTFCharCode);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:",{aUTFCharCode:aUTFCharCode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String.a$cls);
- $core.addClass("Set", $globals.Collection, "Kernel-Collections");
- $core.setSlots($globals.Set, ["defaultBucket", "slowBucketStores", "fastBuckets", "size"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "= aCollection\x0a\x09^ self class = aCollection class and: [\x0a\x09\x09self size = aCollection size and: [\x0a\x09\x09\x09self allSatisfy: [ :each | aCollection includes: each ] ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "=", "class", "size", "allSatisfy:", "includes:"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv([$self._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv(aCollection)._class())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])){
- if($core.assert($recv([$self._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv(aCollection)._size()))){
- return $self._allSatisfy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aCollection)._includes_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- } else {
- return false;
- }
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"=",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "add:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["bucketsOfElement:", "ifNil:ifNotNil:", "second", "first", "third", "indexOf:ifAbsent:", "add:", "+", "add:in:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- var bucket;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- bucket=$self._bucketsOfElement_(anObject);
- $1=$recv(bucket)._second();
- if($1 == null || $1.a$nil){
- var object,slowBucket;
- object=[$recv(bucket)._first()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["first"]=1
- //>>excludeEnd("ctx");
- ][0];
- slowBucket=$recv(bucket)._third();
- $recv(slowBucket)._indexOf_ifAbsent_(object,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(slowBucket)._add_(object);
- $self.size=$recv($self.size).__plus((1));
- return $self.size;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return object;
- } else {
- var primitiveBucket;
- primitiveBucket=$1;
- return $self._add_in_($recv(bucket)._first(),primitiveBucket);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject,bucket:bucket})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "add:in:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "anotherObject"],
- source: "add: anObject in: anotherObject\x0a\x09<inlineJS: '\x0a\x09\x09if (anObject in anotherObject.store) { return anObject; }\x0a\x09\x09$self.size++;\x0a\x09\x09anotherObject.store[anObject] = true;\x0a\x09\x09return anObject;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09if (anObject in anotherObject.store) { return anObject; }\x0a\x09\x09$self.size++;\x0a\x09\x09anotherObject.store[anObject] = true;\x0a\x09\x09return anObject;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject,anotherObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if (anObject in anotherObject.store) { return anObject; }
- $self.size++;
- anotherObject.store[anObject] = true;
- return anObject;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"add:in:",{anObject:anObject,anotherObject:anotherObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "bucketsOfElement:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "bucketsOfElement: anObject\x0a\x09\x22Find the appropriate bucket for `anObject`.\x0a\x09For optimization purposes, directly answer an array with: \x0a\x09- the object to be store\x0a\x09- the primitive bucket\x0a\x09- the slow bucket\x22\x0a\x09\x0a\x09<inlineJS: '\x0a\x09\x09// include nil to well-known objects under \x22boolean\x22 fastBucket\x0a\x09\x09if (anObject == null || anObject.a$nil) return [ null, $self.fastBuckets.boolean ];\x0a\x09\x09\x0a\x09\x09var prim = anObject.valueOf();\x0a\x09\x09if (typeof prim === \x22object\x22 || typeof prim === \x22function\x22 || !$self.fastBuckets[typeof prim]) {\x0a\x09\x09\x09var bucket = null;\x0a\x09\x09\x09$self.slowBucketStores.some(function (store) {\x0a\x09\x09\x09\x09return bucket = store._bucketOfElement_(anObject);\x0a\x09\x09\x09});\x0a\x09\x09\x09return [ anObject, null, bucket || $self.defaultBucket ];\x0a\x09\x09}\x0a\x09\x09return [ prim, $self.fastBuckets[typeof prim] ];\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09// include nil to well-known objects under \x22boolean\x22 fastBucket\x0a\x09\x09if (anObject == null || anObject.a$nil) return [ null, $self.fastBuckets.boolean ];\x0a\x09\x09\x0a\x09\x09var prim = anObject.valueOf();\x0a\x09\x09if (typeof prim === \x22object\x22 || typeof prim === \x22function\x22 || !$self.fastBuckets[typeof prim]) {\x0a\x09\x09\x09var bucket = null;\x0a\x09\x09\x09$self.slowBucketStores.some(function (store) {\x0a\x09\x09\x09\x09return bucket = store._bucketOfElement_(anObject);\x0a\x09\x09\x09});\x0a\x09\x09\x09return [ anObject, null, bucket || $self.defaultBucket ];\x0a\x09\x09}\x0a\x09\x09return [ prim, $self.fastBuckets[typeof prim] ];\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- // include nil to well-known objects under "boolean" fastBucket
- if (anObject == null || anObject.a$nil) return [ null, $self.fastBuckets.boolean ];
-
- var prim = anObject.valueOf();
- if (typeof prim === "object" || typeof prim === "function" || !$self.fastBuckets[typeof prim]) {
- var bucket = null;
- $self.slowBucketStores.some(function (store) {
- return bucket = store._bucketOfElement_(anObject);
- });
- return [ anObject, null, bucket || $self.defaultBucket ];
- }
- return [ prim, $self.fastBuckets[typeof prim] ];
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"bucketsOfElement:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "classNameOf:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "classNameOf: anObject\x0a\x09\x22Answer the class name of `anObject`, or `undefined` \x0a\x09if `anObject` is not an Smalltalk object\x22\x0a\x09\x0a\x09<inlineJS: 'return anObject.a$cls != null && anObject.a$cls.name'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return anObject.a$cls != null && anObject.a$cls.name"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return anObject.a$cls != null && anObject.a$cls.name;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"classNameOf:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "collect:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "collect: aBlock\x0a\x09| collection |\x0a\x09collection := self class new.\x0a\x09self do: [ :each | collection add: (aBlock value: each) ].\x0a\x09^ collection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "class", "do:", "add:", "value:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- var collection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- collection=$recv($self._class())._new();
- $self._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(collection)._add_($recv(aBlock)._value_(each));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return collection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collect:",{aBlock:aBlock,collection:collection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "do:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "do: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09var el, keys, i;\x0a\x09\x09el = $self.fastBuckets;\x0a\x09\x09keys = Object.keys(el);\x0a\x09\x09for (i = 0; i < keys.length; ++i) {\x0a\x09\x09\x09var fastBucket = el[keys[i]], fn = fastBucket.fn, store = Object.keys(fastBucket.store);\x0a\x09\x09\x09if (fn) { for (var j = 0; j < store.length; ++j) { aBlock._value_(fn(store[j])); } }\x0a\x09\x09\x09else { store._do_(aBlock); }\x0a\x09\x09}\x0a\x09\x09el = $self.slowBucketStores;\x0a\x09\x09for (i = 0; i < el.length; ++i) { el[i]._do_(aBlock); }\x0a\x09\x09$self.defaultBucket._do_(aBlock);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var el, keys, i;\x0a\x09\x09el = $self.fastBuckets;\x0a\x09\x09keys = Object.keys(el);\x0a\x09\x09for (i = 0; i < keys.length; ++i) {\x0a\x09\x09\x09var fastBucket = el[keys[i]], fn = fastBucket.fn, store = Object.keys(fastBucket.store);\x0a\x09\x09\x09if (fn) { for (var j = 0; j < store.length; ++j) { aBlock._value_(fn(store[j])); } }\x0a\x09\x09\x09else { store._do_(aBlock); }\x0a\x09\x09}\x0a\x09\x09el = $self.slowBucketStores;\x0a\x09\x09for (i = 0; i < el.length; ++i) { el[i]._do_(aBlock); }\x0a\x09\x09$self.defaultBucket._do_(aBlock);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var el, keys, i;
- el = $self.fastBuckets;
- keys = Object.keys(el);
- for (i = 0; i < keys.length; ++i) {
- var fastBucket = el[keys[i]], fn = fastBucket.fn, store = Object.keys(fastBucket.store);
- if (fn) { for (var j = 0; j < store.length; ++j) { aBlock._value_(fn(store[j])); } }
- else { store._do_(aBlock); }
- }
- el = $self.slowBucketStores;
- for (i = 0; i < el.length; ++i) { el[i]._do_(aBlock); }
- $self.defaultBucket._do_(aBlock);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "includes:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["bucketsOfElement:", "ifNil:ifNotNil:", "second", "includes:", "third", "first", "includes:in:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- var bucket;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- bucket=$self._bucketsOfElement_(anObject);
- $1=$recv(bucket)._second();
- if($1 == null || $1.a$nil){
- return $recv($recv(bucket)._third())._includes_([$recv(bucket)._first()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["first"]=1
- //>>excludeEnd("ctx");
- ][0]);
- } else {
- var primitiveBucket;
- primitiveBucket=$1;
- return $self._includes_in_($recv(bucket)._first(),primitiveBucket);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"includes:",{anObject:anObject,bucket:bucket})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "includes:in:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "anotherObject"],
- source: "includes: anObject in: anotherObject\x0a\x09<inlineJS: 'return anObject in anotherObject.store'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return anObject in anotherObject.store"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject,anotherObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return anObject in anotherObject.store;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"includes:in:",{anObject:anObject,anotherObject:anotherObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x09\x0a\x09defaultBucket := #().\x0a\x09self\x0a\x09\x09initializeSlowBucketStores;\x0a\x09\x09removeAll",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "initializeSlowBucketStores", "removeAll"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.defaultBucket=[];
- $self._initializeSlowBucketStores();
- $self._removeAll();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "initializeSlowBucketStores",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initializeSlowBucketStores\x0a\x09slowBucketStores := {\x0a\x09\x09ArrayBucketStore hashBlock: [ :x | self classNameOf: x ].\x0a\x09\x09ArrayBucketStore hashBlock: [ :x | self jsConstructorNameOf: x ]\x0a\x09}",
- referencedClasses: ["ArrayBucketStore"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["hashBlock:", "classNameOf:", "jsConstructorNameOf:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.slowBucketStores=[[$recv($globals.ArrayBucketStore)._hashBlock_((function(x){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._classNameOf_(x);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["hashBlock:"]=1
- //>>excludeEnd("ctx");
- ][0],$recv($globals.ArrayBucketStore)._hashBlock_((function(x){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._jsConstructorNameOf_(x);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,2)});
- //>>excludeEnd("ctx");
- }))];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initializeSlowBucketStores",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "jsConstructorNameOf:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "jsConstructorNameOf: anObject\x0a\x09<inlineJS: 'return anObject.constructor && anObject.constructor.name'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return anObject.constructor && anObject.constructor.name"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return anObject.constructor && anObject.constructor.name;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"jsConstructorNameOf:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- 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: ')'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["printOn:", "nextPutAll:", "do:separatedBy:"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printOn:"]=1,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._nextPutAll_(" (")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._do_separatedBy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._printOn_(aStream);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(aStream)._nextPutAll_(" ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $recv(aStream)._nextPutAll_(")");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "remove:ifAbsent:",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "aBlock"],
- source: "remove: anObject ifAbsent: aBlock\x0a\x09| bucket |\x0a\x09bucket := self bucketsOfElement: anObject.\x0a\x09^ bucket second\x0a\x09\x09ifNil: [ | obj | obj := bucket first. bucket third remove: obj ifAbsent: [ ^aBlock value ]. size := size - 1. obj ]\x0a\x09\x09ifNotNil: [ :primitiveBucket | self remove: bucket first in: primitiveBucket ifAbsent: aBlock ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["bucketsOfElement:", "ifNil:ifNotNil:", "second", "first", "remove:ifAbsent:", "third", "value", "-", "remove:in:ifAbsent:"]
- }, function ($methodClass){ return function (anObject,aBlock){
- var self=this,$self=this;
- var bucket;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- var $early={};
- try {
- bucket=$self._bucketsOfElement_(anObject);
- $1=$recv(bucket)._second();
- if($1 == null || $1.a$nil){
- var obj;
- obj=[$recv(bucket)._first()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["first"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($recv(bucket)._third())._remove_ifAbsent_(obj,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- throw $early=[$recv(aBlock)._value()];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $self.size=$recv($self.size).__minus((1));
- return obj;
- } else {
- var primitiveBucket;
- primitiveBucket=$1;
- return $self._remove_in_ifAbsent_($recv(bucket)._first(),primitiveBucket,aBlock);
- }
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"remove:ifAbsent:",{anObject:anObject,aBlock:aBlock,bucket:bucket})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "remove:in:ifAbsent:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "anotherObject", "aBlock"],
- source: "remove: anObject in: anotherObject ifAbsent: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09if (anObject in anotherObject.store) {\x0a\x09\x09\x09delete anotherObject.store[anObject];\x0a\x09\x09\x09$self.size--;\x0a\x09\x09\x09return anObject;\x0a\x09\x09} else {\x0a\x09\x09\x09return aBlock._value();\x0a\x09\x09}'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09if (anObject in anotherObject.store) {\x0a\x09\x09\x09delete anotherObject.store[anObject];\x0a\x09\x09\x09$self.size--;\x0a\x09\x09\x09return anObject;\x0a\x09\x09} else {\x0a\x09\x09\x09return aBlock._value();\x0a\x09\x09}"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject,anotherObject,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if (anObject in anotherObject.store) {
- delete anotherObject.store[anObject];
- $self.size--;
- return anObject;
- } else {
- return aBlock._value();
- };
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"remove:in:ifAbsent:",{anObject:anObject,anotherObject:anotherObject,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "removeAll",
- protocol: "adding/removing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "removeAll\x0a\x09<inlineJS: '\x0a\x09\x09$self.fastBuckets = {\x0a\x09\x09\x09\x22boolean\x22: { store: Object.create(null), fn: function (x) { return {\x22true\x22: true, \x22false\x22: false, \x22null\x22: null}[x]; } },\x0a\x09\x09\x09\x22number\x22: { store: Object.create(null), fn: Number },\x0a\x09\x09\x09\x22string\x22: { store: Object.create(null) }\x0a\x09\x09};\x0a\x09\x09$self.slowBucketStores.forEach(function (x) { x._removeAll(); });\x0a\x09\x09$self.defaultBucket._removeAll();\x0a\x09\x09$self.size = 0;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09$self.fastBuckets = {\x0a\x09\x09\x09\x22boolean\x22: { store: Object.create(null), fn: function (x) { return {\x22true\x22: true, \x22false\x22: false, \x22null\x22: null}[x]; } },\x0a\x09\x09\x09\x22number\x22: { store: Object.create(null), fn: Number },\x0a\x09\x09\x09\x22string\x22: { store: Object.create(null) }\x0a\x09\x09};\x0a\x09\x09$self.slowBucketStores.forEach(function (x) { x._removeAll(); });\x0a\x09\x09$self.defaultBucket._removeAll();\x0a\x09\x09$self.size = 0;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.fastBuckets = {
- "boolean": { store: Object.create(null), fn: function (x) { return {"true": true, "false": false, "null": null}[x]; } },
- "number": { store: Object.create(null), fn: Number },
- "string": { store: Object.create(null) }
- };
- $self.slowBucketStores.forEach(function (x) { x._removeAll(); });
- $self.defaultBucket._removeAll();
- $self.size = 0;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeAll",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "select:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "class", "do:", "ifTrue:", "value:", "add:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- var collection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- collection=$recv($self._class())._new();
- $self._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(aBlock)._value_(each))){
- return $recv(collection)._add_(each);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return collection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"select:",{aBlock:aBlock,collection:collection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "select:thenCollect:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["selectBlock", "collectBlock"],
- source: "select: selectBlock thenCollect: collectBlock\x0a\x09| collection |\x0a\x09collection := self class new.\x0a\x09self do: [ :each |\x0a\x09\x09(selectBlock value: each) ifTrue: [\x0a\x09\x09\x09collection add: (collectBlock value: each) ] ].\x0a\x09^ collection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "class", "do:", "ifTrue:", "value:", "add:"]
- }, function ($methodClass){ return function (selectBlock,collectBlock){
- var self=this,$self=this;
- var collection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- collection=$recv($self._class())._new();
- $self._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv(selectBlock)._value_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["value:"]=1
- //>>excludeEnd("ctx");
- ][0])){
- return $recv(collection)._add_($recv(collectBlock)._value_(each));
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return collection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"select:thenCollect:",{selectBlock:selectBlock,collectBlock:collectBlock,collection:collection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Set);
- $core.addMethod(
- $core.method({
- selector: "size",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "size\x0a\x09^ size",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.size;
- }; }),
- $globals.Set);
- $core.addClass("ProtoStream", $globals.Object, "Kernel-Collections");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ProtoStream.comment="I am the abstract base for different accessor for a sequence of objects. This sequence is referred to as my \x22contents\x22.\x0aMy instances are read/write streams modifying the contents.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "<<",
- protocol: "writing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "<< anObject\x0a\x09self write: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["write:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._write_(anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"<<",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "atEnd",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "atEnd\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"atEnd",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "atStart",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "atStart\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"atStart",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "contents",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "contents\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"contents",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "do:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "do: aBlock\x0a\x09[ self atEnd ] whileFalse: [ aBlock value: self next ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["whileFalse:", "atEnd", "value:", "next"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._atEnd();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._whileFalse_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._value_($self._next());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "isEmpty",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isEmpty\x0a\x09^ self atStart and: [ self atEnd ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "atStart", "atEnd"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._atStart())){
- return $self._atEnd();
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isEmpty",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "next",
- protocol: "reading",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "next\x0a\x09^ self atEnd\x0a\x09\x09ifTrue: [ nil ]\x0a\x09\x09ifFalse: [ self subclassResponsibility ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "atEnd", "subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._atEnd())){
- return nil;
- } else {
- return $self._subclassResponsibility();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"next",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "nextPut:",
- protocol: "writing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "nextPut: anObject\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPut:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutAll:",
- protocol: "writing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "nextPutAll: aCollection\x0a\x09aCollection do: [ :each |\x0a\x09\x09self nextPut: each ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "nextPut:"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aCollection)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._nextPut_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutAll:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutString:",
- protocol: "writing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "nextPutString: aString\x0a\x09self nextPut: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPut:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._nextPut_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutString:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "peek",
- protocol: "reading",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "peek\x0a\x09^ self atEnd\x0a\x09\x09ifTrue: [ nil ]\x0a\x09\x09ifFalse: [ self subclassResponsibility ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "atEnd", "subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._atEnd())){
- return nil;
- } else {
- return $self._subclassResponsibility();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"peek",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "reset",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "reset\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"reset",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "resetContents",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "resetContents\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"resetContents",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "setToEnd",
- protocol: "positioning",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "setToEnd\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setToEnd",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "setToStart",
- protocol: "positioning",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "setToStart\x0a\x09self reset",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["reset"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._reset();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setToStart",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "write:",
- protocol: "writing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "write: anObject\x0a\x09anObject putOn: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["putOn:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(anObject)._putOn_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"write:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "on:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "on: aCollection\x0a\x09\x09^ self new\x0a\x09\x09setCollection: aCollection;\x0a\x09\x09setStreamSize: aCollection size;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["setCollection:", "new", "setStreamSize:", "size", "yourself"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._setCollection_(aCollection);
- $recv($1)._setStreamSize_($recv(aCollection)._size());
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream.a$cls);
- $core.addClass("Stream", $globals.ProtoStream, "Kernel-Collections");
- $core.setSlots($globals.Stream, ["collection", "position", "streamSize"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "atEnd",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "atEnd\x0a\x09^ self position = self size",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["=", "position", "size"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._position()).__eq($self._size());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"atEnd",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "atStart",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "atStart\x0a\x09^ self position = 0",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["=", "position"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._position()).__eq((0));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"atStart",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "close",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "close",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "collection",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collection\x0a\x09^ collection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.collection;
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "contents",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "contents\x0a\x09^ self collection\x0a\x09\x09copyFrom: 1\x0a\x09\x09to: self streamSize",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyFrom:to:", "collection", "streamSize"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._collection())._copyFrom_to_((1),$self._streamSize());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"contents",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "flush",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "flush",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "isEmpty",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isEmpty\x0a\x09^ self size = 0",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["=", "size"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._size()).__eq((0));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isEmpty",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "next",
- protocol: "reading",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "atEnd", "position:", "+", "position", "at:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._atEnd())){
- return nil;
- } else {
- $self._position_($recv([$self._position()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["position"]=1
- //>>excludeEnd("ctx");
- ][0]).__plus((1)));
- return $recv($self.collection)._at_($self._position());
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"next",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "next:",
- protocol: "reading",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "class", "collection", "timesRepeat:", "ifFalse:", "atEnd", "add:", "next"]
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- var tempCollection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- tempCollection=$recv($recv($self._collection())._class())._new();
- $recv(anInteger)._timesRepeat_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if(!$core.assert($self._atEnd())){
- return $recv(tempCollection)._add_($self._next());
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return tempCollection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"next:",{anInteger:anInteger,tempCollection:tempCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "nextPut:",
- protocol: "writing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- 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)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["position:", "+", "position", "at:put:", "collection", "setStreamSize:", "max:", "streamSize"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._position_($recv([$self._position()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["position"]=1
- //>>excludeEnd("ctx");
- ][0]).__plus((1)));
- $recv($self._collection())._at_put_([$self._position()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["position"]=2
- //>>excludeEnd("ctx");
- ][0],anObject);
- $self._setStreamSize_($recv($self._streamSize())._max_($self._position()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPut:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "peek",
- protocol: "reading",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "peek\x0a\x09^ self atEnd ifFalse: [\x0a\x09\x09self collection at: self position + 1 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "atEnd", "at:", "collection", "+", "position"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert($self._atEnd())){
- return $recv($self._collection())._at_($recv($self._position()).__plus((1)));
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"peek",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "position",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "position\x0a\x09^ position ifNil: [ position := 0 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.position;
- if($1 == null || $1.a$nil){
- $self.position=(0);
- return $self.position;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"position",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "position:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- source: "position: anInteger\x0a\x09position := anInteger",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- $self.position=anInteger;
- return self;
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "reset",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "reset\x0a\x09self position: 0",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["position:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._position_((0));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"reset",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "resetContents",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "resetContents\x0a\x09self reset.\x0a\x09self setStreamSize: 0",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["reset", "setStreamSize:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._reset();
- $self._setStreamSize_((0));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"resetContents",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "setCollection:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "setCollection: aCollection\x0a\x09collection := aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- $self.collection=aCollection;
- return self;
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "setStreamSize:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- source: "setStreamSize: anInteger\x0a\x09streamSize := anInteger",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- $self.streamSize=anInteger;
- return self;
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "setToEnd",
- protocol: "positioning",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "setToEnd\x0a\x09self position: self size",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["position:", "size"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._position_($self._size());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setToEnd",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "size",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "size\x0a\x09^ self streamSize",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamSize"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._streamSize();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"size",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "skip:",
- protocol: "positioning",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- source: "skip: anInteger\x0a\x09self position: ((self position + anInteger) min: self size max: 0)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["position:", "min:max:", "+", "position", "size"]
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._position_($recv($recv($self._position()).__plus(anInteger))._min_max_($self._size(),(0)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"skip:",{anInteger:anInteger})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "streamSize",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "streamSize\x0a\x09^ streamSize",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.streamSize;
- }; }),
- $globals.Stream);
- $core.addMethod(
- $core.method({
- selector: "on:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "on: aCollection\x0a\x09\x09^ self new\x0a\x09\x09setCollection: aCollection;\x0a\x09\x09setStreamSize: aCollection size;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["setCollection:", "new", "setStreamSize:", "size", "yourself"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._setCollection_(aCollection);
- $recv($1)._setStreamSize_($recv(aCollection)._size());
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Stream.a$cls);
- $core.addClass("StringStream", $globals.Stream, "Kernel-Collections");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.StringStream.comment="I am a Stream specific to `String` objects.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "cr",
- protocol: "writing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "cr\x0a\x09^ self nextPutAll: String cr",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "cr"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._nextPutAll_($recv($globals.String)._cr());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"cr",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringStream);
- $core.addMethod(
- $core.method({
- selector: "crlf",
- protocol: "writing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "crlf\x0a\x09^ self nextPutAll: String crlf",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "crlf"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._nextPutAll_($recv($globals.String)._crlf());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"crlf",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringStream);
- $core.addMethod(
- $core.method({
- selector: "lf",
- protocol: "writing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "lf\x0a\x09^ self nextPutAll: String lf",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "lf"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._nextPutAll_($recv($globals.String)._lf());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"lf",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringStream);
- $core.addMethod(
- $core.method({
- selector: "next:",
- protocol: "reading",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "class", "collection", "timesRepeat:", "ifFalse:", "atEnd", ",", "next"]
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- var tempCollection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- tempCollection=$recv($recv($self._collection())._class())._new();
- $recv(anInteger)._timesRepeat_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if(!$core.assert($self._atEnd())){
- tempCollection=$recv(tempCollection).__comma($self._next());
- return tempCollection;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return tempCollection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"next:",{anInteger:anInteger,tempCollection:tempCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringStream);
- $core.addMethod(
- $core.method({
- selector: "nextPut:",
- protocol: "writing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "nextPut: aString\x0a\x09self nextPutAll: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._nextPutAll_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPut:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutAll:",
- protocol: "writing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "nextPutAll: aString\x0a\x09| pre post |\x0a\x09self position = self collection size ifTrue: [ self setCollection: self collection, aString ] ifFalse: [\x0a\x09\x09pre := self collection copyFrom: 1 to: self position.\x0a\x09\x09post := self collection copyFrom: (self position + 1 + aString size) to: self collection size.\x0a\x09\x09self setCollection: pre, aString, post\x0a\x09].\x0a\x09self position: self position + aString size.\x0a\x09self setStreamSize: (self streamSize max: self position)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "=", "position", "size", "collection", "setCollection:", ",", "copyFrom:to:", "+", "position:", "setStreamSize:", "max:", "streamSize"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- var pre,post;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv([$self._position()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["position"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=1
- //>>excludeEnd("ctx");
- ][0]))){
- [$self._setCollection_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(aString)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["setCollection:"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- pre=[$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])._copyFrom_to_((1),[$self._position()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["position"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["copyFrom:to:"]=1
- //>>excludeEnd("ctx");
- ][0];
- post=$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0])._copyFrom_to_([$recv([$recv([$self._position()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["position"]=3
- //>>excludeEnd("ctx");
- ][0]).__plus((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["+"]=2
- //>>excludeEnd("ctx");
- ][0]).__plus([$recv(aString)._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["+"]=1
- //>>excludeEnd("ctx");
- ][0],[$recv($self._collection())._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=3
- //>>excludeEnd("ctx");
- ][0]);
- $self._setCollection_([$recv($recv(pre).__comma(aString)).__comma(post)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]);
- }
- $self._position_($recv([$self._position()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["position"]=4
- //>>excludeEnd("ctx");
- ][0]).__plus($recv(aString)._size()));
- $self._setStreamSize_($recv($self._streamSize())._max_($self._position()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutAll:",{aString:aString,pre:pre,post:post})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutString:",
- protocol: "writing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "nextPutString: aString\x0a\x09self nextPutAll: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._nextPutAll_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutString:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringStream);
- $core.addMethod(
- $core.method({
- selector: "print:",
- protocol: "writing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "print: anObject\x0a\x09anObject printOn: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["printOn:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(anObject)._printOn_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"print:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringStream);
- $core.addMethod(
- $core.method({
- selector: "printSymbol:",
- protocol: "writing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "printSymbol: anObject\x0a\x09anObject asSymbolPrintOn: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["asSymbolPrintOn:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(anObject)._asSymbolPrintOn_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printSymbol:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringStream);
- $core.addMethod(
- $core.method({
- selector: "space",
- protocol: "writing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "space\x0a\x09self nextPut: ' '",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPut:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._nextPut_(" ");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"space",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringStream);
- $core.addMethod(
- $core.method({
- selector: "tab",
- protocol: "writing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "tab\x0a\x09^ self nextPutAll: String tab",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "tab"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._nextPutAll_($recv($globals.String)._tab());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"tab",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringStream);
- $core.addClass("Queue", $globals.Object, "Kernel-Collections");
- $core.setSlots($globals.Queue, ["read", "readIndex", "write"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x09read := OrderedCollection new.\x0a\x09write := OrderedCollection new.\x0a\x09readIndex := 1",
- referencedClasses: ["OrderedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.read=[$recv($globals.OrderedCollection)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self.write=$recv($globals.OrderedCollection)._new();
- $self.readIndex=(1);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Queue);
- $core.addMethod(
- $core.method({
- selector: "next",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "next\x0a\x09^ self nextIfAbsent: [ self error: 'Cannot read from empty Queue.' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextIfAbsent:", "error:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._nextIfAbsent_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._error_("Cannot read from empty Queue.");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"next",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Queue);
- $core.addMethod(
- $core.method({
- selector: "nextIfAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "nextIfAbsent: aBlock\x0a\x09| result |\x0a\x09result := read at: readIndex ifAbsent: [\x0a\x09\x09write ifEmpty: [\x0a\x09\x09\x09readIndex > 1 ifTrue: [ read := #(). readIndex := 1 ].\x0a\x09\x09\x09^ aBlock value ].\x0a\x09\x09read := write.\x0a\x09\x09readIndex := 1.\x0a\x09\x09write := OrderedCollection new.\x0a\x09\x09read first ].\x0a\x09read at: readIndex put: nil.\x0a\x09readIndex := readIndex + 1.\x0a\x09^ result",
- referencedClasses: ["OrderedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:", "ifEmpty:", "ifTrue:", ">", "value", "new", "first", "at:put:", "+"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- var result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- result=$recv($self.read)._at_ifAbsent_($self.readIndex,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv($self.write)._ifEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($self.readIndex).__gt((1)))){
- $self.read=[];
- $self.readIndex=(1);
- $self.readIndex;
- }
- throw $early=[$recv(aBlock)._value()];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- $self.read=$self.write;
- $self.readIndex=(1);
- $self.write=$recv($globals.OrderedCollection)._new();
- return $recv($self.read)._first();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv($self.read)._at_put_($self.readIndex,nil);
- $self.readIndex=$recv($self.readIndex).__plus((1));
- return result;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextIfAbsent:",{aBlock:aBlock,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Queue);
- $core.addMethod(
- $core.method({
- selector: "nextPut:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "nextPut: anObject\x0a\x09write add: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.write)._add_(anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPut:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Queue);
- $core.addClass("RegularExpression", $globals.Object, "Kernel-Collections");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.RegularExpression.comment="I represent a regular expression object. My instances are JavaScript `RegExp` object.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "compile:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "compile: aString\x0a\x09<inlineJS: 'return self.compile(aString)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.compile(aString)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.compile(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"compile:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.RegularExpression);
- $core.addMethod(
- $core.method({
- selector: "exec:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "exec: aString\x0a\x09<inlineJS: 'return self.exec(aString) || nil'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.exec(aString) || nil"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.exec(aString) || nil;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exec:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.RegularExpression);
- $core.addMethod(
- $core.method({
- selector: "test:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "test: aString\x0a\x09<inlineJS: 'return self.test(aString)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.test(aString)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.test(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"test:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.RegularExpression);
- $core.addMethod(
- $core.method({
- selector: "fromString:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "fromString: aString\x0a\x09\x09^ self fromString: aString flag: ''",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["fromString:flag:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._fromString_flag_(aString,"");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fromString:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.RegularExpression.a$cls);
- $core.addMethod(
- $core.method({
- selector: "fromString:flag:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anotherString"],
- source: "fromString: aString flag: anotherString\x0a\x09<inlineJS: 'return new RegExp(aString, anotherString)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return new RegExp(aString, anotherString)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,anotherString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return new RegExp(aString, anotherString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fromString:flag:",{aString:aString,anotherString:anotherString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.RegularExpression.a$cls);
- $core.addTrait("TKeyValueCollection", "Kernel-Collections");
- $core.addMethod(
- $core.method({
- selector: "at:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIndex"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:", "errorNotFound"]
- }, function ($methodClass){ return function (anIndex){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._at_ifAbsent_(anIndex,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._errorNotFound();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:",{anIndex:anIndex})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollection);
- $core.addMethod(
- $core.method({
- selector: "at:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIndex", "aBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (anIndex,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{anIndex:anIndex,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollection);
- $core.addMethod(
- $core.method({
- selector: "at:ifAbsentPut:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aKey", "aBlock"],
- source: "at: aKey ifAbsentPut: aBlock\x0a\x09^ self at: aKey ifAbsent: [\x0a\x09\x09self at: aKey put: aBlock value ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:", "at:put:", "value"]
- }, function ($methodClass){ return function (aKey,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._at_ifAbsent_(aKey,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._at_put_(aKey,$recv(aBlock)._value());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:ifAbsentPut:",{aKey:aKey,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollection);
- $core.addMethod(
- $core.method({
- selector: "at:ifPresent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIndex", "aBlock"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifPresent:ifAbsent:"]
- }, function ($methodClass){ return function (anIndex,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._at_ifPresent_ifAbsent_(anIndex,aBlock,(function(){
- return nil;
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:",{anIndex:anIndex,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollection);
- $core.addMethod(
- $core.method({
- selector: "at:ifPresent:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIndex", "aBlock", "anotherBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (anIndex,aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{anIndex:anIndex,aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollection);
- $core.addMethod(
- $core.method({
- selector: "at:put:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIndex", "anObject"],
- source: "at: anIndex put: anObject\x0a\x09\x22Store anObject under the given index in the receiver.\x22\x0a\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (anIndex,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:put:",{anIndex:anIndex,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollection);
- $core.addMethod(
- $core.method({
- selector: "indexOf:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["indexOf:ifAbsent:", "errorNotFound"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._indexOf_ifAbsent_(anObject,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._errorNotFound();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"indexOf:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollection);
- $core.addMethod(
- $core.method({
- selector: "indexOf:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "aBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (anObject,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollection);
- $core.addMethod(
- $core.method({
- selector: "with:do:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anotherCollection", "aBlock"],
- 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) ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["withIndexDo:", "value:value:", "at:"]
- }, function ($methodClass){ return function (anotherCollection,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._withIndexDo_((function(each,index){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._value_value_(each,$recv(anotherCollection)._at_(index));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each,index:index},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"with:do:",{anotherCollection:anotherCollection,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollection);
- $core.addMethod(
- $core.method({
- selector: "withIndexDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"withIndexDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollection);
- $core.addTrait("TNativeZeroBasedCollection", "Kernel-Collections");
- $core.addMethod(
- $core.method({
- selector: "at:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIndex", "aBlock"],
- source: "at: anIndex ifAbsent: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09return anIndex >= 1 && anIndex <= self.length\x0a\x09\x09\x09? self[anIndex - 1]\x0a\x09\x09\x09: aBlock._value()\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return anIndex >= 1 && anIndex <= self.length\x0a\x09\x09\x09? self[anIndex - 1]\x0a\x09\x09\x09: aBlock._value()\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (anIndex,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return anIndex >= 1 && anIndex <= self.length
- ? self[anIndex - 1]
- : aBlock._value()
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{anIndex:anIndex,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TNativeZeroBasedCollection);
- $core.addMethod(
- $core.method({
- selector: "at:ifPresent:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIndex", "aBlock", "anotherBlock"],
- source: "at: anIndex ifPresent: aBlock ifAbsent: anotherBlock\x0a\x09<inlineJS: '\x0a\x09\x09return anIndex >= 1 && anIndex <= self.length\x0a\x09\x09\x09? aBlock._value_(self[anIndex - 1])\x0a\x09\x09\x09: anotherBlock._value()\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return anIndex >= 1 && anIndex <= self.length\x0a\x09\x09\x09? aBlock._value_(self[anIndex - 1])\x0a\x09\x09\x09: anotherBlock._value()\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (anIndex,aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return anIndex >= 1 && anIndex <= self.length
- ? aBlock._value_(self[anIndex - 1])
- : anotherBlock._value()
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{anIndex:anIndex,aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TNativeZeroBasedCollection);
- $core.addMethod(
- $core.method({
- selector: "detect:ifNone:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anotherBlock"],
- source: "detect: aBlock ifNone: anotherBlock\x0a\x09<inlineJS: '\x0a\x09\x09for(var i = 0; i < self.length; i++)\x0a\x09\x09\x09if(aBlock._value_(self[i]))\x0a\x09\x09\x09\x09return self[i];\x0a\x09\x09return anotherBlock._value();\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09for(var i = 0; i < self.length; i++)\x0a\x09\x09\x09if(aBlock._value_(self[i]))\x0a\x09\x09\x09\x09return self[i];\x0a\x09\x09return anotherBlock._value();\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- for(var i = 0; i < self.length; i++)
- if(aBlock._value_(self[i]))
- return self[i];
- return anotherBlock._value();
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"detect:ifNone:",{aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TNativeZeroBasedCollection);
- $core.addMethod(
- $core.method({
- selector: "do:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "do: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09for(var i=0; i < self.length; i++) {\x0a\x09\x09\x09aBlock._value_(self[i]);\x0a\x09\x09}\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09for(var i=0; i < self.length; i++) {\x0a\x09\x09\x09aBlock._value_(self[i]);\x0a\x09\x09}\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- for(var i=0; i < self.length; i++) {
- aBlock._value_(self[i]);
- }
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"do:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TNativeZeroBasedCollection);
- $core.addMethod(
- $core.method({
- selector: "indexOf:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "aBlock"],
- source: "indexOf: anObject ifAbsent: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09for(var i=0; i < self.length; i++) {\x0a\x09\x09\x09if($recv(self[i]).__eq(anObject)) {return i+1}\x0a\x09\x09};\x0a\x09\x09return aBlock._value();\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09for(var i=0; i < self.length; i++) {\x0a\x09\x09\x09if($recv(self[i]).__eq(anObject)) {return i+1}\x0a\x09\x09};\x0a\x09\x09return aBlock._value();\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- for(var i=0; i < self.length; i++) {
- if($recv(self[i]).__eq(anObject)) {return i+1}
- };
- return aBlock._value();
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"indexOf:ifAbsent:",{anObject:anObject,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TNativeZeroBasedCollection);
- $core.addMethod(
- $core.method({
- selector: "indexOf:startingAt:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "start", "aBlock"],
- source: "indexOf: anObject startingAt: start ifAbsent: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09for(var i=start - 1; i < self.length; i++){\x0a\x09\x09\x09if($recv(self[i]).__eq(anObject)) {return i+1}\x0a\x09\x09}\x0a\x09\x09return aBlock._value();\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09for(var i=start - 1; i < self.length; i++){\x0a\x09\x09\x09if($recv(self[i]).__eq(anObject)) {return i+1}\x0a\x09\x09}\x0a\x09\x09return aBlock._value();\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject,start,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- for(var i=start - 1; i < self.length; i++){
- if($recv(self[i]).__eq(anObject)) {return i+1}
- }
- return aBlock._value();
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"indexOf:startingAt:ifAbsent:",{anObject:anObject,start:start,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TNativeZeroBasedCollection);
- $core.addMethod(
- $core.method({
- selector: "single",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "single\x0a<inlineJS: '\x0a\x09if (self.length == 0) throw new Error(\x22Collection is empty\x22);\x0a\x09if (self.length > 1) throw new Error(\x22Collection holds more than one element.\x22);\x0a\x09return self[0];\x0a'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09if (self.length == 0) throw new Error(\x22Collection is empty\x22);\x0a\x09if (self.length > 1) throw new Error(\x22Collection holds more than one element.\x22);\x0a\x09return self[0];"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if (self.length == 0) throw new Error("Collection is empty");
- if (self.length > 1) throw new Error("Collection holds more than one element.");
- return self[0];;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"single",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TNativeZeroBasedCollection);
- $core.addMethod(
- $core.method({
- selector: "size",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "size\x0a\x09<inlineJS: 'return self.length'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.length"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.length;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"size",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TNativeZeroBasedCollection);
- $core.addMethod(
- $core.method({
- selector: "with:do:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anotherCollection", "aBlock"],
- source: "with: anotherCollection do: aBlock\x0a\x09<inlineJS: '\x0a\x09 $recv(anotherCollection)._first_(0); // #guardSequenceableCollection\x0a\x09\x09for(var i=0; i<self.length; i++) {\x0a\x09\x09\x09aBlock._value_value_(self[i], anotherCollection[i]);\x0a\x09\x09}\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09 $recv(anotherCollection)._first_(0); // #guardSequenceableCollection\x0a\x09\x09for(var i=0; i<self.length; i++) {\x0a\x09\x09\x09aBlock._value_value_(self[i], anotherCollection[i]);\x0a\x09\x09}\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (anotherCollection,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(anotherCollection)._first_(0); // #guardSequenceableCollection
- for(var i=0; i<self.length; i++) {
- aBlock._value_value_(self[i], anotherCollection[i]);
- }
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"with:do:",{anotherCollection:anotherCollection,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TNativeZeroBasedCollection);
- $core.addMethod(
- $core.method({
- selector: "withIndexDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "withIndexDo: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09for(var i=0; i < self.length; i++) {\x0a\x09\x09\x09aBlock._value_value_(self[i], i+1);\x0a\x09\x09}\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09for(var i=0; i < self.length; i++) {\x0a\x09\x09\x09aBlock._value_value_(self[i], i+1);\x0a\x09\x09}\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- for(var i=0; i < self.length; i++) {
- aBlock._value_value_(self[i], i+1);
- }
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"withIndexDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TNativeZeroBasedCollection);
- $core.setTraitComposition([{trait: $globals.TKeyValueCollection}], $globals.AssociativeCollection);
- $core.setTraitComposition([{trait: $globals.TKeyValueCollection}], $globals.SequenceableCollection);
- $core.setTraitComposition([{trait: $globals.TNativeZeroBasedCollection}], $globals.Array);
- $core.setTraitComposition([{trait: $globals.TNativeZeroBasedCollection}], $globals.String);
- });
- define('amber/core/Kernel-Classes',["amber/boot", "require", "amber/core/Kernel-Collections", "amber/core/Kernel-Helpers", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Kernel-Classes");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("Behavior", $globals.Object, "Kernel-Classes");
- $core.setSlots($globals.Behavior, ["organization", "slots", "fn", "superclass"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.Behavior.comment="I am the superclass of all class objects.\x0a\x0aIn addition to BehaviorBody, I define superclass/subclass relationships and instantiation.\x0a\x0aI define the protocol for creating instances of a class with `#basicNew` and `#new` (see `boot.js` for class constructors details).\x0a\x0aMy instances know about the subclass/superclass relationships between classes and contain the description that instances are created from.\x0a\x0aI also provide iterating over the class hierarchy.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "allSelectors",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "allSelectors\x0a\x09^ self allSuperclasses\x0a\x09\x09inject: self selectors\x0a\x09\x09into: [ :acc :each | acc addAll: each selectors; yourself ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["inject:into:", "allSuperclasses", "selectors", "addAll:", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._allSuperclasses())._inject_into_([$self._selectors()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["selectors"]=1
- //>>excludeEnd("ctx");
- ][0],(function(acc,each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(acc)._addAll_($recv(each)._selectors());
- return $recv(acc)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({acc:acc,each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"allSelectors",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "allSubclasses",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "allSubclasses\x0a\x09\x22Answer an collection of the receiver's and the receiver's descendent's subclasses. \x22\x0a\x0a\x09^ Array streamContents: [ :str | self allSubclassesDo: [ :each | str nextPut: each ] ]",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "allSubclassesDo:", "nextPut:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Array)._streamContents_((function(str){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._allSubclassesDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(str)._nextPut_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"allSubclasses",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "allSubclassesDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "allSubclassesDo: aBlock\x0a\x09\x22Evaluate the argument, aBlock, for each of the receiver's subclasses.\x22\x0a\x0a<inlineJS: '$core.traverseClassTree(self, function(subclass) {\x0a\x09if (subclass !== self) aBlock._value_(subclass);\x0a})'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["$core.traverseClassTree(self, function(subclass) {\x0a\x09if (subclass !== self) aBlock._value_(subclass);\x0a})"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $core.traverseClassTree(self, function(subclass) {
- if (subclass !== self) aBlock._value_(subclass);
- });
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"allSubclassesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "allSuperclasses",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "allSuperclasses\x0a\x09\x0a\x09self superclass ifNil: [ ^ #() ].\x0a\x09\x0a\x09^ self superclass allSuperclasses copyWithFirst: self superclass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "superclass", "copyWithFirst:", "allSuperclasses"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[$self._superclass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["superclass"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- return [];
- } else {
- $1;
- }
- return $recv($recv([$self._superclass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["superclass"]=2
- //>>excludeEnd("ctx");
- ][0])._allSuperclasses())._copyWithFirst_($self._superclass());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"allSuperclasses",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "alternateConstructorViaSelector:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aSelector"],
- source: "alternateConstructorViaSelector: aSelector\x0a\x09^ BlockClosure\x0a\x09\x09javaScriptConstructorFor: self prototype\x0a\x09\x09initializingVia: (self >> aSelector) fn",
- referencedClasses: ["BlockClosure"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["javaScriptConstructorFor:initializingVia:", "prototype", "fn", ">>"]
- }, function ($methodClass){ return function (aSelector){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.BlockClosure)._javaScriptConstructorFor_initializingVia_($self._prototype(),$recv($self.__gt_gt(aSelector))._fn());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"alternateConstructorViaSelector:",{aSelector:aSelector})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "applySuperConstructorOn:withArguments:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "anArray"],
- source: "applySuperConstructorOn: anObject withArguments: anArray\x0a\x09<inlineJS: '\x0a\x09\x09Object.getPrototypeOf($self.fn.prototype).constructor\x0a\x09\x09.apply(anObject, anArray)\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09Object.getPrototypeOf($self.fn.prototype).constructor\x0a\x09\x09.apply(anObject, anArray)\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject,anArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- Object.getPrototypeOf($self.fn.prototype).constructor
- .apply(anObject, anArray)
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"applySuperConstructorOn:withArguments:",{anObject:anObject,anArray:anArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "basicNew",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "basicNew\x0a\x09<inlineJS: 'return new self.fn()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return new self.fn()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return new self.fn();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicNew",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "basicOrganization",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "basicOrganization\x0a\x09^ organization",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.organization;
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "basicOrganization:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClassOrganizer"],
- source: "basicOrganization: aClassOrganizer\x0a\x09organization := aClassOrganizer",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aClassOrganizer){
- var self=this,$self=this;
- $self.organization=aClassOrganizer;
- return self;
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "beJavaScriptSubclassOf:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aJavaScriptFunction"],
- source: "beJavaScriptSubclassOf: aJavaScriptFunction\x0a\x09\x22Reparent the JS constructor's prototype to aJavaScriptFunction's one,\x0a\x09plus bookkeeping. That way I stay part of (simulated) Smalltalk hierarchy,\x0a\x09but my instances will physically be instanceof aJavaScriptFunction.\x22\x0a\x0a\x09self makeJavaScriptConstructorSubclassOf: aJavaScriptFunction.\x0a\x09Smalltalk core detachClass: self",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["makeJavaScriptConstructorSubclassOf:", "detachClass:", "core"]
- }, function ($methodClass){ return function (aJavaScriptFunction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._makeJavaScriptConstructorSubclassOf_(aJavaScriptFunction);
- $recv($recv($globals.Smalltalk)._core())._detachClass_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"beJavaScriptSubclassOf:",{aJavaScriptFunction:aJavaScriptFunction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "canUnderstand:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aSelector"],
- source: "canUnderstand: aSelector\x0a\x09^ (self lookupSelector: aSelector) notNil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["notNil", "lookupSelector:"]
- }, function ($methodClass){ return function (aSelector){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._lookupSelector_(aSelector))._notNil();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"canUnderstand:",{aSelector:aSelector})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "includesBehavior:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "includesBehavior: aClass\x0a\x09^ self == aClass or: [\x0a\x09\x09\x09self inheritsFrom: aClass ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["or:", "==", "inheritsFrom:"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self.__eq_eq(aClass))){
- return true;
- } else {
- return $self._inheritsFrom_(aClass);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"includesBehavior:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "inheritsFrom:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "inheritsFrom: aClass\x0a\x09^ self superclass\x0a\x09\x09ifNil: [ false ]\x0a\x09\x09ifNotNil: [ :superClass | superClass includesBehavior: aClass ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:ifNotNil:", "superclass", "includesBehavior:"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._superclass();
- if($1 == null || $1.a$nil){
- return false;
- } else {
- var superClass;
- superClass=$1;
- return $recv(superClass)._includesBehavior_(aClass);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inheritsFrom:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "isBehavior",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isBehavior\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "javaScriptConstructor",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "javaScriptConstructor\x0a\x09\x22Answer the JS constructor used to instantiate. See kernel-language.js\x22\x0a\x09\x0a\x09^ fn",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.fn;
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "javaScriptConstructor:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aJavaScriptFunction"],
- source: "javaScriptConstructor: aJavaScriptFunction\x0a\x09\x22Set the JS constructor used to instantiate.\x0a\x09See the JS counter-part in boot.js `$core.setClassConstructor'\x22\x0a\x09\x0a\x09Smalltalk core setClassConstructor: self to: aJavaScriptFunction",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["setClassConstructor:to:", "core"]
- }, function ($methodClass){ return function (aJavaScriptFunction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv($globals.Smalltalk)._core())._setClassConstructor_to_(self,aJavaScriptFunction);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"javaScriptConstructor:",{aJavaScriptFunction:aJavaScriptFunction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "javascriptConstructor",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "javascriptConstructor\x0a\x09self deprecatedAPI: 'Use #javaScriptConstructor instead.'.\x0a\x09^ self javaScriptConstructor",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deprecatedAPI:", "javaScriptConstructor"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deprecatedAPI_("Use #javaScriptConstructor instead.");
- return $self._javaScriptConstructor();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"javascriptConstructor",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "javascriptConstructor:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aJavaScriptFunction"],
- source: "javascriptConstructor: aJavaScriptFunction\x0a\x09self deprecatedAPI: 'Use #javaScriptConstructor: instead.'.\x0a\x09^ self javaScriptConstructor: aJavaScriptFunction",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deprecatedAPI:", "javaScriptConstructor:"]
- }, function ($methodClass){ return function (aJavaScriptFunction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deprecatedAPI_("Use #javaScriptConstructor: instead.");
- return $self._javaScriptConstructor_(aJavaScriptFunction);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"javascriptConstructor:",{aJavaScriptFunction:aJavaScriptFunction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "lookupSelector:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["selector"],
- source: "lookupSelector: selector\x0a\x09\x22Look up the given selector in my methodDictionary.\x0a\x09Return the corresponding method if found.\x0a\x09Otherwise chase the superclass chain and try again.\x0a\x09Return nil if no method is found.\x22\x0a\x09\x0a\x09<inlineJS: 'return $self.methods[selector]'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $self.methods[selector]"]]],
- messageSends: []
- }, function ($methodClass){ return function (selector){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self.methods[selector];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"lookupSelector:",{selector:selector})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "makeJavaScriptConstructorSubclassOf:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["javaScriptClass"],
- source: "makeJavaScriptConstructorSubclassOf: javaScriptClass\x0a\x09<inlineJS: '\x0a\x09\x09Object.setPrototypeOf($self.fn.prototype, javaScriptClass.prototype);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09Object.setPrototypeOf($self.fn.prototype, javaScriptClass.prototype);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (javaScriptClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- Object.setPrototypeOf($self.fn.prototype, javaScriptClass.prototype);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"makeJavaScriptConstructorSubclassOf:",{javaScriptClass:javaScriptClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "new",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "new\x0a\x09^ self basicNew initialize",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "basicNew"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._basicNew())._initialize();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"new",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "prototype",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "prototype\x0a\x09^ self javaScriptConstructor prototype",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["prototype", "javaScriptConstructor"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._javaScriptConstructor())._prototype();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"prototype",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "slots",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "slots\x0a\x09^ slots",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.slots;
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "subclasses",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "subclasses\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclasses",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "superPrototype",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "superPrototype\x0a\x09<inlineJS: 'return Object.getPrototypeOf($self.fn.prototype)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Object.getPrototypeOf($self.fn.prototype)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Object.getPrototypeOf($self.fn.prototype);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"superPrototype",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "superclass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "superclass\x0a\x09^ superclass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.superclass;
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "theMetaClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theMetaClass\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"theMetaClass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "theNonMetaClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theNonMetaClass\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"theNonMetaClass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addMethod(
- $core.method({
- selector: "withAllSubclasses",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "withAllSubclasses\x0a\x09^ self allSubclasses copyWithFirst: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyWithFirst:", "allSubclasses"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._allSubclasses())._copyWithFirst_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"withAllSubclasses",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Behavior);
- $core.addClass("Class", $globals.Behavior, "Kernel-Classes");
- $core.setSlots($globals.Class, ["package", "subclasses"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "basicPackage:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "basicPackage: aPackage\x0a\x09package := aPackage",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- $self.package=aPackage;
- return self;
- }; }),
- $globals.Class);
- $core.addMethod(
- $core.method({
- selector: "classTag",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classTag\x0a\x09\x22Returns a tag or general category for this class.\x0a\x09Typically used to help tools do some reflection.\x0a\x09Helios, for example, uses this to decide what icon the class should display.\x22\x0a\x09\x0a\x09^ 'class'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "class";
- }; }),
- $globals.Class);
- $core.addMethod(
- $core.method({
- selector: "definition",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "definition\x0a\x09^ String streamContents: [ :stream | stream\x0a\x09\x09print: self superclass; write: ' subclass: '; printSymbol: self name; lf;\x0a\x09\x09write: (self traitCompositionDefinition ifNotEmpty: [ :tcd | { String tab. 'uses: '. tcd. String lf }]);\x0a\x09\x09tab; write: {'slots: {'. ('. ' join: (self instanceVariableNames collect: #symbolPrintString)). '}'}; lf;\x0a\x09\x09tab; write: 'package: '; print: self category ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "print:", "superclass", "write:", "printSymbol:", "name", "lf", "ifNotEmpty:", "traitCompositionDefinition", "tab", "join:", "collect:", "instanceVariableNames", "category"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(stream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(stream)._print_($self._superclass())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["print:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._write_(" subclass: ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(stream)._printSymbol_($self._name());
- [$recv(stream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._write_($recv($self._traitCompositionDefinition())._ifNotEmpty_((function(tcd){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [[$recv($globals.String)._tab()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["tab"]=1
- //>>excludeEnd("ctx");
- ][0],"uses: ",tcd,[$recv($globals.String)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0]];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({tcd:tcd},$ctx2,2)});
- //>>excludeEnd("ctx");
- })))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._tab()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["tab"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._write_(["slots: {",". "._join_($recv($self._instanceVariableNames())._collect_("symbolPrintString")),"}"])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv(stream)._lf();
- $recv(stream)._tab();
- $recv(stream)._write_("package: ");
- return $recv(stream)._print_($self._category());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"definition",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Class);
- $core.addMethod(
- $core.method({
- selector: "includingPossibleMetaDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "includingPossibleMetaDo: aBlock\x0a\x0a\x09aBlock value: self.\x0a\x09aBlock value: self theMetaClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:", "theMetaClass"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv(aBlock)._value_(self)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aBlock)._value_($self._theMetaClass());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"includingPossibleMetaDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Class);
- $core.addMethod(
- $core.method({
- selector: "isClass",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isClass\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.Class);
- $core.addMethod(
- $core.method({
- selector: "package",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "package\x0a\x09^ package",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.package;
- }; }),
- $globals.Class);
- $core.addMethod(
- $core.method({
- selector: "provided",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "provided\x0a\x09\x22Returns JS proxy that allows to access 'static API', as in\x0a\x09 Number provided EPSILON\x0a\x09that forwards to (wrapped JS) constructor function.\x22\x0a\x09\x0a\x09^ self javaScriptConstructor provided",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["provided", "javaScriptConstructor"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._javaScriptConstructor())._provided();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"provided",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Class);
- $core.addMethod(
- $core.method({
- selector: "rename:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "rename: aString\x0a\x09ClassBuilder new renameClass: self to: aString",
- referencedClasses: ["ClassBuilder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["renameClass:to:", "new"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv($globals.ClassBuilder)._new())._renameClass_to_(self,aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"rename:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Class);
- $core.addMethod(
- $core.method({
- selector: "subclasses",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "subclasses\x0a\x09^ subclasses copy",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copy"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.subclasses)._copy();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclasses",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Class);
- $core.addMethod(
- $core.method({
- selector: "theMetaClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theMetaClass\x0a\x09^ self class",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["class"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._class();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"theMetaClass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Class);
- $core.addClass("Metaclass", $globals.Behavior, "Kernel-Classes");
- $core.setSlots($globals.Metaclass, ["instanceClass"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptSource",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptSource\x0a\x09^ '$globals.', self instanceClass name, '.a$cls'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "name", "instanceClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return [$recv("$globals.".__comma($recv($self._instanceClass())._name())).__comma(".a$cls")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Metaclass);
- $core.addMethod(
- $core.method({
- selector: "definition",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "definition\x0a\x09^ String streamContents: [ :stream | stream\x0a\x09\x09print: self;\x0a\x09\x09write: (self traitCompositionDefinition\x0a\x09\x09\x09ifEmpty: [' ']\x0a\x09\x09\x09ifNotEmpty: [ :tcd | { String lf. String tab. 'uses: '. tcd. String lf. String tab }]);\x0a\x09\x09write: {'slots: {'. ('. ' join: (self instanceVariableNames collect: #symbolPrintString)). '}'} ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "print:", "write:", "ifEmpty:ifNotEmpty:", "traitCompositionDefinition", "lf", "tab", "join:", "collect:", "instanceVariableNames"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(stream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(stream)._print_(self);
- [$recv(stream)._write_($recv($self._traitCompositionDefinition())._ifEmpty_ifNotEmpty_((function(){
- return " ";
- }),(function(tcd){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [[$recv($globals.String)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0],[$recv($globals.String)._tab()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["tab"]=1
- //>>excludeEnd("ctx");
- ][0],"uses: ",tcd,$recv($globals.String)._lf(),$recv($globals.String)._tab()];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({tcd:tcd},$ctx2,3)});
- //>>excludeEnd("ctx");
- })))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $recv(stream)._write_(["slots: {",". "._join_($recv($self._instanceVariableNames())._collect_("symbolPrintString")),"}"]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"definition",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Metaclass);
- $core.addMethod(
- $core.method({
- selector: "instanceClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "instanceClass\x0a\x09^ instanceClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.instanceClass;
- }; }),
- $globals.Metaclass);
- $core.addMethod(
- $core.method({
- selector: "instanceVariableNames:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "instanceVariableNames: aString\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self slots: aString instanceVariablesStringAsSlotList",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["slots:", "instanceVariablesStringAsSlotList"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._slots_($recv(aString)._instanceVariablesStringAsSlotList());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"instanceVariableNames:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Metaclass);
- $core.addMethod(
- $core.method({
- selector: "isMetaclass",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isMetaclass\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.Metaclass);
- $core.addMethod(
- $core.method({
- selector: "name",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "name\x0a\x09^ self instanceClass name, ' class'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "name", "instanceClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($self._instanceClass())._name()).__comma(" class");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"name",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Metaclass);
- $core.addMethod(
- $core.method({
- selector: "package",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "package\x0a\x09^ self instanceClass package",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["package", "instanceClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._instanceClass())._package();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"package",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Metaclass);
- $core.addMethod(
- $core.method({
- selector: "slots:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "slots: aCollection\x0a\x09ClassBuilder new\x0a\x09\x09class: self slots: aCollection.\x0a\x09^ self",
- referencedClasses: ["ClassBuilder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["class:slots:", "new"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv($globals.ClassBuilder)._new())._class_slots_(self,aCollection);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"slots:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Metaclass);
- $core.addMethod(
- $core.method({
- selector: "subclasses",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "subclasses\x0a\x09^ Smalltalk core metaSubclasses: self",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["metaSubclasses:", "core"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Smalltalk)._core())._metaSubclasses_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclasses",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Metaclass);
- $core.addMethod(
- $core.method({
- selector: "theMetaClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theMetaClass\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.Metaclass);
- $core.addMethod(
- $core.method({
- selector: "theNonMetaClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theNonMetaClass\x0a\x09^ self instanceClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["instanceClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._instanceClass();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"theNonMetaClass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Metaclass);
- $core.addMethod(
- $core.method({
- selector: "uses:instanceVariableNames:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aTraitCompositionDescription", "aString"],
- source: "uses: aTraitCompositionDescription instanceVariableNames: aString\x0a\x09\x22Kept for file-in compatibility.\x22\x0a\x09^ self uses: aTraitCompositionDescription slots: aString instanceVariablesStringAsSlotList",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["uses:slots:", "instanceVariablesStringAsSlotList"]
- }, function ($methodClass){ return function (aTraitCompositionDescription,aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._uses_slots_(aTraitCompositionDescription,$recv(aString)._instanceVariablesStringAsSlotList());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"uses:instanceVariableNames:",{aTraitCompositionDescription:aTraitCompositionDescription,aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Metaclass);
- $core.addMethod(
- $core.method({
- selector: "uses:slots:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aTraitCompositionDescription", "aCollection"],
- source: "uses: aTraitCompositionDescription slots: aCollection\x0a\x09self\x0a\x09\x09slots: aCollection;\x0a\x09\x09setTraitComposition: aTraitCompositionDescription asTraitComposition.\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["slots:", "setTraitComposition:", "asTraitComposition"]
- }, function ($methodClass){ return function (aTraitCompositionDescription,aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._slots_(aCollection);
- $self._setTraitComposition_($recv(aTraitCompositionDescription)._asTraitComposition());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"uses:slots:",{aTraitCompositionDescription:aTraitCompositionDescription,aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Metaclass);
- $core.addClass("ClassBuilder", $globals.Object, "Kernel-Classes");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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:`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "addSubclassOf:named:instanceVariableNames:package:",
- protocol: "class definition",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "className", "aCollection", "packageName"],
- source: "addSubclassOf: aClass named: className instanceVariableNames: aCollection package: packageName\x0a\x09self deprecatedAPI: 'Use #addSubclass:named:slots:package: instead.'.\x0a\x09^ self\x0a\x09\x09addSubclassOf: aClass\x0a\x09\x09named: className\x0a\x09\x09slots: aCollection\x0a\x09\x09package: packageName",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deprecatedAPI:", "addSubclassOf:named:slots:package:"]
- }, function ($methodClass){ return function (aClass,className,aCollection,packageName){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deprecatedAPI_("Use #addSubclass:named:slots:package: instead.");
- return $self._addSubclassOf_named_slots_package_(aClass,className,aCollection,packageName);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addSubclassOf:named:instanceVariableNames:package:",{aClass:aClass,className:className,aCollection:aCollection,packageName:packageName})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "addSubclassOf:named:slots:package:",
- protocol: "class definition",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "className", "aCollection", "packageName"],
- source: "addSubclassOf: aClass named: className slots: aCollection package: packageName\x0a\x09| theClass thePackage |\x0a\x09\x0a\x09theClass := Smalltalk globals at: className.\x0a\x09thePackage := Package named: packageName.\x0a\x09\x0a\x09theClass ifNotNil: [\x0a\x09\x09theClass package: thePackage.\x0a\x09\x09theClass superclass == aClass\x0a\x09\x09\x09ifFalse: [ ^ self\x0a\x09\x09\x09\x09migrateClassNamed: className\x0a\x09\x09\x09\x09superclass: aClass\x0a\x09\x09\x09\x09slots: aCollection\x0a\x09\x09\x09\x09package: packageName ] ].\x0a\x09\x09\x0a\x09^ (self\x0a\x09\x09basicAddSubclassOf: aClass\x0a\x09\x09named: className\x0a\x09\x09slots: aCollection\x0a\x09\x09package: packageName) recompile; yourself",
- referencedClasses: ["Smalltalk", "Package"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:", "globals", "named:", "ifNotNil:", "package:", "ifFalse:", "==", "superclass", "migrateClassNamed:superclass:slots:package:", "recompile", "basicAddSubclassOf:named:slots:package:", "yourself"]
- }, function ($methodClass){ return function (aClass,className,aCollection,packageName){
- var self=this,$self=this;
- var theClass,thePackage;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- theClass=$recv($recv($globals.Smalltalk)._globals())._at_(className);
- thePackage=$recv($globals.Package)._named_(packageName);
- $1=theClass;
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $recv(theClass)._package_(thePackage);
- if(!$core.assert($recv($recv(theClass)._superclass()).__eq_eq(aClass))){
- return $self._migrateClassNamed_superclass_slots_package_(className,aClass,aCollection,packageName);
- }
- }
- $2=$self._basicAddSubclassOf_named_slots_package_(aClass,className,aCollection,packageName);
- $recv($2)._recompile();
- return $recv($2)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addSubclassOf:named:slots:package:",{aClass:aClass,className:className,aCollection:aCollection,packageName:packageName,theClass:theClass,thePackage:thePackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "addTraitNamed:package:",
- protocol: "class definition",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["traitName", "packageName"],
- source: "addTraitNamed: traitName package: packageName\x0a\x09| theTrait thePackage |\x0a\x09\x0a\x09theTrait := Smalltalk globals at: traitName.\x0a\x09thePackage := Package named: packageName.\x0a\x09\x0a\x09theTrait ifNotNil: [ ^ theTrait package: thePackage; recompile; yourself ].\x0a\x09\x09\x0a\x09theTrait := self\x0a\x09\x09basicAddTraitNamed: traitName\x0a\x09\x09package: packageName.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassAdded new\x0a\x09\x09\x09theClass: theTrait;\x0a\x09\x09\x09yourself).\x0a\x09\x0a\x09^ theTrait",
- referencedClasses: ["Smalltalk", "Package", "SystemAnnouncer", "ClassAdded"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:", "globals", "named:", "ifNotNil:", "package:", "recompile", "yourself", "basicAddTraitNamed:package:", "announce:", "current", "theClass:", "new"]
- }, function ($methodClass){ return function (traitName,packageName){
- var self=this,$self=this;
- var theTrait,thePackage;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3,$4;
- theTrait=$recv($recv($globals.Smalltalk)._globals())._at_(traitName);
- thePackage=$recv($globals.Package)._named_(packageName);
- $1=theTrait;
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $2=theTrait;
- $recv($2)._package_(thePackage);
- $recv($2)._recompile();
- return [$recv($2)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- theTrait=$self._basicAddTraitNamed_package_(traitName,packageName);
- $3=$recv($globals.SystemAnnouncer)._current();
- $4=$recv($globals.ClassAdded)._new();
- $recv($4)._theClass_(theTrait);
- $recv($3)._announce_($recv($4)._yourself());
- return theTrait;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addTraitNamed:package:",{traitName:traitName,packageName:packageName,theTrait:theTrait,thePackage:thePackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "basicAddSubclassOf:named:slots:package:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aString", "aCollection", "packageName"],
- source: "basicAddSubclassOf: aClass named: aString slots: aCollection package: packageName\x0a\x09<inlineJS: '\x0a\x09\x09var klass = $core.addClass(aString, aClass, packageName);\x0a\x09\x09$core.setSlots(klass, aCollection);\x0a\x09\x09return klass;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var klass = $core.addClass(aString, aClass, packageName);\x0a\x09\x09$core.setSlots(klass, aCollection);\x0a\x09\x09return klass;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aClass,aString,aCollection,packageName){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var klass = $core.addClass(aString, aClass, packageName);
- $core.setSlots(klass, aCollection);
- return klass;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicAddSubclassOf:named:slots:package:",{aClass:aClass,aString:aString,aCollection:aCollection,packageName:packageName})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "basicAddTraitNamed:package:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anotherString"],
- source: "basicAddTraitNamed: aString package: anotherString\x0a\x09<inlineJS: 'return $core.addTrait(aString, anotherString)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $core.addTrait(aString, anotherString)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,anotherString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $core.addTrait(aString, anotherString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicAddTraitNamed:package:",{aString:aString,anotherString:anotherString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "basicClass:slots:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aCollection"],
- source: "basicClass: aClass slots: aCollection\x0a\x0a\x09aClass isMetaclass ifFalse: [ self error: aClass name, ' is not a metaclass' ].\x0a\x09Smalltalk core setSlots: aClass to: aCollection",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "isMetaclass", "error:", ",", "name", "setSlots:to:", "core"]
- }, function ($methodClass){ return function (aClass,aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv(aClass)._isMetaclass())){
- $self._error_($recv($recv(aClass)._name()).__comma(" is not a metaclass"));
- }
- $recv($recv($globals.Smalltalk)._core())._setSlots_to_(aClass,aCollection);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicClass:slots:",{aClass:aClass,aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "basicRemoveClass:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "basicRemoveClass: aClass\x0a\x09<inlineJS: '$core.removeClass(aClass)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["$core.removeClass(aClass)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $core.removeClass(aClass);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicRemoveClass:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "basicRenameClass:to:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aString"],
- source: "basicRenameClass: aClass to: aString\x0a\x09<inlineJS: '\x0a\x09\x09$globals[aString] = aClass;\x0a\x09\x09delete $globals[aClass.name];\x0a\x09\x09aClass.name = aString;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09$globals[aString] = aClass;\x0a\x09\x09delete $globals[aClass.name];\x0a\x09\x09aClass.name = aString;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aClass,aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $globals[aString] = aClass;
- delete $globals[aClass.name];
- aClass.name = aString;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicRenameClass:to:",{aClass:aClass,aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "basicSwapClassNames:with:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "anotherClass"],
- source: "basicSwapClassNames: aClass with: anotherClass\x0a\x09<inlineJS: '\x0a\x09\x09var tmp = aClass.name;\x0a\x09\x09aClass.name = anotherClass.name;\x0a\x09\x09anotherClass.name = tmp;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var tmp = aClass.name;\x0a\x09\x09aClass.name = anotherClass.name;\x0a\x09\x09anotherClass.name = tmp;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aClass,anotherClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var tmp = aClass.name;
- aClass.name = anotherClass.name;
- anotherClass.name = tmp;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicSwapClassNames:with:",{aClass:aClass,anotherClass:anotherClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "class:slots:",
- protocol: "class definition",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aCollection"],
- source: "class: aClass slots: aCollection\x0a\x09self basicClass: aClass slots: aCollection.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassDefinitionChanged new\x0a\x09\x09\x09theClass: aClass;\x0a\x09\x09\x09yourself)",
- referencedClasses: ["SystemAnnouncer", "ClassDefinitionChanged"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["basicClass:slots:", "announce:", "current", "theClass:", "new", "yourself"]
- }, function ($methodClass){ return function (aClass,aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $self._basicClass_slots_(aClass,aCollection);
- $1=$recv($globals.SystemAnnouncer)._current();
- $2=$recv($globals.ClassDefinitionChanged)._new();
- $recv($2)._theClass_(aClass);
- $recv($1)._announce_($recv($2)._yourself());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"class:slots:",{aClass:aClass,aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "copyClass:named:",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "className"],
- source: "copyClass: aClass named: className\x0a\x09| newClass |\x0a\x0a\x09newClass := self\x0a\x09\x09addSubclassOf: aClass superclass\x0a\x09\x09named: className\x0a\x09\x09slots: aClass slots copy\x0a\x09\x09package: aClass package name.\x0a\x0a\x09self copyClass: aClass to: newClass.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassAdded new\x0a\x09\x09\x09theClass: newClass;\x0a\x09\x09\x09yourself).\x0a\x09\x0a\x09^ newClass",
- referencedClasses: ["SystemAnnouncer", "ClassAdded"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addSubclassOf:named:slots:package:", "superclass", "copy", "slots", "name", "package", "copyClass:to:", "announce:", "current", "theClass:", "new", "yourself"]
- }, function ($methodClass){ return function (aClass,className){
- var self=this,$self=this;
- var newClass;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- newClass=$self._addSubclassOf_named_slots_package_($recv(aClass)._superclass(),className,$recv($recv(aClass)._slots())._copy(),$recv($recv(aClass)._package())._name());
- $self._copyClass_to_(aClass,newClass);
- $1=$recv($globals.SystemAnnouncer)._current();
- $2=$recv($globals.ClassAdded)._new();
- $recv($2)._theClass_(newClass);
- $recv($1)._announce_($recv($2)._yourself());
- return newClass;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"copyClass:named:",{aClass:aClass,className:className,newClass:newClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "copyClass:to:",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "anotherClass"],
- source: "copyClass: aClass to: anotherClass\x0a\x0a\x09anotherClass comment: aClass comment.\x0a\x0a\x09aClass methodDictionary valuesDo: [ :each |\x0a\x09\x09each origin = aClass ifTrue: [\x0a\x09\x09\x09Compiler new install: each source forClass: anotherClass protocol: each protocol ] ].\x0a\x09anotherClass setTraitComposition: aClass traitComposition.\x0a\x0a\x09self basicClass: anotherClass class slots: aClass class slots copy.\x0a\x0a\x09aClass class methodDictionary valuesDo: [ :each |\x0a\x09\x09each origin = aClass class ifTrue: [\x0a\x09\x09\x09Compiler new install: each source forClass: anotherClass class protocol: each protocol ] ].\x0a\x09anotherClass class setTraitComposition: aClass class traitComposition",
- referencedClasses: ["Compiler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["comment:", "comment", "valuesDo:", "methodDictionary", "ifTrue:", "=", "origin", "install:forClass:protocol:", "new", "source", "protocol", "setTraitComposition:", "traitComposition", "basicClass:slots:", "class", "copy", "slots"]
- }, function ($methodClass){ return function (aClass,anotherClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(anotherClass)._comment_($recv(aClass)._comment());
- [$recv([$recv(aClass)._methodDictionary()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["methodDictionary"]=1
- //>>excludeEnd("ctx");
- ][0])._valuesDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv([$recv(each)._origin()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["origin"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq(aClass)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])){
- return [$recv([$recv($globals.Compiler)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])._install_forClass_protocol_([$recv(each)._source()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["source"]=1
- //>>excludeEnd("ctx");
- ][0],anotherClass,[$recv(each)._protocol()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["protocol"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["install:forClass:protocol:"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["valuesDo:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(anotherClass)._setTraitComposition_([$recv(aClass)._traitComposition()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["traitComposition"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["setTraitComposition:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._basicClass_slots_([$recv(anotherClass)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0],$recv($recv([$recv(aClass)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=2
- //>>excludeEnd("ctx");
- ][0])._slots())._copy());
- $recv($recv([$recv(aClass)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=3
- //>>excludeEnd("ctx");
- ][0])._methodDictionary())._valuesDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv(each)._origin()).__eq([$recv(aClass)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["class"]=4
- //>>excludeEnd("ctx");
- ][0]))){
- return $recv($recv($globals.Compiler)._new())._install_forClass_protocol_($recv(each)._source(),[$recv(anotherClass)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["class"]=5
- //>>excludeEnd("ctx");
- ][0],$recv(each)._protocol());
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- $recv([$recv(anotherClass)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=6
- //>>excludeEnd("ctx");
- ][0])._setTraitComposition_($recv($recv(aClass)._class())._traitComposition());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"copyClass:to:",{aClass:aClass,anotherClass:anotherClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "migrateClass:superclass:",
- protocol: "class migration",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "anotherClass"],
- source: "migrateClass: aClass superclass: anotherClass\x0a\x09^ self\x0a\x09\x09migrateClassNamed: aClass name\x0a\x09\x09superclass: anotherClass\x0a\x09\x09slots: aClass slots\x0a\x09\x09package: aClass package name",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["migrateClassNamed:superclass:slots:package:", "name", "slots", "package"]
- }, function ($methodClass){ return function (aClass,anotherClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._migrateClassNamed_superclass_slots_package_([$recv(aClass)._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["name"]=1
- //>>excludeEnd("ctx");
- ][0],anotherClass,$recv(aClass)._slots(),$recv($recv(aClass)._package())._name());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"migrateClass:superclass:",{aClass:aClass,anotherClass:anotherClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "migrateClassNamed:superclass:instanceVariableNames:package:",
- protocol: "class migration",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["className", "aClass", "aCollection", "packageName"],
- source: "migrateClassNamed: className superclass: aClass instanceVariableNames: aCollection package: packageName\x0a\x09self deprecatedAPI: 'Use #migrateClassNamed:superclass:slots:package: instead.'.\x0a\x09^ self\x0a\x09\x09migrateClassNamed: className\x0a\x09\x09superclass: aClass\x0a\x09\x09slots: aCollection\x0a\x09\x09package: packageName",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deprecatedAPI:", "migrateClassNamed:superclass:slots:package:"]
- }, function ($methodClass){ return function (className,aClass,aCollection,packageName){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deprecatedAPI_("Use #migrateClassNamed:superclass:slots:package: instead.");
- return $self._migrateClassNamed_superclass_slots_package_(className,aClass,aCollection,packageName);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"migrateClassNamed:superclass:instanceVariableNames:package:",{className:className,aClass:aClass,aCollection:aCollection,packageName:packageName})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "migrateClassNamed:superclass:slots:package:",
- protocol: "class migration",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["className", "aClass", "aCollection", "packageName"],
- source: "migrateClassNamed: className superclass: aClass slots: aCollection package: packageName\x0a\x09| oldClass newClass tmp |\x0a\x09\x0a\x09tmp := 'new*', className.\x0a\x09oldClass := Smalltalk globals at: className.\x0a\x09\x0a\x09newClass := self\x0a\x09\x09addSubclassOf: aClass\x0a\x09\x09named: tmp\x0a\x09\x09slots: aCollection\x0a\x09\x09package: packageName.\x0a\x0a\x09self basicSwapClassNames: oldClass with: newClass.\x0a\x0a\x09[ self copyClass: oldClass to: newClass ]\x0a\x09\x09on: Error\x0a\x09\x09do: [ :exception |\x0a\x09\x09\x09self\x0a\x09\x09\x09\x09basicSwapClassNames: oldClass with: newClass;\x0a\x09\x09\x09\x09basicRemoveClass: newClass.\x0a\x09\x09\x09\x09SystemAnnouncer current announce: (ClassRenamed new\x0a\x09\x09\x09\x09\x09theClass: oldClass;\x0a\x09\x09\x09\x09\x09yourself).\x0a\x09\x09\x09\x09exception pass ].\x0a\x0a\x09self\x0a\x09\x09rawRenameClass: oldClass to: tmp;\x0a\x09\x09rawRenameClass: newClass to: className.\x0a\x0a\x09oldClass subclasses \x0a\x09\x09do: [ :each | self migrateClass: each superclass: newClass ].\x0a\x0a\x09self basicRemoveClass: oldClass.\x0a\x09\x0a\x09SystemAnnouncer current announce: (ClassMigrated new\x0a\x09\x09theClass: newClass;\x0a\x09\x09oldClass: oldClass;\x0a\x09\x09yourself).\x0a\x09\x0a\x09^ newClass",
- referencedClasses: ["Smalltalk", "Error", "SystemAnnouncer", "ClassRenamed", "ClassMigrated"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "at:", "globals", "addSubclassOf:named:slots:package:", "basicSwapClassNames:with:", "on:do:", "copyClass:to:", "basicRemoveClass:", "announce:", "current", "theClass:", "new", "yourself", "pass", "rawRenameClass:to:", "do:", "subclasses", "migrateClass:superclass:", "oldClass:"]
- }, function ($methodClass){ return function (className,aClass,aCollection,packageName){
- var self=this,$self=this;
- var oldClass,newClass,tmp;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3,$4;
- tmp="new*".__comma(className);
- oldClass=$recv($recv($globals.Smalltalk)._globals())._at_(className);
- newClass=$self._addSubclassOf_named_slots_package_(aClass,tmp,aCollection,packageName);
- [$self._basicSwapClassNames_with_(oldClass,newClass)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["basicSwapClassNames:with:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._copyClass_to_(oldClass,newClass);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._on_do_($globals.Error,(function(exception){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self._basicSwapClassNames_with_(oldClass,newClass);
- [$self._basicRemoveClass_(newClass)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["basicRemoveClass:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $1=[$recv($globals.SystemAnnouncer)._current()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["current"]=1
- //>>excludeEnd("ctx");
- ][0];
- $2=[$recv($globals.ClassRenamed)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._theClass_(oldClass)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["theClass:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._announce_([$recv($2)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["announce:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $recv(exception)._pass();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({exception:exception},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- [$self._rawRenameClass_to_(oldClass,tmp)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["rawRenameClass:to:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._rawRenameClass_to_(newClass,className);
- $recv($recv(oldClass)._subclasses())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._migrateClass_superclass_(each,newClass);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- $self._basicRemoveClass_(oldClass);
- $3=$recv($globals.SystemAnnouncer)._current();
- $4=$recv($globals.ClassMigrated)._new();
- $recv($4)._theClass_(newClass);
- $recv($4)._oldClass_(oldClass);
- $recv($3)._announce_($recv($4)._yourself());
- return newClass;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"migrateClassNamed:superclass:slots:package:",{className:className,aClass:aClass,aCollection:aCollection,packageName:packageName,oldClass:oldClass,newClass:newClass,tmp:tmp})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "rawRenameClass:to:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aString"],
- source: "rawRenameClass: aClass to: aString\x0a\x09<inlineJS: '\x0a\x09\x09$globals[aString] = aClass;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09$globals[aString] = aClass;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aClass,aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $globals[aString] = aClass;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"rawRenameClass:to:",{aClass:aClass,aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "renameClass:to:",
- protocol: "class migration",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "className"],
- 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)",
- referencedClasses: ["SystemAnnouncer", "ClassRenamed"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["basicRenameClass:to:", "recompile", "announce:", "current", "theClass:", "new", "yourself"]
- }, function ($methodClass){ return function (aClass,className){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $self._basicRenameClass_to_(aClass,className);
- $recv(aClass)._recompile();
- $1=$recv($globals.SystemAnnouncer)._current();
- $2=$recv($globals.ClassRenamed)._new();
- $recv($2)._theClass_(aClass);
- $recv($1)._announce_($recv($2)._yourself());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"renameClass:to:",{aClass:aClass,className:className})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "superclass:subclass:",
- protocol: "class definition",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "className"],
- source: "superclass: aClass subclass: className\x0a\x09^ self superclass: aClass subclass: className slots: #() package: nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["superclass:subclass:slots:package:"]
- }, function ($methodClass){ return function (aClass,className){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._superclass_subclass_slots_package_(aClass,className,[],nil);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"superclass:subclass:",{aClass:aClass,className:className})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "superclass:subclass:slots:package:",
- protocol: "class definition",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "className", "aCollection", "packageName"],
- source: "superclass: aClass subclass: className slots: aCollection package: packageName\x0a\x09| newClass |\x0a\x09\x0a\x09newClass := self addSubclassOf: aClass\x0a\x09\x09named: className slots: aCollection\x0a\x09\x09package: (packageName ifNil: [ 'unclassified' ]).\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassAdded new\x0a\x09\x09\x09theClass: newClass;\x0a\x09\x09\x09yourself).\x0a\x09\x0a\x09^ newClass",
- referencedClasses: ["SystemAnnouncer", "ClassAdded"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addSubclassOf:named:slots:package:", "ifNil:", "announce:", "current", "theClass:", "new", "yourself"]
- }, function ($methodClass){ return function (aClass,className,aCollection,packageName){
- var self=this,$self=this;
- var newClass;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3;
- if(packageName == null || packageName.a$nil){
- $1="unclassified";
- } else {
- $1=packageName;
- }
- newClass=$self._addSubclassOf_named_slots_package_(aClass,className,aCollection,$1);
- $2=$recv($globals.SystemAnnouncer)._current();
- $3=$recv($globals.ClassAdded)._new();
- $recv($3)._theClass_(newClass);
- $recv($2)._announce_($recv($3)._yourself());
- return newClass;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"superclass:subclass:slots:package:",{aClass:aClass,className:className,aCollection:aCollection,packageName:packageName,newClass:newClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder);
- $core.addMethod(
- $core.method({
- selector: "sortClasses:",
- protocol: "as yet unclassified",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "sortClasses: aCollection\x0a\x09| root members |\x0a\x09root := {nil. {}}.\x0a\x09members := HashedCollection new.\x0a\x09aCollection do: [ :each | members at: each name put: {each. {}} ].\x0a\x09(aCollection asArray sorted: [ :a :b | a name <= b name ]) do: [ :each |\x0a\x09\x09| target |\x0a\x09\x09target := members\x0a\x09\x09\x09at: (each superclass ifNotNil: [ :superklass | superklass name ])\x0a\x09\x09\x09ifAbsent: [ root ].\x0a\x09\x09target second add: (members at: each name) ].\x0a\x09^ root second",
- referencedClasses: ["HashedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "do:", "at:put:", "name", "sorted:", "asArray", "<=", "at:ifAbsent:", "ifNotNil:", "superclass", "add:", "second", "at:"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- var root,members;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3;
- root=[nil,[]];
- members=$recv($globals.HashedCollection)._new();
- [$recv(aCollection)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(members)._at_put_([$recv(each)._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["name"]=1
- //>>excludeEnd("ctx");
- ][0],[each,[]]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($recv($recv(aCollection)._asArray())._sorted_((function(a,b){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv([$recv(a)._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["name"]=2
- //>>excludeEnd("ctx");
- ][0]).__lt_eq([$recv(b)._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["name"]=3
- //>>excludeEnd("ctx");
- ][0]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,2)});
- //>>excludeEnd("ctx");
- })))._do_((function(each){
- var target;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $1=members;
- $2=$recv(each)._superclass();
- if($2 == null || $2.a$nil){
- $3=$2;
- } else {
- var superklass;
- superklass=$2;
- $3=[$recv(superklass)._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["name"]=4
- //>>excludeEnd("ctx");
- ][0];
- }
- target=$recv($1)._at_ifAbsent_($3,(function(){
- return root;
- }));
- return $recv([$recv(target)._second()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["second"]=1
- //>>excludeEnd("ctx");
- ][0])._add_($recv(members)._at_($recv(each)._name()));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each,target:target},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return $recv(root)._second();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sortClasses:",{aCollection:aCollection,root:root,members:members})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilder.a$cls);
- $core.addTrait("TBehaviorDefaults", "Kernel-Classes");
- $core.addMethod(
- $core.method({
- selector: "allSubclassesDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "allSubclassesDo: aBlock\x0a\x09\x22Default for non-classes; to be able to send #allSubclassesDo: to any class / trait.\x22",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.TBehaviorDefaults);
- $core.addMethod(
- $core.method({
- selector: "includingPossibleMetaDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "includingPossibleMetaDo: aBlock\x0a\x09\x22Default for non-classes.\x22\x0a\x09aBlock value: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aBlock)._value_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"includingPossibleMetaDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorDefaults);
- $core.addMethod(
- $core.method({
- selector: "name",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "name\x0a\x09^ nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return nil;
- }; }),
- $globals.TBehaviorDefaults);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "printOn: aStream\x0a\x09self name\x0a\x09\x09ifNil: [ super printOn: aStream ]\x0a\x09\x09ifNotNil: [ :name | aStream nextPutAll: name ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:ifNotNil:", "name", "printOn:", "nextPutAll:"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._name();
- if($1 == null || $1.a$nil){
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- } else {
- var name;
- name=$1;
- $recv(aStream)._nextPutAll_(name);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorDefaults);
- $core.addMethod(
- $core.method({
- selector: "slots",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "slots\x0a\x09\x22Default for non-classes; to be able to send #slots to any class / trait.\x22\x0a\x09^ #()",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return [];
- }; }),
- $globals.TBehaviorDefaults);
- $core.addMethod(
- $core.method({
- selector: "superclass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "superclass\x0a\x09\x22Default for non-classes; to be able to send #superclass to any class / trait.\x22\x0a\x09^ nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return nil;
- }; }),
- $globals.TBehaviorDefaults);
- $core.addMethod(
- $core.method({
- selector: "traitUsers",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "traitUsers\x0a\x09\x22Default for non-traits; to be able to send #traitUsers to any class / trait\x22\x0a\x09^ #()",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return [];
- }; }),
- $globals.TBehaviorDefaults);
- $core.addTrait("TBehaviorProvider", "Kernel-Classes");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.TBehaviorProvider.comment="I have method dictionary, slots and organization.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: ">>",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: ">> aString\x0a\x09^ self methodAt: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["methodAt:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._methodAt_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,">>",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "addCompiledMethod:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethod"],
- source: "addCompiledMethod: aMethod\x0a\x09| oldMethod announcement |\x0a\x09\x0a\x09oldMethod := self methodDictionary\x0a\x09\x09at: aMethod selector\x0a\x09\x09ifAbsent: [ nil ].\x0a\x09\x0a\x09self basicAddCompiledMethod: aMethod.\x0a\x09\x0a\x09announcement := oldMethod\x0a\x09\x09ifNil: [\x0a\x09\x09\x09MethodAdded new\x0a\x09\x09\x09\x09\x09method: aMethod;\x0a\x09\x09\x09\x09\x09yourself ]\x0a\x09\x09ifNotNil: [\x0a\x09\x09\x09MethodModified new\x0a\x09\x09\x09\x09\x09oldMethod: oldMethod;\x0a\x09\x09\x09\x09\x09method: aMethod;\x0a\x09\x09\x09\x09\x09yourself ].\x0a\x09\x09\x09\x09\x09\x0a\x09\x09\x09\x09\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09\x09\x09announce: announcement",
- referencedClasses: ["MethodAdded", "MethodModified", "SystemAnnouncer"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:", "methodDictionary", "selector", "basicAddCompiledMethod:", "ifNil:ifNotNil:", "method:", "new", "yourself", "oldMethod:", "announce:", "current"]
- }, function ($methodClass){ return function (aMethod){
- var self=this,$self=this;
- var oldMethod,announcement;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3;
- oldMethod=$recv($self._methodDictionary())._at_ifAbsent_($recv(aMethod)._selector(),(function(){
- return nil;
- }));
- $self._basicAddCompiledMethod_(aMethod);
- $1=oldMethod;
- if($1 == null || $1.a$nil){
- $2=[$recv($globals.MethodAdded)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._method_(aMethod)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["method:"]=1
- //>>excludeEnd("ctx");
- ][0];
- announcement=[$recv($2)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- $3=$recv($globals.MethodModified)._new();
- $recv($3)._oldMethod_(oldMethod);
- $recv($3)._method_(aMethod);
- announcement=$recv($3)._yourself();
- }
- $recv($recv($globals.SystemAnnouncer)._current())._announce_(announcement);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addCompiledMethod:",{aMethod:aMethod,oldMethod:oldMethod,announcement:announcement})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "allInstanceVariableNames",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "allInstanceVariableNames\x0a\x09^ self allSlots select: #isString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["select:", "allSlots"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._allSlots())._select_("isString");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"allInstanceVariableNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "allSlotNames",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "allSlotNames\x0a\x09^ self allSlots",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["allSlots"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._allSlots();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"allSlotNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "allSlots",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "allSlots\x0a\x09| result |\x0a\x09result := self slots copy.\x0a\x09self superclass ifNotNil: [ :s | result addAll: s allSlots ].\x0a\x09^ result",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copy", "slots", "ifNotNil:", "superclass", "addAll:", "allSlots"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- result=$recv($self._slots())._copy();
- $1=$self._superclass();
- if($1 == null || $1.a$nil){
- $1;
- } else {
- var s;
- s=$1;
- $recv(result)._addAll_($recv(s)._allSlots());
- }
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"allSlots",{result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "basicAddCompiledMethod:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethod"],
- source: "basicAddCompiledMethod: aMethod\x0a\x09<inlineJS: '$core.addMethod(aMethod, self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["$core.addMethod(aMethod, self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aMethod){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $core.addMethod(aMethod, self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicAddCompiledMethod:",{aMethod:aMethod})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "basicRemoveCompiledMethod:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethod"],
- source: "basicRemoveCompiledMethod: aMethod\x0a\x09<inlineJS: '$core.removeMethod(aMethod,self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["$core.removeMethod(aMethod,self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aMethod){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $core.removeMethod(aMethod,self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicRemoveCompiledMethod:",{aMethod:aMethod})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "compile:protocol:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anotherString"],
- source: "compile: aString protocol: anotherString\x0a\x09^ Compiler new\x0a\x09\x09install: aString\x0a\x09\x09forClass: self\x0a\x09\x09protocol: anotherString",
- referencedClasses: ["Compiler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["install:forClass:protocol:", "new"]
- }, function ($methodClass){ return function (aString,anotherString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Compiler)._new())._install_forClass_protocol_(aString,self,anotherString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"compile:protocol:",{aString:aString,anotherString:anotherString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "includesSelector:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "includesSelector: aString\x0a\x09^ self methodDictionary includesKey: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["includesKey:", "methodDictionary"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._methodDictionary())._includesKey_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"includesSelector:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "instanceVariableNames",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "instanceVariableNames\x0a\x09^ self slots select: #isString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["select:", "slots"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._slots())._select_("isString");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"instanceVariableNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "methodAt:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "methodAt: aString\x0a\x09^ self methodDictionary at: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:", "methodDictionary"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._methodDictionary())._at_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"methodAt:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "methodDictionary",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "methodDictionary\x0a\x09<inlineJS: 'var dict = $globals.HashedCollection._new();\x0a\x09var methods = self.methods;\x0a\x09Object.keys(methods).forEach(function(i) {\x0a\x09\x09if(methods[i].selector) {\x0a\x09\x09\x09dict._at_put_(methods[i].selector, methods[i]);\x0a\x09\x09}\x0a\x09});\x0a\x09return dict'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["var dict = $globals.HashedCollection._new();\x0a\x09var methods = self.methods;\x0a\x09Object.keys(methods).forEach(function(i) {\x0a\x09\x09if(methods[i].selector) {\x0a\x09\x09\x09dict._at_put_(methods[i].selector, methods[i]);\x0a\x09\x09}\x0a\x09});\x0a\x09return dict"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var dict = $globals.HashedCollection._new();
- var methods = self.methods;
- Object.keys(methods).forEach(function(i) {
- if(methods[i].selector) {
- dict._at_put_(methods[i].selector, methods[i]);
- }
- });
- return dict;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"methodDictionary",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "methodOrganizationEnter:andLeave:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethod", "oldMethod"],
- source: "methodOrganizationEnter: aMethod andLeave: oldMethod\x0a\x09aMethod ifNotNil: [\x0a\x09\x09self organization addElement: aMethod protocol ].\x0a\x09\x0a\x09oldMethod ifNotNil: [\x0a\x09\x09self removeProtocolIfEmpty: oldMethod protocol ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "addElement:", "organization", "protocol", "removeProtocolIfEmpty:"]
- }, function ($methodClass){ return function (aMethod,oldMethod){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(aMethod == null || aMethod.a$nil){
- aMethod;
- } else {
- $recv($self._organization())._addElement_([$recv(aMethod)._protocol()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["protocol"]=1
- //>>excludeEnd("ctx");
- ][0]);
- }
- if(oldMethod == null || oldMethod.a$nil){
- oldMethod;
- } else {
- $self._removeProtocolIfEmpty_($recv(oldMethod)._protocol());
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"methodOrganizationEnter:andLeave:",{aMethod:aMethod,oldMethod:oldMethod})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "methodTemplate",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "methodTemplate\x0a\x09^ String streamContents: [ :stream | stream \x0a\x09\x09write: 'messageSelectorAndArgumentNames'; lf;\x0a\x09\x09tab; write: '\x22comment stating purpose of message\x22'; lf;\x0a\x09\x09lf;\x0a\x09\x09tab; write: '| temporary variable names |'; lf;\x0a\x09\x09tab; write: 'statements' ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "write:", "lf", "tab"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(stream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(stream)._write_("messageSelectorAndArgumentNames")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._tab()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["tab"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._write_("\x22comment stating purpose of message\x22")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._tab()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["tab"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._write_("| temporary variable names |")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv(stream)._lf();
- $recv(stream)._tab();
- return $recv(stream)._write_("statements");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"methodTemplate",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "methods",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "methods\x0a\x09^ self methodDictionary values",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["values", "methodDictionary"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._methodDictionary())._values();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"methods",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "methodsInProtocol:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "methodsInProtocol: aString\x0a\x09^ self methods select: [ :each | each protocol = aString ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["select:", "methods", "=", "protocol"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._methods())._select_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv(each)._protocol()).__eq(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"methodsInProtocol:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "organization",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "organization\x0a\x09^ self basicOrganization ifNil: [\x0a\x09\x09self basicOrganization: (ClassOrganizer on: self).\x0a\x09\x09self basicOrganization ]",
- referencedClasses: ["ClassOrganizer"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "basicOrganization", "basicOrganization:", "on:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[$self._basicOrganization()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["basicOrganization"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- $self._basicOrganization_($recv($globals.ClassOrganizer)._on_(self));
- return $self._basicOrganization();
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"organization",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "ownMethods",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "ownMethods\x0a\x09\x22Answer the methods of the receiver that are not package extensions\x0a\x09nor obtained via trait composition\x22\x0a\x0a\x09^ (self ownProtocols \x0a\x09\x09inject: OrderedCollection new\x0a\x09\x09into: [ :acc :each | acc, (self ownMethodsInProtocol: each) ])\x0a\x09\x09\x09sorted: [ :a :b | a selector <= b selector ]",
- referencedClasses: ["OrderedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["sorted:", "inject:into:", "ownProtocols", "new", ",", "ownMethodsInProtocol:", "<=", "selector"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($self._ownProtocols())._inject_into_($recv($globals.OrderedCollection)._new(),(function(acc,each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(acc).__comma($self._ownMethodsInProtocol_(each));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({acc:acc,each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))._sorted_((function(a,b){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv([$recv(a)._selector()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["selector"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt_eq($recv(b)._selector());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ownMethods",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "ownMethodsInProtocol:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "ownMethodsInProtocol: aString\x0a\x09^ (self methodsInProtocol: aString) select: [ :each | each origin = self ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["select:", "methodsInProtocol:", "=", "origin"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._methodsInProtocol_(aString))._select_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv(each)._origin()).__eq(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ownMethodsInProtocol:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "ownProtocols",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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*' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["reject:", "protocols", "match:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._protocols())._reject_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._match_("^\x5c*");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ownProtocols",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "packageOfProtocol:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "packageOfProtocol: aString\x0a\x09\x22Answer the package the method of receiver belongs to:\x0a\x09- if it is an extension method, answer the corresponding package\x0a\x09- else answer the receiver's package\x22\x0a\x09\x0a\x09(aString beginsWith: '*') ifFalse: [\x0a\x09\x09^ self package ].\x0a\x09\x09\x0a\x09^ Package \x0a\x09\x09named: aString allButFirst\x0a\x09\x09ifAbsent: [ nil ]",
- referencedClasses: ["Package"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "beginsWith:", "package", "named:ifAbsent:", "allButFirst"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv(aString)._beginsWith_("*"))){
- return $self._package();
- }
- return $recv($globals.Package)._named_ifAbsent_($recv(aString)._allButFirst(),(function(){
- return nil;
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"packageOfProtocol:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "protocols",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "protocols\x0a\x09^ self organization elements asArray sorted",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["sorted", "asArray", "elements", "organization"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($recv($self._organization())._elements())._asArray())._sorted();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"protocols",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "protocolsDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- 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) ]",
- referencedClasses: ["HashedCollection", "Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "valuesDo:", "methodDictionary", "add:", "at:ifAbsentPut:", "protocol", "do:", "protocols", "value:value:", "at:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- var methodsByProtocol;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- methodsByProtocol=[$recv($globals.HashedCollection)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($self._methodDictionary())._valuesDo_((function(m){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv(methodsByProtocol)._at_ifAbsentPut_($recv(m)._protocol(),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($globals.Array)._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- })))._add_(m);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({m:m},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv($self._protocols())._do_((function(protocol){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._value_value_(protocol,$recv(methodsByProtocol)._at_(protocol));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({protocol:protocol},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"protocolsDo:",{aBlock:aBlock,methodsByProtocol:methodsByProtocol})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "recompile",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "recompile\x0a\x09^ Compiler new recompile: self",
- referencedClasses: ["Compiler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["recompile:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Compiler)._new())._recompile_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"recompile",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "removeCompiledMethod:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethod"],
- source: "removeCompiledMethod: aMethod\x0a\x09self basicRemoveCompiledMethod: aMethod.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (MethodRemoved new\x0a\x09\x09\x09method: aMethod;\x0a\x09\x09\x09yourself)",
- referencedClasses: ["SystemAnnouncer", "MethodRemoved"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["basicRemoveCompiledMethod:", "announce:", "current", "method:", "new", "yourself"]
- }, function ($methodClass){ return function (aMethod){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $self._basicRemoveCompiledMethod_(aMethod);
- $1=$recv($globals.SystemAnnouncer)._current();
- $2=$recv($globals.MethodRemoved)._new();
- $recv($2)._method_(aMethod);
- $recv($1)._announce_($recv($2)._yourself());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeCompiledMethod:",{aMethod:aMethod})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "removeProtocolIfEmpty:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "removeProtocolIfEmpty: aString\x0a\x09self methods\x0a\x09\x09detect: [ :each | each protocol = aString ]\x0a\x09\x09ifNone: [ self organization removeElement: aString ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["detect:ifNone:", "methods", "=", "protocol", "removeElement:", "organization"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._methods())._detect_ifNone_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv(each)._protocol()).__eq(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._organization())._removeElement_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeProtocolIfEmpty:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "selectors",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "selectors\x0a\x09^ self methodDictionary keys",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["keys", "methodDictionary"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._methodDictionary())._keys();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"selectors",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "setTraitComposition:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aTraitComposition"],
- source: "setTraitComposition: aTraitComposition\x0a\x09<inlineJS: '$core.setTraitComposition(aTraitComposition._asJavaScriptObject(), self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["$core.setTraitComposition(aTraitComposition._asJavaScriptObject(), self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aTraitComposition){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $core.setTraitComposition(aTraitComposition._asJavaScriptObject(), self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setTraitComposition:",{aTraitComposition:aTraitComposition})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "slotNames",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "slotNames\x0a\x09^ self slots",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["slots"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._slots();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"slotNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "traitComposition",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "traitComposition\x0a\x09^ (self basicAt: 'traitComposition')\x0a\x09\x09ifNil: [ #() ]\x0a\x09\x09ifNotNil: [ :aCollection | aCollection collect: [ :each | TraitTransformation fromJSON: each ] ]",
- referencedClasses: ["TraitTransformation"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:ifNotNil:", "basicAt:", "collect:", "fromJSON:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._basicAt_("traitComposition");
- if($1 == null || $1.a$nil){
- return [];
- } else {
- var aCollection;
- aCollection=$1;
- return $recv(aCollection)._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.TraitTransformation)._fromJSON_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"traitComposition",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "traitCompositionDefinition",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "traitCompositionDefinition\x0a\x09^ self traitComposition ifNotEmpty: [ :traitComposition |\x0a\x09\x09String streamContents: [ :str |\x0a\x09\x09\x09str write: '{'.\x0a\x09\x09\x09traitComposition\x0a\x09\x09\x09\x09do: [ :each | str write: each definition ]\x0a\x09\x09\x09\x09separatedBy: [ str write: '. ' ].\x0a\x09\x09\x09str write: '}' ] ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotEmpty:", "traitComposition", "streamContents:", "write:", "do:separatedBy:", "definition"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._traitComposition())._ifNotEmpty_((function(traitComposition){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(str){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- [$recv(str)._write_("{")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(traitComposition)._do_separatedBy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx4) {
- //>>excludeEnd("ctx");
- return [$recv(str)._write_($recv(each)._definition())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx4.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,3)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx4) {
- //>>excludeEnd("ctx");
- return [$recv(str)._write_(". ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx4.sendIdx["write:"]=3
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx4) {$ctx4.fillBlock({},$ctx3,4)});
- //>>excludeEnd("ctx");
- }));
- return $recv(str)._write_("}");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({str:str},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({traitComposition:traitComposition},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"traitCompositionDefinition",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addTrait("TMasterBehavior", "Kernel-Classes");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.TMasterBehavior.comment="I am the behavior on the instance-side of the browser.\x0a\x0aI define things like package, category, name, comment etc.\x0aas opposed to derived behaviors (metaclass, class trait, ...)\x0athat relate to me.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptSource",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptSource\x0a\x09^ '$globals.', self name",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "name"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return "$globals.".__comma($self._name());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMasterBehavior);
- $core.addMethod(
- $core.method({
- selector: "browse",
- protocol: "browsing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "browse\x0a\x09Finder findClass: self",
- referencedClasses: ["Finder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["findClass:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.Finder)._findClass_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"browse",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMasterBehavior);
- $core.addMethod(
- $core.method({
- selector: "category",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "category\x0a\x09^ self package ifNil: [ 'Unclassified' ] ifNotNil: [ self package name ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:ifNotNil:", "package", "name"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[$self._package()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["package"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- return "Unclassified";
- } else {
- return $recv($self._package())._name();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"category",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMasterBehavior);
- $core.addMethod(
- $core.method({
- selector: "classTag",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classTag\x0a\x09\x22Every master behavior should define a class tag.\x22\x0a\x09^ self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._subclassResponsibility();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"classTag",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMasterBehavior);
- $core.addMethod(
- $core.method({
- selector: "comment",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "comment\x0a\x09^ (self basicAt: 'comment') ifNil: [ '' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "basicAt:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._basicAt_("comment");
- if($1 == null || $1.a$nil){
- return "";
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"comment",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMasterBehavior);
- $core.addMethod(
- $core.method({
- selector: "comment:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- 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)",
- referencedClasses: ["SystemAnnouncer", "ClassCommentChanged"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["basicAt:put:", "announce:", "current", "theClass:", "new", "yourself"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $self._basicAt_put_("comment",aString);
- $1=$recv($globals.SystemAnnouncer)._current();
- $2=$recv($globals.ClassCommentChanged)._new();
- $recv($2)._theClass_(self);
- $recv($1)._announce_($recv($2)._yourself());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"comment:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMasterBehavior);
- $core.addMethod(
- $core.method({
- selector: "definedMethods",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "definedMethods\x0a\x09\x22Answers methods of me and derived 'meta' part if present\x22\x0a\x09| methods |\x0a\x09methods := self methods.\x0a\x09self theMetaClass\x0a\x09\x09ifNil: [ ^ methods ]\x0a\x09\x09ifNotNil: [ :meta | ^ methods, meta methods ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["methods", "ifNil:ifNotNil:", "theMetaClass", ","]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var methods;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- methods=[$self._methods()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["methods"]=1
- //>>excludeEnd("ctx");
- ][0];
- $1=$self._theMetaClass();
- if($1 == null || $1.a$nil){
- return methods;
- } else {
- var meta;
- meta=$1;
- return $recv(methods).__comma($recv(meta)._methods());
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"definedMethods",{methods:methods})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMasterBehavior);
- $core.addMethod(
- $core.method({
- selector: "enterOrganization",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "enterOrganization\x0a\x09Smalltalk ifNotNil: [\x0a\x09\x09(self basicAt: 'category')\x0a\x09\x09\x09ifNil: [ self basicPackage: nil ]\x0a\x09\x09\x09ifNotNil: [ :category |\x0a\x09\x09\x09\x09\x22Amber has 1-1 correspondence between cat and pkg, atm\x22\x0a\x09\x09\x09\x09self basicPackage: (Package named: category).\x0a\x09\x09\x09\x09self package organization addElement: self ] ]",
- referencedClasses: ["Smalltalk", "Package"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "ifNil:ifNotNil:", "basicAt:", "basicPackage:", "named:", "addElement:", "organization", "package"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=$globals.Smalltalk;
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $2=$self._basicAt_("category");
- if($2 == null || $2.a$nil){
- [$self._basicPackage_(nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["basicPackage:"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- var category;
- category=$2;
- $self._basicPackage_($recv($globals.Package)._named_(category));
- $recv($recv($self._package())._organization())._addElement_(self);
- }
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"enterOrganization",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMasterBehavior);
- $core.addMethod(
- $core.method({
- selector: "leaveOrganization",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "leaveOrganization\x0a\x09Smalltalk ifNotNil: [\x0a\x09\x09self package organization removeElement: self ]",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "removeElement:", "organization", "package"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$globals.Smalltalk;
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $recv($recv($self._package())._organization())._removeElement_(self);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"leaveOrganization",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMasterBehavior);
- $core.addMethod(
- $core.method({
- selector: "name",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "name\x0a\x09<inlineJS: 'return self.name'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.name"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.name;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"name",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMasterBehavior);
- $core.addMethod(
- $core.method({
- selector: "package:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "package: aPackage\x0a\x09| oldPackage |\x0a\x09\x0a\x09self package = aPackage ifTrue: [ ^ self ].\x0a\x09\x0a\x09oldPackage := self package.\x0a\x09\x0a\x09self\x0a\x09\x09leaveOrganization;\x0a\x09\x09basicAt: 'category' put: aPackage name;\x0a\x09\x09enterOrganization.\x0a\x0a\x09SystemAnnouncer current announce: (ClassMoved new\x0a\x09\x09theClass: self;\x0a\x09\x09oldPackage: oldPackage;\x0a\x09\x09yourself)",
- referencedClasses: ["SystemAnnouncer", "ClassMoved"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "=", "package", "leaveOrganization", "basicAt:put:", "name", "enterOrganization", "announce:", "current", "theClass:", "new", "oldPackage:", "yourself"]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- var oldPackage;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- if($core.assert($recv([$self._package()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["package"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq(aPackage))){
- return self;
- }
- oldPackage=$self._package();
- $self._leaveOrganization();
- $self._basicAt_put_("category",$recv(aPackage)._name());
- $self._enterOrganization();
- $1=$recv($globals.SystemAnnouncer)._current();
- $2=$recv($globals.ClassMoved)._new();
- $recv($2)._theClass_(self);
- $recv($2)._oldPackage_(oldPackage);
- $recv($1)._announce_($recv($2)._yourself());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"package:",{aPackage:aPackage,oldPackage:oldPackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMasterBehavior);
- $core.addMethod(
- $core.method({
- selector: "theNonMetaClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theNonMetaClass\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.TMasterBehavior);
- $core.addClass("Trait", $globals.Object, "Kernel-Classes");
- $core.setSlots($globals.Trait, ["organization", "package", "traitUsers"]);
- $core.addMethod(
- $core.method({
- selector: "-",
- protocol: "composition",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anArray"],
- source: "- anArray\x0a\x09^ self asTraitTransformation - anArray",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["-", "asTraitTransformation"]
- }, function ($methodClass){ return function (anArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._asTraitTransformation()).__minus(anArray);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"-",{anArray:anArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Trait);
- $core.addMethod(
- $core.method({
- selector: "@",
- protocol: "composition",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anArrayOfAssociations"],
- source: "@ anArrayOfAssociations\x0a\x09^ self asTraitTransformation @ anArrayOfAssociations",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["@", "asTraitTransformation"]
- }, function ($methodClass){ return function (anArrayOfAssociations){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._asTraitTransformation()).__at(anArrayOfAssociations);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"@",{anArrayOfAssociations:anArrayOfAssociations})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Trait);
- $core.addMethod(
- $core.method({
- selector: "asTraitComposition",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asTraitComposition\x0a\x09^ self asTraitTransformation asTraitComposition",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["asTraitComposition", "asTraitTransformation"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._asTraitTransformation())._asTraitComposition();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asTraitComposition",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Trait);
- $core.addMethod(
- $core.method({
- selector: "asTraitTransformation",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asTraitTransformation\x0a\x09^ TraitTransformation on: self",
- referencedClasses: ["TraitTransformation"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.TraitTransformation)._on_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asTraitTransformation",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Trait);
- $core.addMethod(
- $core.method({
- selector: "basicOrganization",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "basicOrganization\x0a\x09^ organization",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.organization;
- }; }),
- $globals.Trait);
- $core.addMethod(
- $core.method({
- selector: "basicOrganization:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClassOrganizer"],
- source: "basicOrganization: aClassOrganizer\x0a\x09organization := aClassOrganizer",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aClassOrganizer){
- var self=this,$self=this;
- $self.organization=aClassOrganizer;
- return self;
- }; }),
- $globals.Trait);
- $core.addMethod(
- $core.method({
- selector: "basicPackage:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "basicPackage: aPackage\x0a\x09package := aPackage",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- $self.package=aPackage;
- return self;
- }; }),
- $globals.Trait);
- $core.addMethod(
- $core.method({
- selector: "classTag",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classTag\x0a\x09^ 'trait'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "trait";
- }; }),
- $globals.Trait);
- $core.addMethod(
- $core.method({
- selector: "definition",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "definition\x0a\x09^ String streamContents: [ :stream | stream\x0a\x09\x09write: 'Trait named: '; printSymbol: self name; lf;\x0a\x09\x09write: (self traitCompositionDefinition ifNotEmpty: [ :tcd | { String tab. 'uses: '. tcd. String lf }]);\x0a\x09\x09tab; write: 'package: '; print: self category ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "write:", "printSymbol:", "name", "lf", "ifNotEmpty:", "traitCompositionDefinition", "tab", "print:", "category"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(stream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(stream)._write_("Trait named: ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(stream)._printSymbol_($self._name());
- [$recv(stream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._write_($recv($self._traitCompositionDefinition())._ifNotEmpty_((function(tcd){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [[$recv($globals.String)._tab()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["tab"]=1
- //>>excludeEnd("ctx");
- ][0],"uses: ",tcd,$recv($globals.String)._lf()];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({tcd:tcd},$ctx2,2)});
- //>>excludeEnd("ctx");
- })))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(stream)._tab();
- $recv(stream)._write_("package: ");
- return $recv(stream)._print_($self._category());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"definition",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Trait);
- $core.addMethod(
- $core.method({
- selector: "package",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "package\x0a\x09^ package",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.package;
- }; }),
- $globals.Trait);
- $core.addMethod(
- $core.method({
- selector: "theMetaClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theMetaClass\x0a\x09^ nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return nil;
- }; }),
- $globals.Trait);
- $core.addMethod(
- $core.method({
- selector: "traitUsers",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "traitUsers\x0a\x09^ traitUsers copy",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copy"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.traitUsers)._copy();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"traitUsers",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Trait);
- $core.addMethod(
- $core.method({
- selector: "named:package:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anotherString"],
- source: "named: aString package: anotherString\x0a\x09^ ClassBuilder new addTraitNamed: aString package: anotherString",
- referencedClasses: ["ClassBuilder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addTraitNamed:package:", "new"]
- }, function ($methodClass){ return function (aString,anotherString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.ClassBuilder)._new())._addTraitNamed_package_(aString,anotherString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"named:package:",{aString:aString,anotherString:anotherString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Trait.a$cls);
- $core.addMethod(
- $core.method({
- selector: "named:uses:package:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aTraitCompositionDescription", "anotherString"],
- source: "named: aString uses: aTraitCompositionDescription package: anotherString\x0a\x09| trait |\x0a\x09trait := self named: aString package: anotherString.\x0a\x09trait setTraitComposition: aTraitCompositionDescription asTraitComposition.\x0a\x09^ trait",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["named:package:", "setTraitComposition:", "asTraitComposition"]
- }, function ($methodClass){ return function (aString,aTraitCompositionDescription,anotherString){
- var self=this,$self=this;
- var trait;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- trait=$self._named_package_(aString,anotherString);
- $recv(trait)._setTraitComposition_($recv(aTraitCompositionDescription)._asTraitComposition());
- return trait;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"named:uses:package:",{aString:aString,aTraitCompositionDescription:aTraitCompositionDescription,anotherString:anotherString,trait:trait})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Trait.a$cls);
- $core.addClass("TraitTransformation", $globals.Object, "Kernel-Classes");
- $core.setSlots($globals.TraitTransformation, ["trait", "aliases", "exclusions"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.TraitTransformation.comment="I am a single step in trait composition.\x0a\x0aI represent one trait including its aliases and exclusions.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "-",
- protocol: "composition",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anArray"],
- source: "- anArray\x0a\x09^ self copy addExclusions: anArray; yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addExclusions:", "copy", "yourself"]
- }, function ($methodClass){ return function (anArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._copy();
- $recv($1)._addExclusions_(anArray);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"-",{anArray:anArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TraitTransformation);
- $core.addMethod(
- $core.method({
- selector: "@",
- protocol: "composition",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anArrayOfAssociations"],
- source: "@ anArrayOfAssociations\x0a\x09^ self copy addAliases: anArrayOfAssociations; yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addAliases:", "copy", "yourself"]
- }, function ($methodClass){ return function (anArrayOfAssociations){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._copy();
- $recv($1)._addAliases_(anArrayOfAssociations);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"@",{anArrayOfAssociations:anArrayOfAssociations})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TraitTransformation);
- $core.addMethod(
- $core.method({
- selector: "addAliases:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anArrayOfAssociations"],
- source: "addAliases: anArrayOfAssociations\x0a\x09anArrayOfAssociations do: [ :each |\x0a\x09\x09| key |\x0a\x09\x09key := each key.\x0a\x09\x09aliases at: key\x0a\x09\x09\x09ifPresent: [ self error: 'Cannot use same alias name twice.' ]\x0a\x09\x09\x09ifAbsent: [ aliases at: key put: each value ] ].\x0a\x09^ anArrayOfAssociations",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "key", "at:ifPresent:ifAbsent:", "error:", "at:put:", "value"]
- }, function ($methodClass){ return function (anArrayOfAssociations){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(anArrayOfAssociations)._do_((function(each){
- var key;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- key=$recv(each)._key();
- return $recv($self.aliases)._at_ifPresent_ifAbsent_(key,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._error_("Cannot use same alias name twice.");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self.aliases)._at_put_(key,$recv(each)._value());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each,key:key},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return anArrayOfAssociations;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addAliases:",{anArrayOfAssociations:anArrayOfAssociations})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TraitTransformation);
- $core.addMethod(
- $core.method({
- selector: "addExclusions:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anArray"],
- source: "addExclusions: anArray\x0a\x09exclusions addAll: anArray.\x0a\x09^ anArray",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addAll:"]
- }, function ($methodClass){ return function (anArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.exclusions)._addAll_(anArray);
- return anArray;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addExclusions:",{anArray:anArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TraitTransformation);
- $core.addMethod(
- $core.method({
- selector: "aliases",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "aliases\x0a\x09^ aliases",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.aliases;
- }; }),
- $globals.TraitTransformation);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptObject",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptObject\x0a\x09^ #{\x0a\x09\x09'trait' -> self trait.\x0a\x09\x09'aliases' -> self aliases.\x0a\x09\x09'exclusions' -> self exclusions asArray sorted }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["trait", "aliases", "sorted", "asArray", "exclusions"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $globals.HashedCollection._newFromPairs_(["trait",$self._trait(),"aliases",$self._aliases(),"exclusions",$recv($recv($self._exclusions())._asArray())._sorted()]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptObject",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TraitTransformation);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptSource",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptSource\x0a\x09^ String streamContents: [ :str | str write: {\x0a\x09\x09'{trait: '. self trait asJavaScriptSource.\x0a\x09\x09self aliases ifNotEmpty: [ :al |\x0a\x09\x09\x09{', aliases: '. al asJSONString} ].\x0a\x09\x09self exclusions ifNotEmpty: [ :ex |\x0a\x09\x09\x09{', exclusions: '. ex asArray sorted asJavaScriptSource} ].\x0a\x09\x09'}' } ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "write:", "asJavaScriptSource", "trait", "ifNotEmpty:", "aliases", "asJSONString", "exclusions", "sorted", "asArray"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(str){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(str)._write_(["{trait: ",[$recv($self._trait())._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["asJavaScriptSource"]=1
- //>>excludeEnd("ctx");
- ][0],[$recv($self._aliases())._ifNotEmpty_((function(al){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [", aliases: ",$recv(al)._asJSONString()];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({al:al},$ctx2,2)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["ifNotEmpty:"]=1
- //>>excludeEnd("ctx");
- ][0],$recv($self._exclusions())._ifNotEmpty_((function(ex){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [", exclusions: ",$recv($recv($recv(ex)._asArray())._sorted())._asJavaScriptSource()];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,3)});
- //>>excludeEnd("ctx");
- })),"}"]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TraitTransformation);
- $core.addMethod(
- $core.method({
- selector: "asTraitComposition",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asTraitComposition\x0a\x09^ { self }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return [self];
- }; }),
- $globals.TraitTransformation);
- $core.addMethod(
- $core.method({
- selector: "asTraitTransformation",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asTraitTransformation\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.TraitTransformation);
- $core.addMethod(
- $core.method({
- selector: "definition",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "definition\x0a\x09^ String streamContents: [ :str |\x0a\x09\x09str print: self trait.\x0a\x09\x09self aliases ifNotEmpty: [ :al |\x0a\x09\x09\x09str write: ' @ {'.\x0a\x09\x09\x09al associations\x0a\x09\x09\x09\x09do: [ :each | str printSymbol: each key; write: ' -> '; printSymbol: each value ]\x0a\x09\x09\x09\x09separatedBy: [ str write: '. ' ].\x0a\x09\x09\x09str write: '}' ].\x0a\x09\x09self exclusions ifNotEmpty: [ :ex |\x0a\x09\x09\x09str write: ' - #('.\x0a\x09\x09\x09ex asArray sorted \x0a\x09\x09\x09\x09do: [ :each | str write: each symbolPrintString allButFirst ]\x0a\x09\x09\x09\x09separatedBy: [ str space ].\x0a\x09\x09\x09str write: ')' ] ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "print:", "trait", "ifNotEmpty:", "aliases", "write:", "do:separatedBy:", "associations", "printSymbol:", "key", "value", "exclusions", "sorted", "asArray", "allButFirst", "symbolPrintString", "space"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(str){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(str)._print_($self._trait());
- [$recv($self._aliases())._ifNotEmpty_((function(al){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- [$recv(str)._write_(" @ {")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($recv(al)._associations())._do_separatedBy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx4) {
- //>>excludeEnd("ctx");
- [$recv(str)._printSymbol_($recv(each)._key())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx4.sendIdx["printSymbol:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(str)._write_(" -> ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx4.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- return $recv(str)._printSymbol_($recv(each)._value());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,3)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx4) {
- //>>excludeEnd("ctx");
- return [$recv(str)._write_(". ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx4.sendIdx["write:"]=3
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx4) {$ctx4.fillBlock({},$ctx3,4)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["do:separatedBy:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return [$recv(str)._write_("}")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["write:"]=4
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({al:al},$ctx2,2)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["ifNotEmpty:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $recv($self._exclusions())._ifNotEmpty_((function(ex){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- [$recv(str)._write_(" - #(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["write:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $recv($recv($recv(ex)._asArray())._sorted())._do_separatedBy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx4) {
- //>>excludeEnd("ctx");
- return [$recv(str)._write_($recv($recv(each)._symbolPrintString())._allButFirst())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx4.sendIdx["write:"]=6
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,6)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx4) {
- //>>excludeEnd("ctx");
- return $recv(str)._space();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx4) {$ctx4.fillBlock({},$ctx3,7)});
- //>>excludeEnd("ctx");
- }));
- return $recv(str)._write_(")");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,5)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"definition",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TraitTransformation);
- $core.addMethod(
- $core.method({
- selector: "exclusions",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "exclusions\x0a\x09^ exclusions",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.exclusions;
- }; }),
- $globals.TraitTransformation);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x0a\x09aliases := #{}.\x0a\x09exclusions := Set new.\x0a\x09trait := nil",
- referencedClasses: ["Set"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.aliases=$globals.HashedCollection._newFromPairs_([]);
- $self.exclusions=$recv($globals.Set)._new();
- $self.trait=nil;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TraitTransformation);
- $core.addMethod(
- $core.method({
- selector: "postCopy",
- protocol: "copying",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "postCopy\x0a\x09aliases := aliases copy.\x0a\x09exclusions := exclusions copy",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copy"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.aliases=[$recv($self.aliases)._copy()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["copy"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self.exclusions=$recv($self.exclusions)._copy();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"postCopy",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TraitTransformation);
- $core.addMethod(
- $core.method({
- selector: "trait",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "trait\x0a\x09^ trait",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.trait;
- }; }),
- $globals.TraitTransformation);
- $core.addMethod(
- $core.method({
- selector: "trait:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "trait: anObject\x0a\x09trait := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.trait=anObject;
- return self;
- }; }),
- $globals.TraitTransformation);
- $core.addMethod(
- $core.method({
- selector: "fromJSON:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aJSObject"],
- source: "fromJSON: aJSObject\x0a\x09^ super new\x0a\x09\x09trait: (aJSObject at: #trait);\x0a\x09\x09addAliases: (Smalltalk readJSObject: (aJSObject at: #aliases ifAbsent: [#{}])) associations;\x0a\x09\x09addExclusions: (aJSObject at: #exclusions ifAbsent: [#()]);\x0a\x09\x09yourself",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["trait:", "new", "at:", "addAliases:", "associations", "readJSObject:", "at:ifAbsent:", "addExclusions:", "yourself"]
- }, function ($methodClass){ return function (aJSObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._new.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._trait_($recv(aJSObject)._at_("trait"));
- $recv($1)._addAliases_($recv($recv($globals.Smalltalk)._readJSObject_([$recv(aJSObject)._at_ifAbsent_("aliases",(function(){
- return $globals.HashedCollection._newFromPairs_([]);
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:ifAbsent:"]=1
- //>>excludeEnd("ctx");
- ][0]))._associations());
- $recv($1)._addExclusions_($recv(aJSObject)._at_ifAbsent_("exclusions",(function(){
- return [];
- })));
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fromJSON:",{aJSObject:aJSObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TraitTransformation.a$cls);
- $core.addMethod(
- $core.method({
- selector: "on:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aTrait"],
- source: "on: aTrait\x0a\x09^ super new trait: aTrait; yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["trait:", "new", "yourself"]
- }, function ($methodClass){ return function (aTrait){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._new.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._trait_(aTrait);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:",{aTrait:aTrait})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TraitTransformation.a$cls);
- $core.setTraitComposition([{trait: $globals.TBehaviorDefaults}, {trait: $globals.TBehaviorProvider}], $globals.Behavior);
- $core.setTraitComposition([{trait: $globals.TMasterBehavior}, {trait: $globals.TSubclassable}], $globals.Class);
- $core.setTraitComposition([{trait: $globals.TBehaviorDefaults}, {trait: $globals.TBehaviorProvider}, {trait: $globals.TMasterBehavior}], $globals.Trait);
- $core.addMethod(
- $core.method({
- selector: "asTraitComposition",
- protocol: "*Kernel-Classes",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asTraitComposition\x0a\x09\x22not implemented yet, noop atm\x22\x0a\x09^ self collect: [ :each | each asTraitTransformation ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "asTraitTransformation"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._asTraitTransformation();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asTraitComposition",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Array);
- $core.addMethod(
- $core.method({
- selector: "instanceVariablesStringAsSlotList",
- protocol: "*Kernel-Classes",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "instanceVariablesStringAsSlotList\x0a\x09^ (self tokenize: ' ') reject: [ :each | each isEmpty ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["reject:", "tokenize:", "isEmpty"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._tokenize_(" "))._reject_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._isEmpty();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"instanceVariablesStringAsSlotList",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- });
- define('amber/core/Kernel-Methods',["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Kernel-Methods");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("BlockClosure", $globals.Object, "Kernel-Methods");
- $core.setSlots($globals.BlockClosure, ["prototype", "length"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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 | ... ] `";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "applyTo:arguments:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "aCollection"],
- source: "applyTo: anObject arguments: aCollection\x0a\x09<inlineJS: 'return self.apply(anObject, aCollection)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.apply(anObject, aCollection)"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject,aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.apply(anObject, aCollection);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"applyTo:arguments:",{anObject:anObject,aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "asCompiledMethod:",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "asCompiledMethod: aString\x0a\x09<inlineJS: 'return $core.method({selector:aString, fn:self});'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $core.method({selector:aString, fn:self});"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $core.method({selector:aString, fn:self});;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asCompiledMethod:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptObject",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptObject\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptSource",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptSource\x0a\x09<inlineJS: 'return $self.toString();'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $self.toString();"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self.toString();;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptSource",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "compiledSource",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "compiledSource\x0a\x09<inlineJS: 'return self.toString()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.toString()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.toString();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"compiledSource",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "currySelf",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "currySelf\x0a\x09\x22Transforms [ :selfarg :x :y | stcode ] block\x0a\x09which represents JS function (selfarg, x, y, ...) {jscode}\x0a\x09into function (x, y, ...) {jscode} that takes selfarg from 'this'.\x0a\x09IOW, it is usable as JS method and first arg takes the receiver.\x22\x0a\x09\x0a\x09<inlineJS: '\x0a\x09\x09return function () {\x0a\x09\x09\x09var args = [ this ];\x0a\x09\x09\x09args.push.apply(args, arguments);\x0a\x09\x09\x09return self.apply(null, args);\x0a\x09\x09}\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return function () {\x0a\x09\x09\x09var args = [ this ];\x0a\x09\x09\x09args.push.apply(args, arguments);\x0a\x09\x09\x09return self.apply(null, args);\x0a\x09\x09}\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return function () {
- var args = [ this ];
- args.push.apply(args, arguments);
- return self.apply(null, args);
- }
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"currySelf",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "ensure:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "ensure: aBlock\x0a\x09<inlineJS: 'try{return $self._value()}finally{aBlock._value()}'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["try{return $self._value()}finally{aBlock._value()}"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- try{return $self._value()}finally{aBlock._value()};
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ensure:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "fork",
- protocol: "timeout/interval",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "fork\x0a\x09ForkPool default fork: self",
- referencedClasses: ["ForkPool"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["fork:", "default"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv($globals.ForkPool)._default())._fork_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fork",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "new",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "new\x0a\x09\x22Use the receiver as a JS constructor.\x0a\x09*Do not* use this method to instanciate Smalltalk objects!\x22\x0a\x09<inlineJS: 'return new self()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return new self()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return new self();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"new",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "newValue:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "newValue: anObject\x0a\x09^ self newWithValues: { anObject }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["newWithValues:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._newWithValues_([anObject]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newValue:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "newValue:value:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "anObject2"],
- source: "newValue: anObject value: anObject2\x0a\x09^ self newWithValues: { anObject. anObject2 }.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["newWithValues:"]
- }, function ($methodClass){ return function (anObject,anObject2){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._newWithValues_([anObject,anObject2]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newValue:value:",{anObject:anObject,anObject2:anObject2})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "newValue:value:value:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "anObject2", "anObject3"],
- source: "newValue: anObject value: anObject2 value: anObject3\x0a\x09^ self newWithValues: { anObject. anObject2. anObject3 }.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["newWithValues:"]
- }, function ($methodClass){ return function (anObject,anObject2,anObject3){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._newWithValues_([anObject,anObject2,anObject3]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newValue:value:value:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "newWithValues:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "newWithValues: aCollection\x0a\x09\x22Simulates JS new operator by combination of Object.create and .apply\x22\x0a\x09<inlineJS: '\x0a\x09\x09var object = Object.create(self.prototype);\x0a\x09\x09var result = self.apply(object, aCollection);\x0a\x09\x09return typeof result === \x22object\x22 ? result : object;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var object = Object.create(self.prototype);\x0a\x09\x09var result = self.apply(object, aCollection);\x0a\x09\x09return typeof result === \x22object\x22 ? result : object;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var object = Object.create(self.prototype);
- var result = self.apply(object, aCollection);
- return typeof result === "object" ? result : object;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newWithValues:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "numArgs",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "numArgs\x0a\x09^ length",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.length;
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "on:do:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anErrorClass", "aBlock"],
- source: "on: anErrorClass do: aBlock\x0a\x09^ Smalltalk try: self ifTrue: [ :err | err isKindOf: anErrorClass ] catch: aBlock",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["try:ifTrue:catch:", "isKindOf:"]
- }, function ($methodClass){ return function (anErrorClass,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Smalltalk)._try_ifTrue_catch_(self,(function(err){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(err)._isKindOf_(anErrorClass);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({err:err},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),aBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:do:",{anErrorClass:anErrorClass,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "prototype",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "prototype\x0a\x09^ prototype",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.prototype;
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "provided",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "provided\x0a\x09\x22Returns JS proxy that allows to access 'static API', as in\x0a\x09 require provided resolve: ...\x0a\x09or\x0a\x09 XMLHttpRequest provided DONE\x22\x0a\x09\x0a\x09^ JSObjectProxy on: self",
- referencedClasses: ["JSObjectProxy"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.JSObjectProxy)._on_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"provided",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "receiver",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "receiver\x0a\x09^ nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return nil;
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "timeToRun",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "timeToRun\x0a\x09\x22Answer the number of milliseconds taken to execute this block.\x22\x0a\x0a\x09^ Date millisecondsToRun: self",
- referencedClasses: ["Date"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["millisecondsToRun:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Date)._millisecondsToRun_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"timeToRun",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "tryCatch:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "tryCatch: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09try {\x0a\x09\x09\x09return $self._value();\x0a\x09\x09} catch(error) {\x0a\x09\x09\x09// pass non-local returns undetected\x0a\x09\x09\x09if (Array.isArray(error) && error.length === 1) throw error;\x0a\x09\x09\x09return aBlock._value_(error);\x0a\x09\x09}\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09try {\x0a\x09\x09\x09return $self._value();\x0a\x09\x09} catch(error) {\x0a\x09\x09\x09// pass non-local returns undetected\x0a\x09\x09\x09if (Array.isArray(error) && error.length === 1) throw error;\x0a\x09\x09\x09return aBlock._value_(error);\x0a\x09\x09}\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- try {
- return $self._value();
- } catch(error) {
- // pass non-local returns undetected
- if (Array.isArray(error) && error.length === 1) throw error;
- return aBlock._value_(error);
- }
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"tryCatch:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "tryIfTrue:catch:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anotherBlock", "aBlock"],
- source: "tryIfTrue: anotherBlock catch: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09try {\x0a\x09\x09\x09return $self._value();\x0a\x09\x09} catch(error) {\x0a\x09\x09\x09// pass non-local returns undetected\x0a\x09\x09\x09if (Array.isArray(error) && error.length === 1) throw error;\x0a\x09\x09\x09if (!anotherBlock._value_(error)) throw error;\x0a\x09\x09\x09return aBlock._value_(error);\x0a\x09\x09}\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09try {\x0a\x09\x09\x09return $self._value();\x0a\x09\x09} catch(error) {\x0a\x09\x09\x09// pass non-local returns undetected\x0a\x09\x09\x09if (Array.isArray(error) && error.length === 1) throw error;\x0a\x09\x09\x09if (!anotherBlock._value_(error)) throw error;\x0a\x09\x09\x09return aBlock._value_(error);\x0a\x09\x09}\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (anotherBlock,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- try {
- return $self._value();
- } catch(error) {
- // pass non-local returns undetected
- if (Array.isArray(error) && error.length === 1) throw error;
- if (!anotherBlock._value_(error)) throw error;
- return aBlock._value_(error);
- }
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"tryIfTrue:catch:",{anotherBlock:anotherBlock,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "value",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "value\x0a\x09<inlineJS: 'return self();'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self();"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self();;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "value:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anArg"],
- source: "value: anArg\x0a\x09<inlineJS: 'return self(anArg);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self(anArg);"]]],
- messageSends: []
- }, function ($methodClass){ return function (anArg){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self(anArg);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:",{anArg:anArg})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "value:value:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["firstArg", "secondArg"],
- source: "value: firstArg value: secondArg\x0a\x09<inlineJS: 'return self(firstArg, secondArg);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self(firstArg, secondArg);"]]],
- messageSends: []
- }, function ($methodClass){ return function (firstArg,secondArg){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self(firstArg, secondArg);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArg:firstArg,secondArg:secondArg})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "value:value:value:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["firstArg", "secondArg", "thirdArg"],
- source: "value: firstArg value: secondArg value: thirdArg\x0a\x09<inlineJS: 'return self(firstArg, secondArg, thirdArg);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self(firstArg, secondArg, thirdArg);"]]],
- messageSends: []
- }, function ($methodClass){ return function (firstArg,secondArg,thirdArg){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self(firstArg, secondArg, thirdArg);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:value:value:",{firstArg:firstArg,secondArg:secondArg,thirdArg:thirdArg})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "valueWithInterval:",
- protocol: "timeout/interval",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "valueWithInterval: aNumber\x0a\x09<inlineJS: '\x0a\x09\x09var interval = setInterval(self, aNumber);\x0a\x09\x09return $globals.Timeout._on_(interval);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var interval = setInterval(self, aNumber);\x0a\x09\x09return $globals.Timeout._on_(interval);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var interval = setInterval(self, aNumber);
- return $globals.Timeout._on_(interval);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"valueWithInterval:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "valueWithPossibleArguments:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "valueWithPossibleArguments: aCollection\x0a\x09<inlineJS: 'return self.apply(null, aCollection);'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.apply(null, aCollection);"]]],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.apply(null, aCollection);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "valueWithTimeout:",
- protocol: "timeout/interval",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "valueWithTimeout: aNumber\x0a\x09<inlineJS: '\x0a\x09\x09var timeout = setTimeout(self, aNumber);\x0a\x09\x09return $globals.Timeout._on_(timeout);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var timeout = setTimeout(self, aNumber);\x0a\x09\x09return $globals.Timeout._on_(timeout);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var timeout = setTimeout(self, aNumber);
- return $globals.Timeout._on_(timeout);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"valueWithTimeout:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "whileFalse",
- protocol: "controlling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "whileFalse\x0a\x09self whileFalse: []",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["whileFalse:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._whileFalse_((function(){
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"whileFalse",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "whileFalse:",
- protocol: "controlling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "whileFalse: aBlock\x0a\x09<inlineJS: 'while(!$core.assert($self._value())) {aBlock._value()}'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["while(!$core.assert($self._value())) {aBlock._value()}"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- while(!$core.assert($self._value())) {aBlock._value()};
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"whileFalse:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "whileTrue",
- protocol: "controlling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "whileTrue\x0a\x09self whileTrue: []",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["whileTrue:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._whileTrue_((function(){
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"whileTrue",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "whileTrue:",
- protocol: "controlling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "whileTrue: aBlock\x0a\x09<inlineJS: 'while($core.assert($self._value())) {aBlock._value()}'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["while($core.assert($self._value())) {aBlock._value()}"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- while($core.assert($self._value())) {aBlock._value()};
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"whileTrue:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure);
- $core.addMethod(
- $core.method({
- selector: "javaScriptConstructorFor:initializingVia:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPrototype", "aMethodBlock"],
- source: "javaScriptConstructorFor: aPrototype initializingVia: aMethodBlock\x0a\x09<inlineJS: '\x0a\x09\x09function Ctr () {\x0a\x09\x09\x09aMethodBlock.apply(this, arguments);\x0a\x09\x09}\x0a\x09\x09Ctr.prototype = aPrototype;\x0a\x09\x09return Ctr;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09function Ctr () {\x0a\x09\x09\x09aMethodBlock.apply(this, arguments);\x0a\x09\x09}\x0a\x09\x09Ctr.prototype = aPrototype;\x0a\x09\x09return Ctr;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aPrototype,aMethodBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- function Ctr () {
- aMethodBlock.apply(this, arguments);
- }
- Ctr.prototype = aPrototype;
- return Ctr;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"javaScriptConstructorFor:initializingVia:",{aPrototype:aPrototype,aMethodBlock:aMethodBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosure.a$cls);
- $core.addClass("CompiledMethod", $globals.Object, "Kernel-Methods");
- $core.setSlots($globals.CompiledMethod, ["args", "instantiateFn", "fn", "messageSends", "pragmas", "owner", "methodClass", "protocol", "referencedClasses", "selector", "source"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "arguments",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "arguments\x0a\x09^ args ifNil: [ #() ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.args;
- if($1 == null || $1.a$nil){
- return [];
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"arguments",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "asString",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asString\x0a\x09^ self asStringForClass: self methodClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["asStringForClass:", "methodClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._asStringForClass_($self._methodClass());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "asStringForClass:",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "asStringForClass: aClass\x0a\x09| result |\x0a\x09result := aClass name.\x0a\x09self methodClass = aClass \x0a\x09\x09ifFalse: [ result := result, ' (', (self methodClass ifNil: [ 'nil' ] ifNotNil: [ self methodClass name ]), ')'].\x0a\x09(self origin = aClass | (self origin = self methodClass)) \x0a\x09\x09ifFalse: [ result := result, ' /', (self origin ifNil: [ 'nil' ] ifNotNil: [ self origin name ]), '/'].\x0a\x09^ result, ' >> ', self selector symbolPrintString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["name", "ifFalse:", "=", "methodClass", ",", "ifNil:ifNotNil:", "|", "origin", "symbolPrintString", "selector"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- var result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3,$4,$5,$6;
- result=[$recv(aClass)._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["name"]=1
- //>>excludeEnd("ctx");
- ][0];
- if(!$core.assert([$recv([$self._methodClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["methodClass"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq(aClass)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])){
- $1=[$recv(result).__comma(" (")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0];
- $2=[$self._methodClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["methodClass"]=2
- //>>excludeEnd("ctx");
- ][0];
- if($2 == null || $2.a$nil){
- $3="nil";
- } else {
- $3=[$recv([$self._methodClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["methodClass"]=3
- //>>excludeEnd("ctx");
- ][0])._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["name"]=2
- //>>excludeEnd("ctx");
- ][0];
- }
- result=[$recv([$recv($1).__comma($3)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(")")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- result;
- }
- if(!$core.assert($recv([$recv([$self._origin()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["origin"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq(aClass)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=2
- //>>excludeEnd("ctx");
- ][0]).__or($recv([$self._origin()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["origin"]=2
- //>>excludeEnd("ctx");
- ][0]).__eq($self._methodClass())))){
- $4=[$recv(result).__comma(" /")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=6
- //>>excludeEnd("ctx");
- ][0];
- $5=[$self._origin()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["origin"]=3
- //>>excludeEnd("ctx");
- ][0];
- if($5 == null || $5.a$nil){
- $6="nil";
- } else {
- $6=$recv($self._origin())._name();
- }
- result=[$recv([$recv($4).__comma($6)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=5
- //>>excludeEnd("ctx");
- ][0]).__comma("/")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=4
- //>>excludeEnd("ctx");
- ][0];
- result;
- }
- return [$recv($recv(result).__comma(" >> ")).__comma($recv($self._selector())._symbolPrintString())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=7
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asStringForClass:",{aClass:aClass,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "basicPragmas",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "basicPragmas\x0a\x09^ pragmas ifNil: [ #() ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.pragmas;
- if($1 == null || $1.a$nil){
- return [];
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicPragmas",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "browse",
- protocol: "browsing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "browse\x0a\x09Finder findMethod: self",
- referencedClasses: ["Finder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["findMethod:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.Finder)._findMethod_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"browse",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "category",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "category\x0a\x09^ self protocol",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["protocol"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._protocol();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"category",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "defaultProtocol",
- protocol: "defaults",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "defaultProtocol\x0a\x09^ 'as yet unclassified'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "as yet unclassified";
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "fn",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "fn\x0a\x09^ fn",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.fn;
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "instantiateFn",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "instantiateFn\x0a\x09^ instantiateFn",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.instantiateFn;
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "instantiateFn:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "instantiateFn: anObject\x0a\x09instantiateFn := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.instantiateFn=anObject;
- return self;
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "isCompiledMethod",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isCompiledMethod\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "isOverridden",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isOverridden\x0a self methodClass allSubclassesDo: [ :each |\x0a\x09 (each includesSelector: selector)\x0a \x09ifTrue: [ ^ true ] ].\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["allSubclassesDo:", "methodClass", "ifTrue:", "includesSelector:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- $recv($self._methodClass())._allSubclassesDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(each)._includesSelector_($self.selector))){
- throw $early=[true];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return false;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isOverridden",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "isOverride",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["superclass", "methodClass", "ifNil:", "notNil", "lookupSelector:", "selector"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var superclass;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- superclass=[$recv([$self._methodClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["methodClass"]=1
- //>>excludeEnd("ctx");
- ][0])._superclass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["superclass"]=1
- //>>excludeEnd("ctx");
- ][0];
- $1=superclass;
- if($1 == null || $1.a$nil){
- return false;
- } else {
- $1;
- }
- return $recv($recv($recv($self._methodClass())._superclass())._lookupSelector_($self._selector()))._notNil();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isOverride",{superclass:superclass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "messageSends",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "messageSends\x0a\x09^ messageSends",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.messageSends;
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "methodClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "methodClass\x0a\x09^ methodClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.methodClass;
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "origin",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "origin\x0a\x09^ owner",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.owner;
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "package",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "package\x0a\x09\x22Answer the package the receiver belongs to:\x0a\x09- if it is an extension method, answer the corresponding package\x0a\x09- else answer the `methodClass` package\x22\x0a\x09\x0a\x09^ self origin ifNotNil: [ :class | class packageOfProtocol: self protocol ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "origin", "packageOfProtocol:", "protocol"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._origin();
- if($1 == null || $1.a$nil){
- return $1;
- } else {
- var class_;
- class_=$1;
- return $recv(class_)._packageOfProtocol_($self._protocol());
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"package",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "pragmas",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "pragmas\x0a\x09^ self basicPragmas collect: [ :each | Message selector: each first arguments: each second ]",
- referencedClasses: ["Message"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "basicPragmas", "selector:arguments:", "first", "second"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._basicPragmas())._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.Message)._selector_arguments_($recv(each)._first(),$recv(each)._second());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"pragmas",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "pragmas:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anArrayOfMessages"],
- source: "pragmas: anArrayOfMessages\x0a\x09pragmas := anArrayOfMessages collect: [ :each | { each selector. each arguments } ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "selector", "arguments"]
- }, function ($methodClass){ return function (anArrayOfMessages){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.pragmas=$recv(anArrayOfMessages)._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(each)._selector(),$recv(each)._arguments()];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"pragmas:",{anArrayOfMessages:anArrayOfMessages})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "protocol",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "protocol\x0a\x09^ protocol ifNil: [ self defaultProtocol ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "defaultProtocol"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.protocol;
- if($1 == null || $1.a$nil){
- return $self._defaultProtocol();
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"protocol",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "protocol:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "protocol: aString\x0a\x09| oldProtocol |\x0a\x09oldProtocol := self protocol.\x0a\x09protocol := aString.\x0a\x0a\x09oldProtocol ifNotNil: [\x0a\x09\x09SystemAnnouncer current announce: (MethodMoved new\x0a\x09\x09\x09method: self;\x0a\x09\x09\x09oldProtocol: oldProtocol;\x0a\x09\x09\x09yourself) ].\x0a\x0a\x09self origin ifNotNil: [ :origin |\x0a\x09\x09origin organization addElement: aString.\x0a\x09\x09origin removeProtocolIfEmpty: oldProtocol ]",
- referencedClasses: ["SystemAnnouncer", "MethodMoved"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["protocol", "ifNotNil:", "announce:", "current", "method:", "new", "oldProtocol:", "yourself", "origin", "addElement:", "organization", "removeProtocolIfEmpty:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- var oldProtocol;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3,$4;
- oldProtocol=$self._protocol();
- $self.protocol=aString;
- $1=oldProtocol;
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $2=$recv($globals.SystemAnnouncer)._current();
- $3=$recv($globals.MethodMoved)._new();
- $recv($3)._method_(self);
- $recv($3)._oldProtocol_(oldProtocol);
- $recv($2)._announce_($recv($3)._yourself());
- }
- $4=$self._origin();
- if($4 == null || $4.a$nil){
- $4;
- } else {
- var origin;
- origin=$4;
- $recv($recv(origin)._organization())._addElement_(aString);
- $recv(origin)._removeProtocolIfEmpty_(oldProtocol);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"protocol:",{aString:aString,oldProtocol:oldProtocol})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "referencedClasses",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "referencedClasses\x0a\x09^ referencedClasses",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.referencedClasses;
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "selector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "selector\x0a\x09^ selector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.selector;
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "selector:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "selector: aString\x0a\x09selector := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.selector=aString;
- return self;
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "sendTo:arguments:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "aCollection"],
- source: "sendTo: anObject arguments: aCollection\x0a\x09^ self fn applyTo: anObject arguments: aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["applyTo:arguments:", "fn"]
- }, function ($methodClass){ return function (anObject,aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._fn())._applyTo_arguments_(anObject,aCollection);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sendTo:arguments:",{anObject:anObject,aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "source",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "source\x0a\x09^ source ifNil: [ '' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.source;
- if($1 == null || $1.a$nil){
- return "";
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"source",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CompiledMethod);
- $core.addMethod(
- $core.method({
- selector: "source:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "source: aString\x0a\x09source := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.source=aString;
- return self;
- }; }),
- $globals.CompiledMethod);
- $core.addClass("ForkPool", $globals.Object, "Kernel-Methods");
- $core.setSlots($globals.ForkPool, ["poolSize", "maxPoolSize", "queue", "worker"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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`";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "addWorker",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "addWorker\x0a\x09worker valueWithTimeout: 0.\x0a\x09poolSize := poolSize + 1",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["valueWithTimeout:", "+"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.worker)._valueWithTimeout_((0));
- $self.poolSize=$recv($self.poolSize).__plus((1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addWorker",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ForkPool);
- $core.addMethod(
- $core.method({
- selector: "defaultMaxPoolSize",
- protocol: "defaults",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "defaultMaxPoolSize\x0a\x09^ self class defaultMaxPoolSize",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["defaultMaxPoolSize", "class"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._class())._defaultMaxPoolSize();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"defaultMaxPoolSize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ForkPool);
- $core.addMethod(
- $core.method({
- selector: "fork:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "fork: aBlock\x0a\x09poolSize < self maxPoolSize ifTrue: [ self addWorker ].\x0a\x09queue nextPut: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "<", "maxPoolSize", "addWorker", "nextPut:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($self.poolSize).__lt($self._maxPoolSize()))){
- $self._addWorker();
- }
- $recv($self.queue)._nextPut_(aBlock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fork:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ForkPool);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x09\x0a\x09poolSize := 0.\x0a\x09queue := Queue new.\x0a\x09worker := self makeWorker",
- referencedClasses: ["Queue"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "new", "makeWorker"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.poolSize=(0);
- $self.queue=$recv($globals.Queue)._new();
- $self.worker=$self._makeWorker();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ForkPool);
- $core.addMethod(
- $core.method({
- selector: "makeWorker",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ] ]]",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "-", "nextIfAbsent:", "ifFalse:", "==", "ensure:", "value", "addWorker"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var sentinel;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- sentinel=$recv($globals.Object)._new();
- return (function(){
- var block;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self.poolSize=$recv($self.poolSize).__minus((1));
- block=$recv($self.queue)._nextIfAbsent_((function(){
- return sentinel;
- }));
- if(!$core.assert($recv(block).__eq_eq(sentinel))){
- return $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(block)._value();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
- //>>excludeEnd("ctx");
- }))._ensure_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._addWorker();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,5)});
- //>>excludeEnd("ctx");
- }));
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({block:block},$ctx1,1)});
- //>>excludeEnd("ctx");
- });
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"makeWorker",{sentinel:sentinel})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ForkPool);
- $core.addMethod(
- $core.method({
- selector: "maxPoolSize",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "maxPoolSize\x0a\x09^ maxPoolSize ifNil: [ self defaultMaxPoolSize ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "defaultMaxPoolSize"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.maxPoolSize;
- if($1 == null || $1.a$nil){
- return $self._defaultMaxPoolSize();
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"maxPoolSize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ForkPool);
- $core.addMethod(
- $core.method({
- selector: "maxPoolSize:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- source: "maxPoolSize: anInteger\x0a\x09maxPoolSize := anInteger",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- $self.maxPoolSize=anInteger;
- return self;
- }; }),
- $globals.ForkPool);
- $core.setSlots($globals.ForkPool.a$cls, ["default"]);
- $core.addMethod(
- $core.method({
- selector: "default",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "default\x0a\x09^ default ifNil: [ default := self new ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.default;
- if($1 == null || $1.a$nil){
- $self.default=$self._new();
- return $self.default;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"default",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ForkPool.a$cls);
- $core.addMethod(
- $core.method({
- selector: "defaultMaxPoolSize",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "defaultMaxPoolSize\x0a\x09^ 100",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return (100);
- }; }),
- $globals.ForkPool.a$cls);
- $core.addMethod(
- $core.method({
- selector: "resetDefault",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "resetDefault\x0a\x09default := nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- $self.default=nil;
- return self;
- }; }),
- $globals.ForkPool.a$cls);
- $core.addClass("Message", $globals.Object, "Kernel-Methods");
- $core.setSlots($globals.Message, ["selector", "arguments"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "arguments",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "arguments\x0a\x09^ arguments",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.arguments;
- }; }),
- $globals.Message);
- $core.addMethod(
- $core.method({
- selector: "arguments:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anArray"],
- source: "arguments: anArray\x0a\x09arguments := anArray",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anArray){
- var self=this,$self=this;
- $self.arguments=anArray;
- return self;
- }; }),
- $globals.Message);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "printOn: aStream\x0a\x09super printOn: aStream.\x0a\x09aStream\x0a\x09\x09nextPutAll: '(';\x0a\x09\x09nextPutAll: self selector;\x0a\x09\x09nextPutAll: ')'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["printOn:", "nextPutAll:", "selector"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._nextPutAll_("(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._nextPutAll_($self._selector())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._nextPutAll_(")");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Message);
- $core.addMethod(
- $core.method({
- selector: "selector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "selector\x0a\x09^ selector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.selector;
- }; }),
- $globals.Message);
- $core.addMethod(
- $core.method({
- selector: "selector:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "selector: aString\x0a\x09selector := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.selector=aString;
- return self;
- }; }),
- $globals.Message);
- $core.addMethod(
- $core.method({
- selector: "sendTo:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "sendTo: anObject\x0a\x09^ anObject perform: self selector withArguments: self arguments",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["perform:withArguments:", "selector", "arguments"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(anObject)._perform_withArguments_($self._selector(),$self._arguments());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sendTo:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Message);
- $core.addMethod(
- $core.method({
- selector: "selector:arguments:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anArray"],
- source: "selector: aString arguments: anArray\x0a\x09^ self new\x0a\x09\x09selector: aString;\x0a\x09\x09arguments: anArray;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["selector:", "new", "arguments:", "yourself"]
- }, function ($methodClass){ return function (aString,anArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._selector_(aString);
- $recv($1)._arguments_(anArray);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"selector:arguments:",{aString:aString,anArray:anArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Message.a$cls);
- $core.addMethod(
- $core.method({
- selector: "selector:arguments:notUnderstoodBy:",
- protocol: "dnu handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anArray", "anObject"],
- source: "selector: aString arguments: anArray notUnderstoodBy: anObject\x0a\x09\x22Creates the message and passes it to #doesNotUnderstand:.\x0a\x09Used by kernel to handle MNU.\x22\x0a\x09^ anObject doesNotUnderstand:\x0a\x09\x09(self selector: aString arguments: anArray)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["doesNotUnderstand:", "selector:arguments:"]
- }, function ($methodClass){ return function (aString,anArray,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(anObject)._doesNotUnderstand_($self._selector_arguments_(aString,anArray));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"selector:arguments:notUnderstoodBy:",{aString:aString,anArray:anArray,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Message.a$cls);
- $core.addClass("MessageSend", $globals.Object, "Kernel-Methods");
- $core.setSlots($globals.MessageSend, ["receiver", "message"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "arguments",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "arguments\x0a\x09^ message arguments",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["arguments"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.message)._arguments();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"arguments",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MessageSend);
- $core.addMethod(
- $core.method({
- selector: "arguments:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anArray"],
- source: "arguments: anArray\x0a\x09message arguments: anArray",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["arguments:"]
- }, function ($methodClass){ return function (anArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.message)._arguments_(anArray);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"arguments:",{anArray:anArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MessageSend);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x09message := Message new",
- referencedClasses: ["Message"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.message=$recv($globals.Message)._new();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MessageSend);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- 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: ')'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["printOn:", "nextPutAll:", "receiver", "selector"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._nextPutAll_("(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._nextPutAll_($self._receiver())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._nextPutAll_(" >> ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._nextPutAll_($self._selector())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._nextPutAll_(")");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MessageSend);
- $core.addMethod(
- $core.method({
- selector: "receiver",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "receiver\x0a\x09^ receiver",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.receiver;
- }; }),
- $globals.MessageSend);
- $core.addMethod(
- $core.method({
- selector: "receiver:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "receiver: anObject\x0a\x09receiver := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.receiver=anObject;
- return self;
- }; }),
- $globals.MessageSend);
- $core.addMethod(
- $core.method({
- selector: "selector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "selector\x0a\x09^ message selector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["selector"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.message)._selector();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"selector",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MessageSend);
- $core.addMethod(
- $core.method({
- selector: "selector:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "selector: aString\x0a\x09message selector: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["selector:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.message)._selector_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"selector:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MessageSend);
- $core.addMethod(
- $core.method({
- selector: "value",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "value\x0a\x09^ message sendTo: self receiver",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["sendTo:", "receiver"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.message)._sendTo_($self._receiver());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MessageSend);
- $core.addMethod(
- $core.method({
- selector: "value:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "value: anObject\x0a\x09^ message \x0a\x09\x09arguments: { anObject };\x0a\x09\x09sendTo: self receiver",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["arguments:", "sendTo:", "receiver"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.message;
- $recv($1)._arguments_([anObject]);
- return $recv($1)._sendTo_($self._receiver());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MessageSend);
- $core.addMethod(
- $core.method({
- selector: "value:value:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["firstArgument", "secondArgument"],
- source: "value: firstArgument value: secondArgument\x0a\x09^ message \x0a\x09\x09arguments: { firstArgument. secondArgument };\x0a\x09\x09sendTo: self receiver",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["arguments:", "sendTo:", "receiver"]
- }, function ($methodClass){ return function (firstArgument,secondArgument){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.message;
- $recv($1)._arguments_([firstArgument,secondArgument]);
- return $recv($1)._sendTo_($self._receiver());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArgument:firstArgument,secondArgument:secondArgument})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MessageSend);
- $core.addMethod(
- $core.method({
- selector: "value:value:value:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["firstArgument", "secondArgument", "thirdArgument"],
- source: "value: firstArgument value: secondArgument value: thirdArgument\x0a\x09^ message \x0a\x09\x09arguments: { firstArgument. secondArgument. thirdArgument };\x0a\x09\x09sendTo: self receiver",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["arguments:", "sendTo:", "receiver"]
- }, function ($methodClass){ return function (firstArgument,secondArgument,thirdArgument){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.message;
- $recv($1)._arguments_([firstArgument,secondArgument,thirdArgument]);
- return $recv($1)._sendTo_($self._receiver());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:value:value:",{firstArgument:firstArgument,secondArgument:secondArgument,thirdArgument:thirdArgument})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MessageSend);
- $core.addMethod(
- $core.method({
- selector: "valueWithPossibleArguments:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anArray"],
- source: "valueWithPossibleArguments: anArray\x0a\x09self arguments: anArray.\x0a\x09^ self value",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["arguments:", "value"]
- }, function ($methodClass){ return function (anArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._arguments_(anArray);
- return $self._value();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{anArray:anArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MessageSend);
- $core.addClass("MethodContext", $globals.Object, "Kernel-Methods");
- $core.setSlots($globals.MethodContext, ["receiver", "evaluatedSelector", "homeContext", "index", "locals", "outerContext", "selector", "sendIdx", "supercall"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "basicReceiver",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "basicReceiver\x0a\x09^ receiver",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.receiver;
- }; }),
- $globals.MethodContext);
- $core.addMethod(
- $core.method({
- selector: "evaluatedSelector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "evaluatedSelector\x0a\x09^ evaluatedSelector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.evaluatedSelector;
- }; }),
- $globals.MethodContext);
- $core.addMethod(
- $core.method({
- selector: "home",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "home\x0a\x09^ homeContext ifNotNil: [ :c | c hydrated ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "hydrated"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.homeContext;
- if($1 == null || $1.a$nil){
- return $1;
- } else {
- var c;
- c=$1;
- return $recv(c)._hydrated();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"home",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodContext);
- $core.addMethod(
- $core.method({
- selector: "hydrated",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "hydrated\x0a\x09<inlineJS: 'if (!$self.selector && !$self.outerContext) $self.setup(self); return self;'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["if (!$self.selector && !$self.outerContext) $self.setup(self); return self;"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if (!$self.selector && !$self.outerContext) $self.setup(self); return self;;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"hydrated",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodContext);
- $core.addMethod(
- $core.method({
- selector: "index",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "index\x0a\x09^ index ifNil: [ 0 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.index;
- if($1 == null || $1.a$nil){
- return (0);
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"index",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodContext);
- $core.addMethod(
- $core.method({
- selector: "locals",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "locals\x0a\x09^ locals",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.locals;
- }; }),
- $globals.MethodContext);
- $core.addMethod(
- $core.method({
- selector: "outerContext",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "outerContext\x0a\x09^ outerContext ifNil: [ self home ] ifNotNil: [ :c | c hydrated ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:ifNotNil:", "home", "hydrated"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.outerContext;
- if($1 == null || $1.a$nil){
- return $self._home();
- } else {
- var c;
- c=$1;
- return $recv(c)._hydrated();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"outerContext",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodContext);
- $core.addMethod(
- $core.method({
- selector: "selector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "selector\x0a\x09^ selector ifNotNil: [ Smalltalk core js2st: selector ]",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "js2st:", "core"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.selector;
- if($1 == null || $1.a$nil){
- return $1;
- } else {
- return $recv($recv($globals.Smalltalk)._core())._js2st_($self.selector);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"selector",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodContext);
- $core.addMethod(
- $core.method({
- selector: "sendIndexes",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sendIndexes\x0a\x09^ sendIdx",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.sendIdx;
- }; }),
- $globals.MethodContext);
- $core.addMethod(
- $core.method({
- selector: "supercall",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "supercall\x0a\x09^ supercall = true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.supercall).__eq(true);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"supercall",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodContext);
- $core.addClass("NativeFunction", $globals.Object, "Kernel-Methods");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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' ]";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "constructorNamed:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "constructorNamed: aString\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc();\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc();\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var nativeFunc=$globals.Platform._globals()[aString];
- return new nativeFunc();
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"constructorNamed:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "constructorNamed:value:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "constructorNamed: aString value: anObject\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc(anObject);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc(anObject);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var nativeFunc=$globals.Platform._globals()[aString];
- return new nativeFunc(anObject);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"constructorNamed:value:",{aString:aString,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "constructorNamed:value:value:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject", "anObject2"],
- source: "constructorNamed: aString value: anObject value: anObject2\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc(anObject,anObject2);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc(anObject,anObject2);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,anObject,anObject2){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var nativeFunc=$globals.Platform._globals()[aString];
- return new nativeFunc(anObject,anObject2);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"constructorNamed:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "constructorNamed:value:value:value:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject", "anObject2", "anObject3"],
- source: "constructorNamed: aString value: anObject value: anObject2 value: anObject3\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc(anObject,anObject2, anObject3);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return new nativeFunc(anObject,anObject2, anObject3);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,anObject,anObject2,anObject3){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var nativeFunc=$globals.Platform._globals()[aString];
- return new nativeFunc(anObject,anObject2, anObject3);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"constructorNamed:value:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2,anObject3:anObject3})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "constructorOf:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["nativeFunc"],
- source: "constructorOf: nativeFunc\x0a\x09<inlineJS: '\x0a\x09\x09return new nativeFunc();\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return new nativeFunc();\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (nativeFunc){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return new nativeFunc();
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"constructorOf:",{nativeFunc:nativeFunc})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "constructorOf:value:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["nativeFunc", "anObject"],
- source: "constructorOf: nativeFunc value: anObject\x0a\x09<inlineJS: '\x0a\x09\x09return new nativeFunc(anObject);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return new nativeFunc(anObject);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (nativeFunc,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return new nativeFunc(anObject);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"constructorOf:value:",{nativeFunc:nativeFunc,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "constructorOf:value:value:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["nativeFunc", "anObject", "anObject2"],
- source: "constructorOf: nativeFunc value: anObject value: anObject2\x0a\x09<inlineJS: '\x0a\x09\x09return new nativeFunc(anObject,anObject2);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return new nativeFunc(anObject,anObject2);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (nativeFunc,anObject,anObject2){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return new nativeFunc(anObject,anObject2);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"constructorOf:value:value:",{nativeFunc:nativeFunc,anObject:anObject,anObject2:anObject2})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "constructorOf:value:value:value:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["nativeFunc", "anObject", "anObject2", "anObject3"],
- source: "constructorOf: nativeFunc value: anObject value: anObject2 value: anObject3\x0a\x09<inlineJS: '\x0a\x09\x09return new nativeFunc(anObject,anObject2, anObject3);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return new nativeFunc(anObject,anObject2, anObject3);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (nativeFunc,anObject,anObject2,anObject3){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return new nativeFunc(anObject,anObject2, anObject3);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"constructorOf:value:value:value:",{nativeFunc:nativeFunc,anObject:anObject,anObject2:anObject2,anObject3:anObject3})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "exists:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "exists: aString\x0a\x09^ Platform includesGlobal: aString",
- referencedClasses: ["Platform"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["includesGlobal:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Platform)._includesGlobal_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exists:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "functionNamed:",
- protocol: "function calling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "functionNamed: aString\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals[aString];\x0a\x09\x09return nativeFunc();\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals[aString];\x0a\x09\x09return nativeFunc();\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var nativeFunc=$globals.Platform._globals[aString];
- return nativeFunc();
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"functionNamed:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "functionNamed:value:",
- protocol: "function calling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "functionNamed: aString value: anObject\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return nativeFunc(anObject);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return nativeFunc(anObject);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var nativeFunc=$globals.Platform._globals()[aString];
- return nativeFunc(anObject);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"functionNamed:value:",{aString:aString,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "functionNamed:value:value:",
- protocol: "function calling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject", "anObject2"],
- source: "functionNamed: aString value: anObject value: anObject2\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return nativeFunc(anObject,anObject2);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return nativeFunc(anObject,anObject2);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,anObject,anObject2){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var nativeFunc=$globals.Platform._globals()[aString];
- return nativeFunc(anObject,anObject2);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"functionNamed:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "functionNamed:value:value:value:",
- protocol: "function calling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject", "anObject2", "anObject3"],
- source: "functionNamed: aString value: anObject value: anObject2 value: anObject3\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return nativeFunc(anObject,anObject2, anObject3);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return nativeFunc(anObject,anObject2, anObject3);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,anObject,anObject2,anObject3){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var nativeFunc=$globals.Platform._globals()[aString];
- return nativeFunc(anObject,anObject2, anObject3);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"functionNamed:value:value:value:",{aString:aString,anObject:anObject,anObject2:anObject2,anObject3:anObject3})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "functionNamed:valueWithArgs:",
- protocol: "function calling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "args"],
- source: "functionNamed: aString valueWithArgs: args\x0a\x09<inlineJS: '\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return Function.prototype.apply.call(nativeFunc, null, args);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var nativeFunc=$globals.Platform._globals()[aString];\x0a\x09\x09return Function.prototype.apply.call(nativeFunc, null, args);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,args){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var nativeFunc=$globals.Platform._globals()[aString];
- return Function.prototype.apply.call(nativeFunc, null, args);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"functionNamed:valueWithArgs:",{aString:aString,args:args})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "functionOf:",
- protocol: "function calling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["nativeFunc"],
- source: "functionOf: nativeFunc\x0a\x09<inlineJS: '\x0a\x09\x09return nativeFunc();\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return nativeFunc();\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (nativeFunc){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return nativeFunc();
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"functionOf:",{nativeFunc:nativeFunc})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "functionOf:value:",
- protocol: "function calling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["nativeFunc", "anObject"],
- source: "functionOf: nativeFunc value: anObject\x0a\x09<inlineJS: '\x0a\x09\x09return nativeFunc(anObject);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return nativeFunc(anObject);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (nativeFunc,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return nativeFunc(anObject);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"functionOf:value:",{nativeFunc:nativeFunc,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "functionOf:value:value:",
- protocol: "function calling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["nativeFunc", "anObject", "anObject2"],
- source: "functionOf: nativeFunc value: anObject value: anObject2\x0a\x09<inlineJS: '\x0a\x09\x09return nativeFunc(anObject,anObject2);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return nativeFunc(anObject,anObject2);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (nativeFunc,anObject,anObject2){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return nativeFunc(anObject,anObject2);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"functionOf:value:value:",{nativeFunc:nativeFunc,anObject:anObject,anObject2:anObject2})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "functionOf:value:value:value:",
- protocol: "function calling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["nativeFunc", "anObject", "anObject2", "anObject3"],
- source: "functionOf: nativeFunc value: anObject value: anObject2 value: anObject3\x0a\x09<inlineJS: '\x0a\x09\x09return nativeFunc(anObject,anObject2, anObject3);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return nativeFunc(anObject,anObject2, anObject3);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (nativeFunc,anObject,anObject2,anObject3){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return nativeFunc(anObject,anObject2, anObject3);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"functionOf:value:value:value:",{nativeFunc:nativeFunc,anObject:anObject,anObject2:anObject2,anObject3:anObject3})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "functionOf:valueWithArgs:",
- protocol: "function calling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["nativeFunc", "args"],
- source: "functionOf: nativeFunc valueWithArgs: args\x0a\x09<inlineJS: '\x0a\x09\x09return Function.prototype.apply.call(nativeFunc, null, args);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return Function.prototype.apply.call(nativeFunc, null, args);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (nativeFunc,args){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Function.prototype.apply.call(nativeFunc, null, args);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"functionOf:valueWithArgs:",{nativeFunc:nativeFunc,args:args})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "isNativeFunction:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "isNativeFunction: anObject\x0a\x09<inlineJS: 'return typeof anObject === \x22function\x22'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof anObject === \x22function\x22"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof anObject === "function";
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isNativeFunction:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "methodOf:this:",
- protocol: "method calling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["nativeFunc", "thisObject"],
- source: "methodOf: nativeFunc this: thisObject\x0a\x09<inlineJS: '\x0a\x09\x09return Function.prototype.call.call(nativeFunc, thisObject);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return Function.prototype.call.call(nativeFunc, thisObject);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (nativeFunc,thisObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Function.prototype.call.call(nativeFunc, thisObject);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"methodOf:this:",{nativeFunc:nativeFunc,thisObject:thisObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "methodOf:this:value:",
- protocol: "method calling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["nativeFunc", "thisObject", "anObject"],
- source: "methodOf: nativeFunc this: thisObject value: anObject\x0a\x09<inlineJS: '\x0a\x09\x09return Function.prototype.call.call(nativeFunc, thisObject, anObject);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return Function.prototype.call.call(nativeFunc, thisObject, anObject);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (nativeFunc,thisObject,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Function.prototype.call.call(nativeFunc, thisObject, anObject);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"methodOf:this:value:",{nativeFunc:nativeFunc,thisObject:thisObject,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "methodOf:this:value:value:",
- protocol: "method calling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["nativeFunc", "thisObject", "anObject", "anObject2"],
- source: "methodOf: nativeFunc this: thisObject value: anObject value: anObject2\x0a\x09<inlineJS: '\x0a\x09\x09return Function.prototype.call.call(nativeFunc, thisObject,anObject,anObject2);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return Function.prototype.call.call(nativeFunc, thisObject,anObject,anObject2);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (nativeFunc,thisObject,anObject,anObject2){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Function.prototype.call.call(nativeFunc, thisObject,anObject,anObject2);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"methodOf:this:value:value:",{nativeFunc:nativeFunc,thisObject:thisObject,anObject:anObject,anObject2:anObject2})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "methodOf:this:value:value:value:",
- protocol: "method calling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["nativeFunc", "thisObject", "anObject", "anObject2", "anObject3"],
- source: "methodOf: nativeFunc this: thisObject value: anObject value: anObject2 value: anObject3\x0a\x09<inlineJS: '\x0a\x09\x09return Function.prototype.call.call(nativeFunc, thisObject,anObject,anObject2, anObject3);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return Function.prototype.call.call(nativeFunc, thisObject,anObject,anObject2, anObject3);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (nativeFunc,thisObject,anObject,anObject2,anObject3){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Function.prototype.call.call(nativeFunc, thisObject,anObject,anObject2, anObject3);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"methodOf:this:value:value:value:",{nativeFunc:nativeFunc,thisObject:thisObject,anObject:anObject,anObject2:anObject2,anObject3:anObject3})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addMethod(
- $core.method({
- selector: "methodOf:this:valueWithArgs:",
- protocol: "method calling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["nativeFunc", "thisObject", "args"],
- source: "methodOf: nativeFunc this: thisObject valueWithArgs: args\x0a\x09<inlineJS: '\x0a\x09\x09return Function.prototype.apply.call(nativeFunc, thisObject, args);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return Function.prototype.apply.call(nativeFunc, thisObject, args);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (nativeFunc,thisObject,args){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Function.prototype.apply.call(nativeFunc, thisObject, args);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"methodOf:this:valueWithArgs:",{nativeFunc:nativeFunc,thisObject:thisObject,args:args})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NativeFunction.a$cls);
- $core.addTrait("TMethodContext", "Kernel-Methods");
- $core.addMethod(
- $core.method({
- selector: "asString",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asString\x0a\x09^ self isBlockContext\x0a\x09\x09ifTrue: [ 'a block (in ', self methodContext asString, ')' ]\x0a\x09\x09ifFalse: [ self method\x0a\x09\x09\x09ifNotNil: [ :method | method asStringForClass: self receiver class ]\x0a\x09\x09\x09ifNil: [ 'missing method ', self selector symbolPrintString ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "isBlockContext", ",", "asString", "methodContext", "ifNotNil:ifNil:", "method", "asStringForClass:", "class", "receiver", "symbolPrintString", "selector"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- if($core.assert($self._isBlockContext())){
- return [$recv(["a block (in ".__comma($recv($self._methodContext())._asString())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(")")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- $1=$self._method();
- if($1 == null || $1.a$nil){
- return "missing method ".__comma($recv($self._selector())._symbolPrintString());
- } else {
- var method;
- method=$1;
- return $recv(method)._asStringForClass_($recv($self._receiver())._class());
- }
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMethodContext);
- $core.addMethod(
- $core.method({
- selector: "basicReceiver",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "basicReceiver\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicReceiver",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMethodContext);
- $core.addMethod(
- $core.method({
- selector: "findContextSuchThat:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["testBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["whileFalse:", "isNil", "ifTrue:", "value:", "outerContext"]
- }, function ($methodClass){ return function (testBlock){
- var self=this,$self=this;
- var context;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- context=self;
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(context)._isNil();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._whileFalse_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(testBlock)._value_(context))){
- throw $early=[context];
- }
- context=$recv(context)._outerContext();
- return context;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return nil;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"findContextSuchThat:",{testBlock:testBlock,context:context})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMethodContext);
- $core.addMethod(
- $core.method({
- selector: "home",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "home\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"home",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMethodContext);
- $core.addMethod(
- $core.method({
- selector: "index",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "index\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"index",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMethodContext);
- $core.addMethod(
- $core.method({
- selector: "isBlockContext",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isBlockContext\x0a\x09\x22Block context do not have selectors.\x22\x0a\x09\x0a\x09^ self selector isNil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["isNil", "selector"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._selector())._isNil();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isBlockContext",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMethodContext);
- $core.addMethod(
- $core.method({
- selector: "locals",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "locals\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"locals",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMethodContext);
- $core.addMethod(
- $core.method({
- selector: "method",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "methodContext", "class", "receiver", "lookupSelector:", "selector", "ifNil:ifNotNil:", "outerContext", "supercall", "ifFalse:ifTrue:", "superclass", "methodClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var method,lookupClass,receiverClass,supercall;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=[$self._methodContext()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["methodContext"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- return nil;
- } else {
- $1;
- }
- receiverClass=$recv($recv([$self._methodContext()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["methodContext"]=2
- //>>excludeEnd("ctx");
- ][0])._receiver())._class();
- method=[$recv(receiverClass)._lookupSelector_([$recv([$self._methodContext()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["methodContext"]=3
- //>>excludeEnd("ctx");
- ][0])._selector()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["selector"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lookupSelector:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $2=$self._outerContext();
- if($2 == null || $2.a$nil){
- supercall=false;
- } else {
- var outer;
- outer=$2;
- supercall=$recv(outer)._supercall();
- }
- if($core.assert(supercall)){
- return $recv($recv($recv(method)._methodClass())._superclass())._lookupSelector_($recv($self._methodContext())._selector());
- } else {
- return method;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"method",{method:method,lookupClass:lookupClass,receiverClass:receiverClass,supercall:supercall})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMethodContext);
- $core.addMethod(
- $core.method({
- selector: "methodContext",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "methodContext\x0a\x09self isBlockContext ifFalse: [ ^ self ].\x0a\x09\x0a\x09^ self outerContext ifNotNil: [ :outer |\x0a\x09\x09outer methodContext ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "isBlockContext", "ifNotNil:", "outerContext", "methodContext"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- if(!$core.assert($self._isBlockContext())){
- return self;
- }
- $1=$self._outerContext();
- if($1 == null || $1.a$nil){
- return $1;
- } else {
- var outer;
- outer=$1;
- return $recv(outer)._methodContext();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"methodContext",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMethodContext);
- $core.addMethod(
- $core.method({
- selector: "outerContext",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "outerContext\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"outerContext",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMethodContext);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "printOn: aStream\x0a\x09super printOn: aStream.\x0a\x09aStream \x0a\x09\x09nextPutAll: '(';\x0a\x09\x09nextPutAll: self asString;\x0a\x09\x09nextPutAll: ')'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["printOn:", "nextPutAll:", "asString"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._nextPutAll_("(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._nextPutAll_($self._asString())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._nextPutAll_(")");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMethodContext);
- $core.addMethod(
- $core.method({
- selector: "receiver",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "receiver\x0a\x09^ (self isBlockContext and: [ self outerContext notNil ])\x0a\x09\x09ifTrue: [ self outerContext receiver ]\x0a\x09\x09ifFalse: [ self basicReceiver ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "and:", "isBlockContext", "notNil", "outerContext", "receiver", "basicReceiver"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- if($core.assert($self._isBlockContext())){
- $1=$recv([$self._outerContext()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["outerContext"]=1
- //>>excludeEnd("ctx");
- ][0])._notNil();
- } else {
- $1=false;
- }
- if($core.assert($1)){
- return $recv($self._outerContext())._receiver();
- } else {
- return $self._basicReceiver();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"receiver",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMethodContext);
- $core.addMethod(
- $core.method({
- selector: "selector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "selector\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"selector",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMethodContext);
- $core.addMethod(
- $core.method({
- selector: "sendIndexes",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sendIndexes\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sendIndexes",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMethodContext);
- $core.addMethod(
- $core.method({
- selector: "supercall",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "supercall\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"supercall",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMethodContext);
- $core.addClass("Timeout", $globals.Object, "Kernel-Methods");
- $core.setSlots($globals.Timeout, ["rawTimeout"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "clearInterval",
- protocol: "timeout/interval",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "clearInterval\x0a\x09<inlineJS: '\x0a\x09\x09var interval = $self.rawTimeout;\x0a\x09\x09clearInterval(interval);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var interval = $self.rawTimeout;\x0a\x09\x09clearInterval(interval);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var interval = $self.rawTimeout;
- clearInterval(interval);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"clearInterval",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Timeout);
- $core.addMethod(
- $core.method({
- selector: "clearTimeout",
- protocol: "timeout/interval",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "clearTimeout\x0a\x09<inlineJS: '\x0a\x09\x09var timeout = $self.rawTimeout;\x0a\x09\x09clearTimeout(timeout);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var timeout = $self.rawTimeout;\x0a\x09\x09clearTimeout(timeout);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var timeout = $self.rawTimeout;
- clearTimeout(timeout);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"clearTimeout",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Timeout);
- $core.addMethod(
- $core.method({
- selector: "rawTimeout:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "rawTimeout: anObject\x0a\x09rawTimeout := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.rawTimeout=anObject;
- return self;
- }; }),
- $globals.Timeout);
- $core.addMethod(
- $core.method({
- selector: "on:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "on: anObject\x0a\x09^ self new rawTimeout: anObject; yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["rawTimeout:", "new", "yourself"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._rawTimeout_(anObject);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Timeout.a$cls);
- $core.setTraitComposition([{trait: $globals.TMethodContext}], $globals.MethodContext);
- });
- define('amber/core/Kernel-Dag',["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Kernel-Dag");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("AbstractDagVisitor", $globals.Object, "Kernel-Dag");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.AbstractDagVisitor.comment="I am base class of `DagNode` visitor.\x0a\x0aConcrete classes should implement `visitDagNode:`,\x0athey can reuse possible variants of implementation\x0aoffered directly: `visitDagNodeVariantSimple:`\x0aand `visitDagNodeVariantRedux:`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "value:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "value: anObject\x0a\x09^ self visit: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visit:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visit_(anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractDagVisitor);
- $core.addMethod(
- $core.method({
- selector: "visit:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visit: aNode\x0a\x09^ aNode acceptDagVisitor: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["acceptDagVisitor:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aNode)._acceptDagVisitor_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractDagVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitAll:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "visitAll: aCollection\x0a\x09^ aCollection collect: [ :each | self visit: each ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "visit:"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aCollection)._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._visit_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitAll:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractDagVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitAllChildren:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDagNode"],
- source: "visitAllChildren: aDagNode\x0a\x09^ self visitAll: aDagNode dagChildren",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitAll:", "dagChildren"]
- }, function ($methodClass){ return function (aDagNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitAll_($recv(aDagNode)._dagChildren());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitAllChildren:",{aDagNode:aDagNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractDagVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitDagNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitDagNode: aNode\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitDagNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractDagVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitDagNodeVariantRedux:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitDagNodeVariantRedux: aNode\x0a\x09\x22Immutable-guarded implementation of visitDagNode:.\x0a\x09Visits all children and checks if there were changes.\x0a\x09If not, returns aNode.\x0a\x09If yes, returns copy of aNode with new children.\x22\x0a\x0a\x09| newChildren oldChildren |\x0a\x09oldChildren := aNode dagChildren.\x0a\x09newChildren := self visitAllChildren: aNode.\x0a\x09oldChildren = newChildren\x0a\x09\x09ifTrue: [ ^ aNode ]\x0a\x09\x09ifFalse: [ ^ aNode copy dagChildren: newChildren; yourself ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["dagChildren", "visitAllChildren:", "ifTrue:ifFalse:", "=", "dagChildren:", "copy", "yourself"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var newChildren,oldChildren;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- oldChildren=$recv(aNode)._dagChildren();
- newChildren=$self._visitAllChildren_(aNode);
- if($core.assert($recv(oldChildren).__eq(newChildren))){
- return aNode;
- } else {
- $1=$recv(aNode)._copy();
- $recv($1)._dagChildren_(newChildren);
- return $recv($1)._yourself();
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitDagNodeVariantRedux:",{aNode:aNode,newChildren:newChildren,oldChildren:oldChildren})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractDagVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitDagNodeVariantSimple:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitDagNodeVariantSimple: aNode\x0a\x09\x22Simple implementation of visitDagNode:.\x0a\x09Visits children, then returns aNode\x22\x0a\x0a\x09self visitAllChildren: aNode.\x0a\x09^ aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitAllChildren:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._visitAllChildren_(aNode);
- return aNode;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitDagNodeVariantSimple:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractDagVisitor);
- $core.addClass("PathDagVisitor", $globals.AbstractDagVisitor, "Kernel-Dag");
- $core.setSlots($globals.PathDagVisitor, ["path"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.PathDagVisitor.comment="I am base class of `DagNode` visitor.\x0a\x0aI hold the path of ancestors up to actual node\x0ain `self path`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x0a\x09path := #()",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.path=[];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PathDagVisitor);
- $core.addMethod(
- $core.method({
- selector: "path",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "path\x0a\x09^ path",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.path;
- }; }),
- $globals.PathDagVisitor);
- $core.addMethod(
- $core.method({
- selector: "visit:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visit: aNode\x0a\x09| oldPath result |\x0a\x09result := aNode.\x0a\x09oldPath := path.\x0a\x09[\x0a\x09\x09path := path, {aNode}.\x0a\x09\x09result := super visit: aNode\x0a\x09] ensure: [ path := oldPath ].\x0a\x09^ result",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ensure:", ",", "visit:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var oldPath,result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- result=aNode;
- oldPath=$self.path;
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self.path=$recv($self.path).__comma([aNode]);
- result=[(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx2.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visit_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._ensure_((function(){
- $self.path=oldPath;
- return $self.path;
- }));
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode,oldPath:oldPath,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PathDagVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitDagNodeVariantRedux:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitDagNodeVariantRedux: aNode\x0a\x09| newNode |\x0a\x09newNode := super visitDagNodeVariantRedux: aNode.\x0a\x09aNode == newNode ifFalse: [ path at: path size put: newNode ].\x0a\x09^ newNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNodeVariantRedux:", "ifFalse:", "==", "at:put:", "size"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var newNode;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- newNode=[(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitDagNodeVariantRedux_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- if(!$core.assert($recv(aNode).__eq_eq(newNode))){
- $recv($self.path)._at_put_($recv($self.path)._size(),newNode);
- }
- return newNode;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitDagNodeVariantRedux:",{aNode:aNode,newNode:newNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PathDagVisitor);
- $core.addClass("DagNode", $globals.Object, "Kernel-Dag");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.DagNode.comment="I am the abstract root class of any directed acyclic graph.\x0a\x0aConcrete classes should implement `dagChildren` and `dagChildren:`\x0ato get / set direct successor nodes (aka child nodes / subnodes).";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitDagNode: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitDagNode_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DagNode);
- $core.addMethod(
- $core.method({
- selector: "allDagChildren",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "allDagChildren\x0a\x09| allNodes |\x0a\x09\x0a\x09allNodes := self dagChildren asSet.\x0a\x09self dagChildren do: [ :each | \x0a\x09\x09allNodes addAll: each allDagChildren ].\x0a\x09\x0a\x09^ allNodes",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["asSet", "dagChildren", "do:", "addAll:", "allDagChildren"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var allNodes;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- allNodes=$recv([$self._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=1
- //>>excludeEnd("ctx");
- ][0])._asSet();
- $recv($self._dagChildren())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(allNodes)._addAll_($recv(each)._allDagChildren());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return allNodes;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"allDagChildren",{allNodes:allNodes})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DagNode);
- $core.addMethod(
- $core.method({
- selector: "dagChildren",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "dagChildren\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dagChildren",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DagNode);
- $core.addMethod(
- $core.method({
- selector: "dagChildren:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "dagChildren: aCollection\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dagChildren:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DagNode);
- $core.addMethod(
- $core.method({
- selector: "isDagNode",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isDagNode\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.DagNode);
- $core.addClass("DagParentNode", $globals.DagNode, "Kernel-Dag");
- $core.setSlots($globals.DagParentNode, ["nodes"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.DagParentNode.comment="I am `DagNode` that stores a collection of its children,\x0alazy initialized to empty array.\x0a\x0aI can `addDagChild:` to add a child.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "addDagChild:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDagNode"],
- source: "addDagChild: aDagNode\x0a\x09self dagChildren add: aDagNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "dagChildren"]
- }, function ($methodClass){ return function (aDagNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._dagChildren())._add_(aDagNode);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addDagChild:",{aDagNode:aDagNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DagParentNode);
- $core.addMethod(
- $core.method({
- selector: "dagChildren",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "dagChildren\x0a\x09^ nodes ifNil: [ nodes := Array new ]",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.nodes;
- if($1 == null || $1.a$nil){
- $self.nodes=$recv($globals.Array)._new();
- return $self.nodes;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dagChildren",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DagParentNode);
- $core.addMethod(
- $core.method({
- selector: "dagChildren:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "dagChildren: aCollection\x0a\x09nodes := aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- $self.nodes=aCollection;
- return self;
- }; }),
- $globals.DagParentNode);
- $core.addClass("DagSink", $globals.DagNode, "Kernel-Dag");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.DagSink.comment="I am `DagNode` with no direct successors.\x0a\x0aSending `dagChildren:` with empty collection is legal.";
- //>>excludeEnd("ide");
- $core.addTrait("TDagSink", "Kernel-Dag");
- $core.addMethod(
- $core.method({
- selector: "dagChildren",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "dagChildren\x0a\x09^ #()",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return [];
- }; }),
- $globals.TDagSink);
- $core.addMethod(
- $core.method({
- selector: "dagChildren:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "dagChildren: aCollection\x0a\x09aCollection ifNotEmpty: [ self error: 'A DagSink cannot have children.' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotEmpty:", "error:"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aCollection)._ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._error_("A DagSink cannot have children.");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dagChildren:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TDagSink);
- $core.addTrait("TDerivedDagChildren", "Kernel-Dag");
- $core.addMethod(
- $core.method({
- selector: "addDagChild:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDagNode"],
- source: "addDagChild: aDagNode\x0a\x09self error: 'Cannot add child for a TDerivedChildren.'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (aDagNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("Cannot add child for a TDerivedChildren.");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addDagChild:",{aDagNode:aDagNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TDerivedDagChildren);
- $core.addMethod(
- $core.method({
- selector: "dagChildren",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "dagChildren\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dagChildren",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TDerivedDagChildren);
- $core.addMethod(
- $core.method({
- selector: "dagChildren:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "dagChildren: aCollection\x0a\x09self error: 'Cannot set children of a TDerivedChildren.'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("Cannot set children of a TDerivedChildren.");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dagChildren:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TDerivedDagChildren);
- $core.addTrait("TSingleDagChild", "Kernel-Dag");
- $core.addMethod(
- $core.method({
- selector: "dagChild",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "dagChild\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dagChild",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSingleDagChild);
- $core.addMethod(
- $core.method({
- selector: "dagChildren",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "dagChildren\x0a\x09^ { self dagChild }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["dagChild"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return [$self._dagChild()];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dagChildren",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TSingleDagChild);
- $core.setTraitComposition([{trait: $globals.TDerivedDagChildren}], $globals.TDagSink);
- $core.setTraitComposition([{trait: $globals.TDerivedDagChildren}], $globals.TSingleDagChild);
- $core.setTraitComposition([{trait: $globals.TDagSink}], $globals.DagSink);
- $core.addMethod(
- $core.method({
- selector: "isDagNode",
- protocol: "*Kernel-Dag",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isDagNode\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.Object);
- });
- define('amber/core/Kernel-Promises',["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Kernel-Promises");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("Promise", $globals.Object, "Kernel-Promises");
- $core.addMethod(
- $core.method({
- selector: "all:",
- protocol: "composites",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "all: aCollection\x0a\x22Returns a Promise resolved with results of sub-promises.\x22\x0a<inlineJS: 'return Promise.all($recv(aCollection)._asArray())'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Promise.all($recv(aCollection)._asArray())"]]],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Promise.all($recv(aCollection)._asArray());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"all:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Promise.a$cls);
- $core.addMethod(
- $core.method({
- selector: "any:",
- protocol: "composites",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "any: aCollection\x0a\x22Returns a Promise resolved with first result of sub-promises.\x22\x0a<inlineJS: 'return Promise.race($recv(aCollection)._asArray())'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Promise.race($recv(aCollection)._asArray())"]]],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Promise.race($recv(aCollection)._asArray());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"any:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Promise.a$cls);
- $core.addMethod(
- $core.method({
- selector: "delayMilliseconds:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "delayMilliseconds: aNumber\x0a\x09^ self new: [ :model | [ model value: nil ] valueWithTimeout: aNumber ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new:", "valueWithTimeout:", "value:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._new_((function(model){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(model)._value_(nil);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }))._valueWithTimeout_(aNumber);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({model:model},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"delayMilliseconds:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Promise.a$cls);
- $core.addMethod(
- $core.method({
- selector: "forBlock:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "forBlock: aBlock\x0a\x22Returns a Promise that is resolved with the value of aBlock,\x0aand rejected if error happens while evaluating aBlock.\x22\x0a\x09^ self new then: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["then:", "new"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._new())._then_(aBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"forBlock:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Promise.a$cls);
- $core.addMethod(
- $core.method({
- selector: "new",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "new\x0a\x22Returns a dumb Promise resolved with nil.\x22\x0a<inlineJS: 'return Promise.resolve()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Promise.resolve()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Promise.resolve();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"new",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Promise.a$cls);
- $core.addMethod(
- $core.method({
- selector: "new:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "new: aBlock\x0a\x22Returns a Promise that is eventually resolved or rejected.\x0aPass a block that is called with one argument, model.\x0aYou should call model value: ... to resolve the promise\x0aand model signal: ... to reject the promise.\x0aIf error happens during run of the block,\x0apromise is rejected with that error as well.\x22\x0a<inlineJS: 'return new Promise(function (resolve, reject) {\x0a var model = {\x0a\x09\x09value: resolve,\x0a\x09\x09signal: reject,\x0a\x09\x09do: function (aBlock) { resolve($self._forBlock_(aBlock)); }\x0a\x09};\x0a aBlock._value_(model);\x0a})'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return new Promise(function (resolve, reject) {\x0a var model = {\x0a\x09\x09value: resolve,\x0a\x09\x09signal: reject,\x0a\x09\x09do: function (aBlock) { resolve($self._forBlock_(aBlock)); }\x0a\x09};\x0a aBlock._value_(model);\x0a})"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return new Promise(function (resolve, reject) {
- var model = {
- value: resolve,
- signal: reject,
- do: function (aBlock) { resolve($self._forBlock_(aBlock)); }
- };
- aBlock._value_(model);
- });
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"new:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Promise.a$cls);
- $core.addMethod(
- $core.method({
- selector: "signal:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "signal: anObject\x0a\x22Returns a Promise rejected with anObject.\x22\x0a<inlineJS: 'return $recv(anObject)._in_(function (x) {return Promise.reject(x)})'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $recv(anObject)._in_(function (x) {return Promise.reject(x)})"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(anObject)._in_(function (x) {return Promise.reject(x)});
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"signal:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Promise.a$cls);
- $core.addMethod(
- $core.method({
- selector: "value:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "value: anObject\x0a\x22Returns a Promise resolved with anObject.\x22\x0a<inlineJS: 'return $recv(anObject)._in_(function (x) {return Promise.resolve(x)})'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $recv(anObject)._in_(function (x) {return Promise.resolve(x)})"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(anObject)._in_(function (x) {return Promise.resolve(x)});
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Promise.a$cls);
- $core.addTrait("TThenable", "Kernel-Promises");
- $core.addMethod(
- $core.method({
- selector: "catch:",
- protocol: "promises",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "catch: aBlock\x0a<inlineJS: 'return self.then(null, function (err) { return aBlock._value_(err); })'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.then(null, function (err) { return aBlock._value_(err); })"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.then(null, function (err) { return aBlock._value_(err); });
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"catch:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TThenable);
- $core.addMethod(
- $core.method({
- selector: "isThenable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isThenable\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.TThenable);
- $core.addMethod(
- $core.method({
- selector: "on:do:",
- protocol: "promises",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aBlock"],
- source: "on: aClass do: aBlock\x0a<inlineJS: 'return self.then(null, function (err) {\x0a if (err._isKindOf_(aClass)) return aBlock._value_(err);\x0a else throw err;\x0a})'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return self.then(null, function (err) {\x0a if (err._isKindOf_(aClass)) return aBlock._value_(err);\x0a else throw err;\x0a})"]]],
- messageSends: []
- }, function ($methodClass){ return function (aClass,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return self.then(null, function (err) {
- if (err._isKindOf_(aClass)) return aBlock._value_(err);
- else throw err;
- });
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:do:",{aClass:aClass,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TThenable);
- $core.addMethod(
- $core.method({
- selector: "on:do:catch:",
- protocol: "promises",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aBlock", "anotherBlock"],
- source: "on: aClass do: aBlock catch: anotherBlock\x0a\x09^ (self on: aClass do: aBlock) catch: anotherBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["catch:", "on:do:"]
- }, function ($methodClass){ return function (aClass,aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._on_do_(aClass,aBlock))._catch_(anotherBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:do:catch:",{aClass:aClass,aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TThenable);
- $core.addMethod(
- $core.method({
- selector: "then:",
- protocol: "promises",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlockOrArray"],
- source: "then: aBlockOrArray\x0a\x22Accepts a block or array of blocks.\x0aEach of blocks in the array or the singleton one is\x0aused in .then call to a promise, to accept a result\x0aand transform it to the result for the next one.\x0aIn case a block has more than one argument\x0aand result is an array, first n-1 elements of the array\x0aare put into additional arguments beyond the first.\x0aThe first argument always contains the result as-is.\x22\x0a<inlineJS: '\x0avar array = Array.isArray(aBlockOrArray) ? aBlockOrArray : [aBlockOrArray];\x0areturn array.reduce(function (soFar, aBlock) {\x0a return soFar.then(typeof aBlock === \x22function\x22 && aBlock.length > 1 ?\x0a function (result) {\x0a if (Array.isArray(result)) {\x0a return aBlock._valueWithPossibleArguments_([result].concat(result.slice(0, aBlock.length-1)));\x0a } else {\x0a return aBlock._value_(result);\x0a }\x0a } :\x0a function (result) {\x0a return aBlock._value_(result);\x0a }\x0a );\x0a}, self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0avar array = Array.isArray(aBlockOrArray) ? aBlockOrArray : [aBlockOrArray];\x0areturn array.reduce(function (soFar, aBlock) {\x0a return soFar.then(typeof aBlock === \x22function\x22 && aBlock.length > 1 ?\x0a function (result) {\x0a if (Array.isArray(result)) {\x0a return aBlock._valueWithPossibleArguments_([result].concat(result.slice(0, aBlock.length-1)));\x0a } else {\x0a return aBlock._value_(result);\x0a }\x0a } :\x0a function (result) {\x0a return aBlock._value_(result);\x0a }\x0a );\x0a}, self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlockOrArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var array = Array.isArray(aBlockOrArray) ? aBlockOrArray : [aBlockOrArray];
- return array.reduce(function (soFar, aBlock) {
- return soFar.then(typeof aBlock === "function" && aBlock.length > 1 ?
- function (result) {
- if (Array.isArray(result)) {
- return aBlock._valueWithPossibleArguments_([result].concat(result.slice(0, aBlock.length-1)));
- } else {
- return aBlock._value_(result);
- }
- } :
- function (result) {
- return aBlock._value_(result);
- }
- );
- }, self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"then:",{aBlockOrArray:aBlockOrArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TThenable);
- $core.addMethod(
- $core.method({
- selector: "then:catch:",
- protocol: "promises",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlockOrArray", "anotherBlock"],
- source: "then: aBlockOrArray catch: anotherBlock\x0a\x09^ (self then: aBlockOrArray) catch: anotherBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["catch:", "then:"]
- }, function ($methodClass){ return function (aBlockOrArray,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._then_(aBlockOrArray))._catch_(anotherBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"then:catch:",{aBlockOrArray:aBlockOrArray,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TThenable);
- $core.addMethod(
- $core.method({
- selector: "then:on:do:",
- protocol: "promises",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlockOrArray", "aClass", "aBlock"],
- source: "then: aBlockOrArray on: aClass do: aBlock\x0a\x09^ (self then: aBlockOrArray) on: aClass do: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:do:", "then:"]
- }, function ($methodClass){ return function (aBlockOrArray,aClass,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._then_(aBlockOrArray))._on_do_(aClass,aBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"then:on:do:",{aBlockOrArray:aBlockOrArray,aClass:aClass,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TThenable);
- $core.addMethod(
- $core.method({
- selector: "then:on:do:catch:",
- protocol: "promises",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlockOrArray", "aClass", "aBlock", "anotherBlock"],
- source: "then: aBlockOrArray on: aClass do: aBlock catch: anotherBlock\x0a\x09^ ((self then: aBlockOrArray) on: aClass do: aBlock) catch: anotherBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["catch:", "on:do:", "then:"]
- }, function ($methodClass){ return function (aBlockOrArray,aClass,aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($self._then_(aBlockOrArray))._on_do_(aClass,aBlock))._catch_(anotherBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"then:on:do:catch:",{aBlockOrArray:aBlockOrArray,aClass:aClass,aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TThenable);
- $core.setTraitComposition([{trait: $globals.TThenable}], $globals.Promise);
- });
- define('amber/core/Kernel-Infrastructure',["amber/boot", "require", "amber/core/Kernel-Collections", "amber/core/Kernel-Helpers", "amber/core/Kernel-Objects", "amber/core/Kernel-Promises"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Kernel-Infrastructure");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("AmberBootstrapInitialization", $globals.Object, "Kernel-Infrastructure");
- $core.addMethod(
- $core.method({
- selector: "organizeClasses",
- protocol: "organization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "organizeClasses\x0a\x09Smalltalk classes do: [ :each | each enterOrganization ]",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "classes", "enterOrganization"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv($globals.Smalltalk)._classes())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._enterOrganization();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"organizeClasses",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmberBootstrapInitialization.a$cls);
- $core.addMethod(
- $core.method({
- selector: "organizeMethods",
- protocol: "organization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "organizeMethods\x0a\x09Smalltalk classes do: [ :eachClass |\x0a\x09\x09eachClass definedMethods do: [ :eachMethod |\x0a\x09\x09\x09eachMethod methodClass methodOrganizationEnter: eachMethod andLeave: nil ] ]",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "classes", "definedMethods", "methodOrganizationEnter:andLeave:", "methodClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv($recv($globals.Smalltalk)._classes())._do_((function(eachClass){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv(eachClass)._definedMethods())._do_((function(eachMethod){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($recv(eachMethod)._methodClass())._methodOrganizationEnter_andLeave_(eachMethod,nil);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({eachMethod:eachMethod},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({eachClass:eachClass},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"organizeMethods",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmberBootstrapInitialization.a$cls);
- $core.addMethod(
- $core.method({
- selector: "run",
- protocol: "public api",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "run\x0a\x09SmalltalkImage initialize.\x0a\x09self\x0a\x09\x09organizeClasses;\x0a\x09\x09organizeMethods.\x0a\x09^ Smalltalk postLoad",
- referencedClasses: ["SmalltalkImage", "Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "organizeClasses", "organizeMethods", "postLoad"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.SmalltalkImage)._initialize();
- $self._organizeClasses();
- $self._organizeMethods();
- return $recv($globals.Smalltalk)._postLoad();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"run",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmberBootstrapInitialization.a$cls);
- $core.addClass("JSObjectProxy", $globals.ProtoObject, "Kernel-Infrastructure");
- $core.setSlots($globals.JSObjectProxy, ["jsObject"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "=",
- protocol: "comparing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "= anObject\x0a\x09^ anObject class == self class and: [\x0a\x09\x09JSObjectProxy compareJSObjectOfProxy: self withProxy: anObject ]",
- referencedClasses: ["JSObjectProxy"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "==", "class", "compareJSObjectOfProxy:withProxy:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv([$recv(anObject)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq_eq($self._class()))){
- return $recv($globals.JSObjectProxy)._compareJSObjectOfProxy_withProxy_(self,anObject);
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"=",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptObject",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptObject\x0a\x09\x22Answers the receiver in a stringify-friendly fashion\x22\x0a\x0a\x09^ jsObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.jsObject;
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "at:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "at: aString\x0a\x09<inlineJS: 'return $self.jsObject[aString]'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $self.jsObject[aString]"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self.jsObject[aString];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "at:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aBlock"],
- source: "at: aString ifAbsent: aBlock\x0a\x09\x22return the aString property or evaluate aBlock if the property is not defined on the object\x22\x0a\x09<inlineJS: '\x0a\x09\x09var obj = $self.jsObject;\x0a\x09\x09return aString in obj ? obj[aString] : aBlock._value();\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var obj = $self.jsObject;\x0a\x09\x09return aString in obj ? obj[aString] : aBlock._value();\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var obj = $self.jsObject;
- return aString in obj ? obj[aString] : aBlock._value();
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aString:aString,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "at:ifPresent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aBlock"],
- source: "at: aString ifPresent: aBlock\x0a\x09\x22return the evaluation of aBlock with the value if the property is defined or return nil\x22\x0a\x09<inlineJS: '\x0a\x09\x09var obj = $self.jsObject;\x0a\x09\x09return aString in obj ? aBlock._value_(obj[aString]) : nil;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var obj = $self.jsObject;\x0a\x09\x09return aString in obj ? aBlock._value_(obj[aString]) : nil;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var obj = $self.jsObject;
- return aString in obj ? aBlock._value_(obj[aString]) : nil;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:",{aString:aString,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "at:ifPresent:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aBlock", "anotherBlock"],
- source: "at: aString ifPresent: aBlock ifAbsent: anotherBlock\x0a\x09\x22return the evaluation of aBlock with the value if the property is defined\x0a\x09or return value of anotherBlock\x22\x0a\x09<inlineJS: '\x0a\x09\x09var obj = $self.jsObject;\x0a\x09\x09return aString in obj ? aBlock._value_(obj[aString]) : anotherBlock._value();\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var obj = $self.jsObject;\x0a\x09\x09return aString in obj ? aBlock._value_(obj[aString]) : anotherBlock._value();\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var obj = $self.jsObject;
- return aString in obj ? aBlock._value_(obj[aString]) : anotherBlock._value();
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:ifPresent:ifAbsent:",{aString:aString,aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "at:put:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "at: aString put: anObject\x0a\x09<inlineJS: 'return $self.jsObject[aString] = anObject'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $self.jsObject[aString] = anObject"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self.jsObject[aString] = anObject;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:put:",{aString:aString,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "catch:",
- protocol: "promises",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "catch: aBlock\x0a(NativeFunction isNativeFunction: (self at: #then))\x0a\x09ifTrue: [ ^ (TThenable >> #catch:) sendTo: jsObject arguments: {aBlock} ]\x0a\x09ifFalse: [ ^ super catch: aBlock ]",
- referencedClasses: ["NativeFunction", "TThenable"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "isNativeFunction:", "at:", "sendTo:arguments:", ">>", "catch:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($globals.NativeFunction)._isNativeFunction_($self._at_("then")))){
- return $recv($recv($globals.TThenable).__gt_gt("catch:"))._sendTo_arguments_($self.jsObject,[aBlock]);
- } else {
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._catch_.call($self,aBlock))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"catch:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "doesNotUnderstand:",
- protocol: "proxy",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMessage"],
- source: "doesNotUnderstand: aMessage\x0a\x09^ (JSObjectProxy lookupProperty: aMessage selector asJavaScriptPropertyName ofProxy: self)\x0a\x09\x09ifNil: [ super doesNotUnderstand: aMessage ]\x0a\x09\x09ifNotNil: [ :jsSelector | \x0a\x09\x09\x09JSObjectProxy \x0a\x09\x09\x09\x09forwardMessage: jsSelector \x0a\x09\x09\x09\x09withArguments: aMessage arguments\x0a\x09\x09\x09\x09ofProxy: self ]",
- referencedClasses: ["JSObjectProxy"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:ifNotNil:", "lookupProperty:ofProxy:", "asJavaScriptPropertyName", "selector", "doesNotUnderstand:", "forwardMessage:withArguments:ofProxy:", "arguments"]
- }, function ($methodClass){ return function (aMessage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.JSObjectProxy)._lookupProperty_ofProxy_($recv($recv(aMessage)._selector())._asJavaScriptPropertyName(),self);
- if($1 == null || $1.a$nil){
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._doesNotUnderstand_.call($self,aMessage))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- } else {
- var jsSelector;
- jsSelector=$1;
- return $recv($globals.JSObjectProxy)._forwardMessage_withArguments_ofProxy_(jsSelector,$recv(aMessage)._arguments(),self);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"doesNotUnderstand:",{aMessage:aMessage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "in:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aValuable"],
- source: "in: aValuable\x0a\x09^ aValuable value: jsObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:"]
- }, function ($methodClass){ return function (aValuable){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aValuable)._value_($self.jsObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"in:",{aValuable:aValuable})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "isThenable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isThenable\x0a\x09^ NativeFunction isNativeFunction: (self at: #then)",
- referencedClasses: ["NativeFunction"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["isNativeFunction:", "at:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.NativeFunction)._isNativeFunction_($self._at_("then"));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isThenable",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "jsObject",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "jsObject\x0a\x09^ jsObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.jsObject;
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "keysAndValuesDo:",
- protocol: "enumerating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "keysAndValuesDo: aBlock\x0a\x09<inlineJS: '\x0a\x09\x09var o = $self.jsObject;\x0a\x09\x09for(var i in o) {\x0a\x09\x09\x09aBlock._value_value_(i, o[i]);\x0a\x09\x09}\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var o = $self.jsObject;\x0a\x09\x09for(var i in o) {\x0a\x09\x09\x09aBlock._value_value_(i, o[i]);\x0a\x09\x09}\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var o = $self.jsObject;
- for(var i in o) {
- aBlock._value_value_(i, o[i]);
- }
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"keysAndValuesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "on:do:",
- protocol: "promises",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aBlock"],
- source: "on: aClass do: aBlock\x0a(NativeFunction isNativeFunction: (self at: #then))\x0a\x09ifTrue: [ ^ (TThenable >> #on:do:) sendTo: jsObject arguments: {aClass. aBlock} ]\x0a\x09ifFalse: [ ^ super on: aClass do: aBlock ]",
- referencedClasses: ["NativeFunction", "TThenable"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "isNativeFunction:", "at:", "sendTo:arguments:", ">>", "on:do:"]
- }, function ($methodClass){ return function (aClass,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($globals.NativeFunction)._isNativeFunction_($self._at_("then")))){
- return $recv($recv($globals.TThenable).__gt_gt("on:do:"))._sendTo_arguments_($self.jsObject,[aClass,aBlock]);
- } else {
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._on_do_.call($self,aClass,aBlock))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:do:",{aClass:aClass,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "printOn: aStream\x0a\x09aStream nextPutAll: self printString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "printString"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._nextPutAll_($self._printString());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "printString",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "printString\x0a\x09<inlineJS: '\x0a\x09\x09var js = $self.jsObject;\x0a\x09\x09return !js ? \x22<<malformed JS object proxy>>\x22 : js.toString\x0a\x09\x09\x09? js.toString()\x0a\x09\x09\x09: Object.prototype.toString.call(js)\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var js = $self.jsObject;\x0a\x09\x09return !js ? \x22<<malformed JS object proxy>>\x22 : js.toString\x0a\x09\x09\x09? js.toString()\x0a\x09\x09\x09: Object.prototype.toString.call(js)\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var js = $self.jsObject;
- return !js ? "<<malformed JS object proxy>>" : js.toString
- ? js.toString()
- : Object.prototype.toString.call(js)
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "putOn:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "putOn: aStream\x0a\x09aStream nextPutJSObject: jsObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutJSObject:"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._nextPutJSObject_($self.jsObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"putOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "removeKey:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "removeKey: aString\x0a\x09<inlineJS: 'delete $self.jsObject[aString]; return aString'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["delete $self.jsObject[aString]; return aString"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- delete $self.jsObject[aString]; return aString;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeKey:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "then:",
- protocol: "promises",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlockOrArray"],
- source: "then: aBlockOrArray\x0aself isThenable\x0a\x09ifTrue: [ ^ (TThenable >> #then:) sendTo: jsObject arguments: {aBlockOrArray} ]\x0a\x09ifFalse: [ ^ super then: aBlockOrArray ]",
- referencedClasses: ["TThenable"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "isThenable", "sendTo:arguments:", ">>", "then:"]
- }, function ($methodClass){ return function (aBlockOrArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._isThenable())){
- return $recv($recv($globals.TThenable).__gt_gt("then:"))._sendTo_arguments_($self.jsObject,[aBlockOrArray]);
- } else {
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._then_.call($self,aBlockOrArray))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"then:",{aBlockOrArray:aBlockOrArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "addObjectVariablesTo:ofProxy:",
- protocol: "proxy",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDictionary", "aProxy"],
- source: "addObjectVariablesTo: aDictionary ofProxy: aProxy\x0a\x09<inlineJS: '\x0a\x09\x09var jsObject = aProxy.jsObject;\x0a\x09\x09for(var i in jsObject) {\x0a\x09\x09\x09aDictionary._at_put_(i, jsObject[i]);\x0a\x09\x09}\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var jsObject = aProxy.jsObject;\x0a\x09\x09for(var i in jsObject) {\x0a\x09\x09\x09aDictionary._at_put_(i, jsObject[i]);\x0a\x09\x09}\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aDictionary,aProxy){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var jsObject = aProxy.jsObject;
- for(var i in jsObject) {
- aDictionary._at_put_(i, jsObject[i]);
- }
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addObjectVariablesTo:ofProxy:",{aDictionary:aDictionary,aProxy:aProxy})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy.a$cls);
- $core.addMethod(
- $core.method({
- selector: "associationsOfProxy:",
- protocol: "proxy",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aProxy"],
- source: "associationsOfProxy: aProxy\x0a\x09<inlineJS: '\x0a\x09\x09var jsObject = aProxy.jsObject, result = [];\x0a\x09\x09for(var i in jsObject) {\x0a\x09\x09\x09result.push(i.__minus_gt(jsObject[i]));\x0a\x09\x09}\x0a\x09\x09return result;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var jsObject = aProxy.jsObject, result = [];\x0a\x09\x09for(var i in jsObject) {\x0a\x09\x09\x09result.push(i.__minus_gt(jsObject[i]));\x0a\x09\x09}\x0a\x09\x09return result;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aProxy){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var jsObject = aProxy.jsObject, result = [];
- for(var i in jsObject) {
- result.push(i.__minus_gt(jsObject[i]));
- }
- return result;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"associationsOfProxy:",{aProxy:aProxy})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy.a$cls);
- $core.addMethod(
- $core.method({
- selector: "compareJSObjectOfProxy:withProxy:",
- protocol: "proxy",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aProxy", "anotherProxy"],
- source: "compareJSObjectOfProxy: aProxy withProxy: anotherProxy\x0a<inlineJS: '\x0a\x09var anotherJSObject = anotherProxy.a$cls ? anotherProxy.jsObject : anotherProxy;\x0a\x09return aProxy.jsObject === anotherJSObject\x0a'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09var anotherJSObject = anotherProxy.a$cls ? anotherProxy.jsObject : anotherProxy;\x0a\x09return aProxy.jsObject === anotherJSObject"]]],
- messageSends: []
- }, function ($methodClass){ return function (aProxy,anotherProxy){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var anotherJSObject = anotherProxy.a$cls ? anotherProxy.jsObject : anotherProxy;
- return aProxy.jsObject === anotherJSObject;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"compareJSObjectOfProxy:withProxy:",{aProxy:aProxy,anotherProxy:anotherProxy})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy.a$cls);
- $core.addMethod(
- $core.method({
- selector: "forwardMessage:withArguments:ofProxy:",
- protocol: "proxy",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anArray", "aProxy"],
- source: "forwardMessage: aString withArguments: anArray ofProxy: aProxy\x0a\x09<inlineJS: '\x0a\x09\x09return $core.accessJavaScript(aProxy._jsObject(), aString, anArray);\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09return $core.accessJavaScript(aProxy._jsObject(), aString, anArray);\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,anArray,aProxy){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $core.accessJavaScript(aProxy._jsObject(), aString, anArray);
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"forwardMessage:withArguments:ofProxy:",{aString:aString,anArray:anArray,aProxy:aProxy})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy.a$cls);
- $core.addMethod(
- $core.method({
- selector: "jsObject:ofProxy:",
- protocol: "proxy",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aJSObject", "aProxy"],
- source: "jsObject: aJSObject ofProxy: aProxy\x0a\x09<inlineJS: 'aProxy.jsObject = aJSObject'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["aProxy.jsObject = aJSObject"]]],
- messageSends: []
- }, function ($methodClass){ return function (aJSObject,aProxy){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- aProxy.jsObject = aJSObject;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"jsObject:ofProxy:",{aJSObject:aJSObject,aProxy:aProxy})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy.a$cls);
- $core.addMethod(
- $core.method({
- selector: "lookupProperty:ofProxy:",
- protocol: "proxy",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aProxy"],
- source: "lookupProperty: aString ofProxy: aProxy\x0a\x09\x22Looks up a property in JS object.\x0a\x09Answer the property if it is present, or nil if it is not present.\x22\x0a\x09\x0a\x09<inlineJS: 'return aString in aProxy._jsObject() ? aString : nil'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return aString in aProxy._jsObject() ? aString : nil"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,aProxy){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return aString in aProxy._jsObject() ? aString : nil;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"lookupProperty:ofProxy:",{aString:aString,aProxy:aProxy})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy.a$cls);
- $core.addMethod(
- $core.method({
- selector: "null",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "null\x0a\x09<inlineJS: 'return null'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return null"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return null;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"null",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy.a$cls);
- $core.addMethod(
- $core.method({
- selector: "on:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aJSObject"],
- source: "on: aJSObject\x0a\x09| instance |\x0a\x09instance := self new.\x0a\x09self jsObject: aJSObject ofProxy: instance.\x0a\x09^ instance",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "jsObject:ofProxy:"]
- }, function ($methodClass){ return function (aJSObject){
- var self=this,$self=this;
- var instance;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- instance=$self._new();
- $self._jsObject_ofProxy_(aJSObject,instance);
- return instance;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:",{aJSObject:aJSObject,instance:instance})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy.a$cls);
- $core.addMethod(
- $core.method({
- selector: "undefined",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "undefined\x0a\x09<inlineJS: 'return undefined'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return undefined"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return undefined;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"undefined",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy.a$cls);
- $core.addClass("Organizer", $globals.Object, "Kernel-Infrastructure");
- $core.setSlots($globals.Organizer, ["elements"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.Organizer.comment="I represent categorization information. \x0a\x0a## API\x0a\x0aUse `#addElement:` and `#removeElement:` to manipulate instances.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "addElement:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "addElement: anObject\x0a\x09self elements add: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "elements"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._elements())._add_(anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addElement:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Organizer);
- $core.addMethod(
- $core.method({
- selector: "elements",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "elements\x0a\x09^ elements",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.elements;
- }; }),
- $globals.Organizer);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x09elements := Set new",
- referencedClasses: ["Set"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.elements=$recv($globals.Set)._new();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Organizer);
- $core.addMethod(
- $core.method({
- selector: "removeElement:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "removeElement: anObject\x0a\x09self elements remove: anObject ifAbsent: []",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["remove:ifAbsent:", "elements"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._elements())._remove_ifAbsent_(anObject,(function(){
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeElement:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Organizer);
- $core.addClass("ClassOrganizer", $globals.Organizer, "Kernel-Infrastructure");
- $core.setSlots($globals.ClassOrganizer, ["traitOrBehavior"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ClassOrganizer.comment="I am an organizer specific to classes. I hold method categorization information for classes.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "addElement:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- 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)",
- referencedClasses: ["SystemAnnouncer", "ProtocolAdded"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addElement:", "announce:", "current", "protocol:", "new", "theClass:", "theClass", "yourself"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._addElement_.call($self,aString))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $1=$recv($globals.SystemAnnouncer)._current();
- $2=$recv($globals.ProtocolAdded)._new();
- $recv($2)._protocol_(aString);
- $recv($2)._theClass_($self._theClass());
- $recv($1)._announce_($recv($2)._yourself());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addElement:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassOrganizer);
- $core.addMethod(
- $core.method({
- selector: "removeElement:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- 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)",
- referencedClasses: ["SystemAnnouncer", "ProtocolRemoved"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["removeElement:", "announce:", "current", "protocol:", "new", "theClass:", "theClass", "yourself"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._removeElement_.call($self,aString))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $1=$recv($globals.SystemAnnouncer)._current();
- $2=$recv($globals.ProtocolRemoved)._new();
- $recv($2)._protocol_(aString);
- $recv($2)._theClass_($self._theClass());
- $recv($1)._announce_($recv($2)._yourself());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeElement:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassOrganizer);
- $core.addMethod(
- $core.method({
- selector: "theClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theClass\x0a\x09^ traitOrBehavior",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.traitOrBehavior;
- }; }),
- $globals.ClassOrganizer);
- $core.addMethod(
- $core.method({
- selector: "theClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "theClass: aClass\x0a\x09traitOrBehavior := aClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- $self.traitOrBehavior=aClass;
- return self;
- }; }),
- $globals.ClassOrganizer);
- $core.addMethod(
- $core.method({
- selector: "on:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "on: aClass\x0a\x09^ self new\x0a\x09\x09theClass: aClass;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["theClass:", "new", "yourself"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._theClass_(aClass);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassOrganizer.a$cls);
- $core.addClass("PackageOrganizer", $globals.Organizer, "Kernel-Infrastructure");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.PackageOrganizer.comment="I am an organizer specific to packages. I hold classes categorization information.";
- //>>excludeEnd("ide");
- $core.addClass("Package", $globals.Object, "Kernel-Infrastructure");
- $core.setSlots($globals.Package, ["contextBlock", "basicTransport", "name", "transport", "imports", "dirty", "organization", "isReady"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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'";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "basicTransport",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "basicTransport\x0a\x09\x22Answer the transport literal JavaScript object as setup in the JavaScript file, if any\x22\x0a\x09\x0a\x09^ basicTransport",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.basicTransport;
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "beClean",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "beClean\x0a\x09dirty := false.\x0a\x09\x0a\x09SystemAnnouncer current announce: (PackageClean new\x0a\x09\x09package: self;\x0a\x09\x09yourself)",
- referencedClasses: ["SystemAnnouncer", "PackageClean"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["announce:", "current", "package:", "new", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $self.dirty=false;
- $1=$recv($globals.SystemAnnouncer)._current();
- $2=$recv($globals.PackageClean)._new();
- $recv($2)._package_(self);
- $recv($1)._announce_($recv($2)._yourself());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"beClean",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "beDirty",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "beDirty\x0a\x09dirty := true.\x0a\x09\x0a\x09SystemAnnouncer current announce: (PackageDirty new\x0a\x09\x09package: self;\x0a\x09\x09yourself)",
- referencedClasses: ["SystemAnnouncer", "PackageDirty"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["announce:", "current", "package:", "new", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $self.dirty=true;
- $1=$recv($globals.SystemAnnouncer)._current();
- $2=$recv($globals.PackageDirty)._new();
- $recv($2)._package_(self);
- $recv($1)._announce_($recv($2)._yourself());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"beDirty",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "classTemplate",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classTemplate\x0a\x09^ String streamContents: [ :stream | stream\x0a\x09\x09write: 'Object subclass: #NameOfSubclass'; lf;\x0a\x09\x09tab; write: 'instanceVariableNames: '''''; lf;\x0a\x09\x09tab; write: 'package: '; print: self name ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "write:", "lf", "tab", "print:", "name"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(stream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(stream)._write_("Object subclass: #NameOfSubclass")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._tab()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["tab"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._write_("instanceVariableNames: ''")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(stream)._lf();
- $recv(stream)._tab();
- $recv(stream)._write_("package: ");
- return $recv(stream)._print_($self._name());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"classTemplate",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "classes",
- protocol: "classes",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classes\x0a\x09^ self organization elements copy",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copy", "elements", "organization"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($self._organization())._elements())._copy();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"classes",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "context",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "context\x0a\x09^ self contextBlock\x0a\x09\x09ifNil: [ #{} ]\x0a\x09\x09ifNotNil: [ :block |\x0a\x09\x09\x09| result |\x0a\x09\x09\x09result := Dictionary new.\x0a\x09\x09\x09block value keysAndValuesDo: [ :key :value | result at: key put: value ].\x0a\x09\x09\x09result ]",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:ifNotNil:", "contextBlock", "new", "keysAndValuesDo:", "value", "at:put:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._contextBlock();
- if($1 == null || $1.a$nil){
- return $globals.HashedCollection._newFromPairs_([]);
- } else {
- var result,block;
- block=$1;
- result=$recv($globals.Dictionary)._new();
- $recv($recv(block)._value())._keysAndValuesDo_((function(key,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(result)._at_put_(key,value);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return result;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"context",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "contextBlock",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "contextBlock\x0a\x09^ contextBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.contextBlock;
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "contextBlock:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "contextBlock: aBlock\x0a\x09contextBlock := aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- $self.contextBlock=aBlock;
- return self;
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "contextFunctionSource",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "contextFunctionSource\x0a\x09^ (self imports reject: #isString)\x0a\x09\x09ifEmpty: [ nil ]\x0a\x09\x09ifNotEmpty: [ :namedImports |\x0a\x09\x09\x09'function () { return {',\x0a\x09\x09\x09(',' join: (namedImports collect: [ :each | each key, ':', each key ])),\x0a\x09\x09\x09'}; }' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifEmpty:ifNotEmpty:", "reject:", "imports", ",", "join:", "collect:", "key"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($self._imports())._reject_("isString"))._ifEmpty_ifNotEmpty_((function(){
- return nil;
- }),(function(namedImports){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(["function () { return {".__comma(","._join_($recv(namedImports)._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [$recv($recv([$recv(each)._key()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["key"]=1
- //>>excludeEnd("ctx");
- ][0]).__comma(":")).__comma($recv(each)._key())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,3)});
- //>>excludeEnd("ctx");
- }))))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma("}; }")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({namedImports:namedImports},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"contextFunctionSource",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "definition",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "definition\x0a\x09^ String streamContents: [ :stream | stream\x0a\x09\x09write: self class name; lf;\x0a\x09\x09tab; write: 'named: '; print: self name; lf;\x0a\x09\x09tab; write: { 'imports: '. self importsDefinition }; lf;\x0a\x09\x09tab; write: { 'transport: ('. self transport definition. ')' } ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "write:", "name", "class", "lf", "tab", "print:", "importsDefinition", "definition", "transport"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(stream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(stream)._write_([$recv($self._class())._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["name"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._tab()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["tab"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._write_("named: ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(stream)._print_($self._name());
- [$recv(stream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._tab()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["tab"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._write_(["imports: ",$self._importsDefinition()])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv(stream)._lf();
- $recv(stream)._tab();
- return $recv(stream)._write_(["transport: (",$recv($self._transport())._definition(),")"]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"definition",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "imports",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "imports\x0a\x09^ imports ifNil: [\x0a\x09\x09self imports: #().\x0a\x09\x09imports ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "imports:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.imports;
- if($1 == null || $1.a$nil){
- $self._imports_([]);
- return $self.imports;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"imports",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "imports:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anArray"],
- source: "imports: anArray\x0a\x09self validateImports: anArray.\x0a\x09imports := anArray asSet",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["validateImports:", "asSet"]
- }, function ($methodClass){ return function (anArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._validateImports_(anArray);
- $self.imports=$recv(anArray)._asSet();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"imports:",{anArray:anArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "importsAsJson",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "importsAsJson\x0a\x0a\x09^ self sortedImportsAsArray collect: [ :each |\x0a\x09\x09each isString\x0a\x09\x09\x09ifTrue: [ each ]\x0a\x09\x09\x09ifFalse: [ each key, '=', each value ]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "sortedImportsAsArray", "ifTrue:ifFalse:", "isString", ",", "key", "value"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._sortedImportsAsArray())._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(each)._isString())){
- return each;
- } else {
- return [$recv($recv($recv(each)._key()).__comma("=")).__comma($recv(each)._value())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"importsAsJson",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "importsDefinition",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "importsDefinition\x0a\x09^ String streamContents: [ :stream |\x0a\x09\x09stream write: '{'.\x0a\x09\x09self sortedImportsAsArray\x0a\x09\x09\x09do: [ :each | stream print: each ]\x0a\x09\x09\x09separatedBy: [ stream write: '. ' ].\x0a\x09\x09stream write: '}' ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "write:", "do:separatedBy:", "sortedImportsAsArray", "print:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(stream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(stream)._write_("{")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($self._sortedImportsAsArray())._do_separatedBy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(stream)._print_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [$recv(stream)._write_(". ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- return $recv(stream)._write_("}");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"importsDefinition",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "importsFromJson:",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anArray"],
- source: "importsFromJson: anArray\x0a\x09\x22Parses array of string, eg. #('asdf' 'qwer=tyuo')\x0a\x09into array of Strings and Associations,\x0a\x09eg. {'asdf'. 'qwer'->'tyuo'}\x22\x0a\x0a\x09^ anArray collect: [ :each |\x0a\x09\x09| split |\x0a\x09\x09split := each tokenize: '='.\x0a\x09\x09split size = 1\x0a\x09\x09\x09ifTrue: [ split first ]\x0a\x09\x09\x09ifFalse: [ split first -> split second ]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "tokenize:", "ifTrue:ifFalse:", "=", "size", "first", "->", "second"]
- }, function ($methodClass){ return function (anArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(anArray)._collect_((function(each){
- var split;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- split=$recv(each)._tokenize_("=");
- if($core.assert($recv($recv(split)._size()).__eq((1)))){
- return [$recv(split)._first()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["first"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- return $recv($recv(split)._first()).__minus_gt($recv(split)._second());
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each,split:split},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"importsFromJson:",{anArray:anArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x0a\x09organization := PackageOrganizer new.\x0a\x09contextBlock := nil.\x0a\x09dirty := nil.\x0a\x09imports := nil.\x0a\x09isReady := Promise new.\x0a\x09transport := nil",
- referencedClasses: ["PackageOrganizer", "Promise"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.organization=[$recv($globals.PackageOrganizer)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self.contextBlock=nil;
- $self.dirty=nil;
- $self.imports=nil;
- $self.isReady=$recv($globals.Promise)._new();
- $self.transport=nil;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "isDirty",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isDirty\x0a\x09^ dirty ifNil: [ false ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.dirty;
- if($1 == null || $1.a$nil){
- return false;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isDirty",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "isPackage",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isPackage\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "isReady",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isReady\x0a\x09^ isReady",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.isReady;
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "isReady:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPromise"],
- source: "isReady: aPromise\x0a\x09isReady := aPromise",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aPromise){
- var self=this,$self=this;
- $self.isReady=aPromise;
- return self;
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "javaScriptDescriptor:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "javaScriptDescriptor: anObject\x0a\x09| basicEval basicContext basicImports |\x0a\x0a\x09basicImports := anObject at: 'imports' ifAbsent: [ #() ].\x0a\x09self imports: (self importsFromJson: basicImports).\x0a\x0a\x09basicTransport := anObject at: 'transport' ifAbsent: [].\x0a\x09anObject at: 'isReady' ifPresent: [ :aPromise | self isReady: aPromise ].\x0a\x0a\x09\x22TODO remove, backward compatibility\x22\x0a\x09anObject at: 'innerEval' ifPresent: [ :evalBlock |\x0a\x09\x09self contextFunctionSource ifNotNil: [ :source |\x0a\x09\x09\x09anObject at: 'context' put: (evalBlock value: '(', source, ')') ] ].\x0a\x0a\x09basicContext := anObject at: 'context' ifAbsent: [ nil asJavaScriptObject ].\x0a\x09self contextBlock: basicContext",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:", "imports:", "importsFromJson:", "at:ifPresent:", "isReady:", "ifNotNil:", "contextFunctionSource", "at:put:", "value:", ",", "asJavaScriptObject", "contextBlock:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- var basicEval,basicContext,basicImports;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- basicImports=[$recv(anObject)._at_ifAbsent_("imports",(function(){
- return [];
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:ifAbsent:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._imports_($self._importsFromJson_(basicImports));
- $self.basicTransport=[$recv(anObject)._at_ifAbsent_("transport",(function(){
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:ifAbsent:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(anObject)._at_ifPresent_("isReady",(function(aPromise){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._isReady_(aPromise);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({aPromise:aPromise},$ctx1,3)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:ifPresent:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(anObject)._at_ifPresent_("innerEval",(function(evalBlock){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $1=$self._contextFunctionSource();
- if($1 == null || $1.a$nil){
- return $1;
- } else {
- var source;
- source=$1;
- return $recv(anObject)._at_put_("context",$recv(evalBlock)._value_([$recv("(".__comma(source)).__comma(")")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]));
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({evalBlock:evalBlock},$ctx1,4)});
- //>>excludeEnd("ctx");
- }));
- basicContext=$recv(anObject)._at_ifAbsent_("context",(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $nil._asJavaScriptObject();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
- //>>excludeEnd("ctx");
- }));
- $self._contextBlock_(basicContext);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"javaScriptDescriptor:",{anObject:anObject,basicEval:basicEval,basicContext:basicContext,basicImports:basicImports})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "loadDependencies",
- protocol: "dependencies",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["loadDependencyClasses", "remove:ifAbsent:", "asSet", "collect:", "package", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var classes,packages;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- classes=$self._loadDependencyClasses();
- $1=$recv($recv(classes)._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._package();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))._asSet();
- $recv($1)._remove_ifAbsent_(self,(function(){
- }));
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"loadDependencies",{classes:classes,packages:packages})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "loadDependencyClasses",
- protocol: "dependencies",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "loadDependencyClasses\x0a\x09\x22Returns classes needed at the time of loading a package.\x0a\x09These are all that are used to subclass\x0a\x09and to define an extension method\x0a\x09as well as all traits used\x22\x0a\x09\x0a\x09| starCategoryName |\x0a\x09starCategoryName := '*', self name.\x0a\x09^ (self classes collect: [ :each | each superclass ]) asSet\x0a\x09\x09addAll: (Smalltalk classes select: [ :each |\x0a\x09\x09\x09({each. each theMetaClass} copyWithout: nil) anySatisfy: [ :any |\x0a\x09\x09\x09\x09(any protocols includes: starCategoryName) and: [\x0a\x09\x09\x09\x09\x09(any ownMethodsInProtocol: starCategoryName) notEmpty ]]]);\x0a\x09\x09addAll: (Array streamContents: [ :as | self traitCompositions valuesDo: [ :each | as write: (each collect: [ :eachTT | eachTT trait ])]]);\x0a\x09\x09remove: nil ifAbsent: [];\x0a\x09\x09yourself",
- referencedClasses: ["Smalltalk", "Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "name", "addAll:", "asSet", "collect:", "classes", "superclass", "select:", "anySatisfy:", "copyWithout:", "theMetaClass", "and:", "includes:", "protocols", "notEmpty", "ownMethodsInProtocol:", "streamContents:", "valuesDo:", "traitCompositions", "write:", "trait", "remove:ifAbsent:", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var starCategoryName;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- starCategoryName="*".__comma($self._name());
- $1=$recv([$recv([$self._classes()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["classes"]=1
- //>>excludeEnd("ctx");
- ][0])._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._superclass();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collect:"]=1
- //>>excludeEnd("ctx");
- ][0])._asSet();
- [$recv($1)._addAll_($recv($recv($globals.Smalltalk)._classes())._select_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv([each,$recv(each)._theMetaClass()])._copyWithout_(nil))._anySatisfy_((function(any){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv(any)._protocols())._includes_(starCategoryName))){
- return $recv($recv(any)._ownMethodsInProtocol_(starCategoryName))._notEmpty();
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({any:any},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- })))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["addAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._addAll_($recv($globals.Array)._streamContents_((function(as){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._traitCompositions())._valuesDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(as)._write_($recv(each)._collect_((function(eachTT){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx4) {
- //>>excludeEnd("ctx");
- return $recv(eachTT)._trait();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx4) {$ctx4.fillBlock({eachTT:eachTT},$ctx3,7)});
- //>>excludeEnd("ctx");
- })));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,6)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({as:as},$ctx1,5)});
- //>>excludeEnd("ctx");
- })));
- $recv($1)._remove_ifAbsent_(nil,(function(){
- }));
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"loadDependencyClasses",{starCategoryName:starCategoryName})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "name",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "name\x0a\x09^ name",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.name;
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "name:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "name: aString\x0a\x09name := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.name=aString;
- return self;
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "organization",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "organization\x0a\x09^ organization",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.organization;
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "printOn: aStream\x0a\x09super printOn: aStream.\x0a\x09aStream \x0a\x09\x09nextPutAll: ' (';\x0a\x09\x09nextPutAll: self name;\x0a\x09\x09nextPutAll: ')'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["printOn:", "nextPutAll:", "name"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._nextPutAll_(" (")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._nextPutAll_($self._name())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._nextPutAll_(")");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "setupClasses",
- protocol: "classes",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "setupClasses\x0a\x09self classes do: [ :each | each initialize ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "classes", "initialize"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._classes())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._initialize();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setupClasses",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "sortedClasses",
- protocol: "classes",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["sortedClasses:", "class", "classes"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._class())._sortedClasses_($self._classes());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sortedClasses",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "sortedImportsAsArray",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sortedImportsAsArray\x0a\x09\x22Answer imports sorted first by type (associations first),\x0a\x09then by value\x22\x0a\x0a\x09^ self imports asArray\x0a\x09\x09sorted: [ :a :b |\x0a\x09\x09\x09a isString not & b isString or: [\x0a\x09\x09\x09\x09a isString = b isString and: [\x0a\x09\x09\x09\x09\x09a value <= b value ]]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["sorted:", "asArray", "imports", "or:", "&", "not", "isString", "and:", "=", "<=", "value"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($self._imports())._asArray())._sorted_((function(a,b){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv([$recv(a)._isString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["isString"]=1
- //>>excludeEnd("ctx");
- ][0])._not()).__and([$recv(b)._isString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["isString"]=2
- //>>excludeEnd("ctx");
- ][0]))){
- return true;
- } else {
- if($core.assert($recv([$recv(a)._isString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["isString"]=3
- //>>excludeEnd("ctx");
- ][0]).__eq($recv(b)._isString()))){
- return $recv([$recv(a)._value()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["value"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt_eq($recv(b)._value());
- } else {
- return false;
- }
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sortedImportsAsArray",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "traitCompositions",
- protocol: "dependencies",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "traitCompositions\x0a\x09| traitCompositions |\x0a\x09traitCompositions := Dictionary new.\x0a\x09self classes do: [ :eachClass | eachClass includingPossibleMetaDo: [ :each |\x0a\x09\x09traitCompositions at: each put: each traitComposition ] ].\x0a\x09^ traitCompositions reject: [ :each | each isEmpty ]",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "do:", "classes", "includingPossibleMetaDo:", "at:put:", "traitComposition", "reject:", "isEmpty"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var traitCompositions;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- traitCompositions=$recv($globals.Dictionary)._new();
- $recv($self._classes())._do_((function(eachClass){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(eachClass)._includingPossibleMetaDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(traitCompositions)._at_put_(each,$recv(each)._traitComposition());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({eachClass:eachClass},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return $recv(traitCompositions)._reject_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._isEmpty();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"traitCompositions",{traitCompositions:traitCompositions})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "transport",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "transport\x0a\x09^ transport ifNil: [ \x0a\x09\x09self transport: (PackageTransport fromJson: self basicTransport).\x0a\x09\x09transport ]",
- referencedClasses: ["PackageTransport"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "transport:", "fromJson:", "basicTransport"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.transport;
- if($1 == null || $1.a$nil){
- $self._transport_($recv($globals.PackageTransport)._fromJson_($self._basicTransport()));
- return $self.transport;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"transport",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "transport:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackageTransport"],
- source: "transport: aPackageTransport\x0a\x09transport := aPackageTransport.\x0a\x09aPackageTransport package: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["package:"]
- }, function ($methodClass){ return function (aPackageTransport){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.transport=aPackageTransport;
- $recv(aPackageTransport)._package_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"transport:",{aPackageTransport:aPackageTransport})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "validateImports:",
- protocol: "validation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "validateImports: aCollection\x0a\x0a\x09aCollection do: [ :import |\x0a\x09\x09import isString ifFalse: [\x0a\x09\x09\x09(import respondsTo: #key) ifFalse: [\x0a\x09\x09\x09\x09self error: 'Imports must be Strings or Associations' ].\x0a\x09\x09\x09import key isString & import value isString ifFalse: [\x0a\x09\x09\x09\x09self error: 'Key and value must be Strings' ].\x0a\x09\x09\x09(import key match: '^[a-zA-Z][a-zA-Z0-9]*$') ifFalse: [\x0a\x09\x09\x09\x09self error: 'Keys must be identifiers' ]]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "ifFalse:", "isString", "respondsTo:", "error:", "&", "key", "value", "match:"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aCollection)._do_((function(import_){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if(!$core.assert([$recv(import_)._isString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["isString"]=1
- //>>excludeEnd("ctx");
- ][0])){
- if(!$core.assert($recv(import_)._respondsTo_("key"))){
- [$self._error_("Imports must be Strings or Associations")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["error:"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- if(!$core.assert($recv([$recv([$recv(import_)._key()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["key"]=1
- //>>excludeEnd("ctx");
- ][0])._isString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["isString"]=2
- //>>excludeEnd("ctx");
- ][0]).__and($recv($recv(import_)._value())._isString()))){
- [$self._error_("Key and value must be Strings")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["error:"]=2
- //>>excludeEnd("ctx");
- ][0];
- }
- if(!$core.assert($recv($recv(import_)._key())._match_("^[a-zA-Z][a-zA-Z0-9]*$"))){
- return $self._error_("Keys must be identifiers");
- }
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({import_:import_},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"validateImports:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.setSlots($globals.Package.a$cls, ["defaultCommitPathJs", "defaultCommitPathSt"]);
- $core.addMethod(
- $core.method({
- selector: "named:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackageName"],
- source: "named: aPackageName\x0a\x09^ Smalltalk \x0a\x09\x09packageAt: aPackageName\x0a\x09\x09ifAbsent: [ \x0a\x09\x09\x09Smalltalk createPackage: aPackageName ]",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["packageAt:ifAbsent:", "createPackage:"]
- }, function ($methodClass){ return function (aPackageName){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Smalltalk)._packageAt_ifAbsent_(aPackageName,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.Smalltalk)._createPackage_(aPackageName);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"named:",{aPackageName:aPackageName})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package.a$cls);
- $core.addMethod(
- $core.method({
- selector: "named:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackageName", "aBlock"],
- source: "named: aPackageName ifAbsent: aBlock\x0a\x09^ Smalltalk packageAt: aPackageName ifAbsent: aBlock",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["packageAt:ifAbsent:"]
- }, function ($methodClass){ return function (aPackageName,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Smalltalk)._packageAt_ifAbsent_(aPackageName,aBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"named:ifAbsent:",{aPackageName:aPackageName,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package.a$cls);
- $core.addMethod(
- $core.method({
- selector: "named:imports:transport:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackageName", "anArray", "aTransport"],
- source: "named: aPackageName imports: anArray transport: aTransport\x0a\x09| pkg |\x0a\x09\x0a\x09pkg := self named: aPackageName.\x0a\x09pkg\x0a\x09\x09imports: anArray;\x0a\x09\x09transport: aTransport;\x0a\x09\x09beDirty.\x0a\x09\x0a\x09^ pkg",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["named:", "imports:", "transport:", "beDirty"]
- }, function ($methodClass){ return function (aPackageName,anArray,aTransport){
- var self=this,$self=this;
- var pkg;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- pkg=$self._named_(aPackageName);
- $1=pkg;
- $recv($1)._imports_(anArray);
- $recv($1)._transport_(aTransport);
- $recv($1)._beDirty();
- return pkg;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"named:imports:transport:",{aPackageName:aPackageName,anArray:anArray,aTransport:aTransport,pkg:pkg})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package.a$cls);
- $core.addMethod(
- $core.method({
- selector: "named:javaScriptDescriptor:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "named: aString javaScriptDescriptor: anObject\x0a\x09| pkg |\x0a\x09\x0a\x09pkg := Smalltalk createPackage: aString.\x0a\x09pkg javaScriptDescriptor: anObject.\x0a\x09^ pkg",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["createPackage:", "javaScriptDescriptor:"]
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- var pkg;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- pkg=$recv($globals.Smalltalk)._createPackage_(aString);
- $recv(pkg)._javaScriptDescriptor_(anObject);
- return pkg;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"named:javaScriptDescriptor:",{aString:aString,anObject:anObject,pkg:pkg})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package.a$cls);
- $core.addMethod(
- $core.method({
- selector: "named:transport:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackageName", "aTransport"],
- source: "named: aPackageName transport: aTransport\x0a\x09| pkg |\x0a\x09\x0a\x09pkg := self named: aPackageName.\x0a\x09pkg transport: aTransport; beDirty.\x0a\x09\x0a\x09^ pkg",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["named:", "transport:", "beDirty"]
- }, function ($methodClass){ return function (aPackageName,aTransport){
- var self=this,$self=this;
- var pkg;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- pkg=$self._named_(aPackageName);
- $1=pkg;
- $recv($1)._transport_(aTransport);
- $recv($1)._beDirty();
- return pkg;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"named:transport:",{aPackageName:aPackageName,aTransport:aTransport,pkg:pkg})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package.a$cls);
- $core.addMethod(
- $core.method({
- selector: "new:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "new: aString\x0a\x09^ Package new\x0a\x09\x09name: aString;\x0a\x09\x09yourself",
- referencedClasses: ["Package"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["name:", "new", "yourself"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.Package)._new();
- $recv($1)._name_(aString);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"new:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package.a$cls);
- $core.addMethod(
- $core.method({
- selector: "sortedClasses:",
- protocol: "sorting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["classes"],
- source: "sortedClasses: classes\x0a\x09^ Array streamContents: [ :stream | stream << (ClassBuilder sortClasses: classes) ]",
- referencedClasses: ["Array", "ClassBuilder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "<<", "sortClasses:"]
- }, function ($methodClass){ return function (classes){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Array)._streamContents_((function(stream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(stream).__lt_lt($recv($globals.ClassBuilder)._sortClasses_(classes));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sortedClasses:",{classes:classes})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package.a$cls);
- $core.addClass("PackageStateObserver", $globals.Object, "Kernel-Infrastructure");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.PackageStateObserver.comment="My current instance listens for any changes in the system that might affect the state of a package (being dirty).";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "announcer",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "announcer\x0a\x09^ SystemAnnouncer current",
- referencedClasses: ["SystemAnnouncer"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["current"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.SystemAnnouncer)._current();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"announcer",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageStateObserver);
- $core.addMethod(
- $core.method({
- selector: "observeSystem",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["PackageAdded", "ClassAnnouncement", "MethodAnnouncement"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:send:to:", "announcer"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._announcer();
- [$recv($1)._on_send_to_($globals.PackageAdded,"onPackageAdded:",self)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["on:send:to:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._on_send_to_($globals.ClassAnnouncement,"onClassModification:",self)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["on:send:to:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._on_send_to_($globals.MethodAnnouncement,"onMethodModification:",self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"observeSystem",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageStateObserver);
- $core.addMethod(
- $core.method({
- selector: "onClassModification:",
- protocol: "reactions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anAnnouncement"],
- source: "onClassModification: anAnnouncement\x0a\x09anAnnouncement theClass ifNotNil: [ :theClass | theClass package beDirty ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "theClass", "beDirty", "package"]
- }, function ($methodClass){ return function (anAnnouncement){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv(anAnnouncement)._theClass();
- if($1 == null || $1.a$nil){
- $1;
- } else {
- var theClass;
- theClass=$1;
- $recv($recv(theClass)._package())._beDirty();
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"onClassModification:",{anAnnouncement:anAnnouncement})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageStateObserver);
- $core.addMethod(
- $core.method({
- selector: "onMethodModification:",
- protocol: "reactions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anAnnouncement"],
- source: "onMethodModification: anAnnouncement\x0a\x09anAnnouncement method package ifNotNil: [ :package | package beDirty ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "package", "method", "beDirty"]
- }, function ($methodClass){ return function (anAnnouncement){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($recv(anAnnouncement)._method())._package();
- if($1 == null || $1.a$nil){
- $1;
- } else {
- var package_;
- package_=$1;
- $recv(package_)._beDirty();
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"onMethodModification:",{anAnnouncement:anAnnouncement})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageStateObserver);
- $core.addMethod(
- $core.method({
- selector: "onPackageAdded:",
- protocol: "reactions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anAnnouncement"],
- source: "onPackageAdded: anAnnouncement\x0a\x09anAnnouncement package beDirty",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["beDirty", "package"]
- }, function ($methodClass){ return function (anAnnouncement){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(anAnnouncement)._package())._beDirty();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"onPackageAdded:",{anAnnouncement:anAnnouncement})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageStateObserver);
- $core.setSlots($globals.PackageStateObserver.a$cls, ["current"]);
- $core.addMethod(
- $core.method({
- selector: "current",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "current\x0a\x09^ current ifNil: [ current := self new ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.current;
- if($1 == null || $1.a$nil){
- $self.current=$self._new();
- return $self.current;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"current",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageStateObserver.a$cls);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09self current observeSystem",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["observeSystem", "current"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._current())._observeSystem();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageStateObserver.a$cls);
- $core.addClass("Setting", $globals.Object, "Kernel-Infrastructure");
- $core.setSlots($globals.Setting, ["key", "defaultValue"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.Setting.comment="I represent a setting **stored** at `Smalltalk settings`. \x0aIn the current implementation, `Smalltalk settings` is an object persisted in the localStorage.\x0a\x0a## API\x0a\x0aA `Setting` value can be read using `value` and set using `value:`.\x0a\x0aSettings are accessed with `'key' asSetting` or `'key' asSettingIfAbsent: aDefaultValue`.\x0a\x0aTo read the value of a setting you can also use the convenience:\x0a\x0a`theValueSet := 'any.characteristic' settingValue` \x0a\x0aor with a default using:\x0a\x0a `theEnsuredValueSet := 'any.characteristic' settingValueIfAbsent: true`";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "defaultValue",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "defaultValue\x0a\x09^ defaultValue",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.defaultValue;
- }; }),
- $globals.Setting);
- $core.addMethod(
- $core.method({
- selector: "defaultValue:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStringifiableObject"],
- source: "defaultValue: aStringifiableObject\x0a\x09defaultValue := aStringifiableObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aStringifiableObject){
- var self=this,$self=this;
- $self.defaultValue=aStringifiableObject;
- return self;
- }; }),
- $globals.Setting);
- $core.addMethod(
- $core.method({
- selector: "key",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "key\x0a\x09^ key",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.key;
- }; }),
- $globals.Setting);
- $core.addMethod(
- $core.method({
- selector: "key:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "key: aString\x0a\x09key := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.key=aString;
- return self;
- }; }),
- $globals.Setting);
- $core.addMethod(
- $core.method({
- selector: "value",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "value\x0a\x09^ Smalltalk settings at: self key ifAbsent: [ self defaultValue ]",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:", "settings", "key", "defaultValue"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Smalltalk)._settings())._at_ifAbsent_($self._key(),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._defaultValue();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Setting);
- $core.addMethod(
- $core.method({
- selector: "value:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStringifiableObject"],
- source: "value: aStringifiableObject\x0a\x09^ Smalltalk settings at: self key put: aStringifiableObject",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "settings", "key"]
- }, function ($methodClass){ return function (aStringifiableObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Smalltalk)._settings())._at_put_($self._key(),aStringifiableObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:",{aStringifiableObject:aStringifiableObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Setting);
- $core.addMethod(
- $core.method({
- selector: "at:ifAbsent:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aDefaultValue"],
- source: "at: aString ifAbsent: aDefaultValue\x0a\x09\x0a\x09^ super new\x0a\x09\x09key: aString;\x0a\x09\x09defaultValue: aDefaultValue;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["key:", "new", "defaultValue:", "yourself"]
- }, function ($methodClass){ return function (aString,aDefaultValue){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._new.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._key_(aString);
- $recv($1)._defaultValue_(aDefaultValue);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"at:ifAbsent:",{aString:aString,aDefaultValue:aDefaultValue})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Setting.a$cls);
- $core.addMethod(
- $core.method({
- selector: "new",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "new\x0a\x09self shouldNotImplement",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["shouldNotImplement"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._shouldNotImplement();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"new",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Setting.a$cls);
- $core.addClass("SmalltalkImage", $globals.Object, "Kernel-Infrastructure");
- $core.setSlots($globals.SmalltalkImage, ["globalJsVariables", "packageDictionary"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.SmalltalkImage.comment="I represent the Smalltalk system, wrapping\x0aoperations of variable `$core` declared in `base/boot.js`.\x0a\x0a## API\x0a\x0aI have only one instance, accessed with global variable `Smalltalk`.\x0a\x0a## Classes\x0a\x0aClasses can be accessed using the following methods:\x0a\x0a- `#classes` answers the full list of Smalltalk classes in the system\x0a- `#globals #at:` answers a specific global (usually, a class) or `nil`\x0a\x0a## Packages\x0a\x0aPackages can be accessed using the following methods:\x0a\x0a- `#packages` answers the full list of packages\x0a- `#packageAt:` answers a specific package or `nil`\x0a\x0a## Parsing\x0a\x0aThe `#parse:` method is used to parse Amber source code.\x0aIt requires the `Compiler` package and the `base/parser.js` parser file in order to work.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "addGlobalJsVariable:",
- protocol: "globals",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "addGlobalJsVariable: aString\x0a\x09self globalJsVariables add: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "globalJsVariables"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._globalJsVariables())._add_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addGlobalJsVariable:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "adoptPackageDescriptors",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "adoptPackageDescriptors\x0a\x09^ self tryAdoptPackageDescriptorsBeyond: Set new",
- referencedClasses: ["Set"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["tryAdoptPackageDescriptorsBeyond:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._tryAdoptPackageDescriptorsBeyond_($recv($globals.Set)._new());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"adoptPackageDescriptors",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "amdRequire",
- protocol: "accessing amd",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "amdRequire\x0a\x09^ self core at: 'amdRequire'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:", "core"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._core())._at_("amdRequire");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"amdRequire",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "asSmalltalkException:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "asSmalltalkException: anObject\x0a\x09\x22A JavaScript exception may be thrown.\x0a\x09We then need to convert it back to a Smalltalk object\x22\x0a\x09\x0a\x09^ anObject\x0a\x09\x09ifNil: [ [ self error: 'Error: nil' ] on: Error do: [ :e | e ] ]\x0a\x09\x09ifNotNil: [\x0a\x09\x09\x09(self isError: anObject)\x0a\x09\x09\x09\x09ifTrue: [ anObject ]\x0a\x09\x09\x09\x09ifFalse: [ JavaScriptException on: anObject ] ]",
- referencedClasses: ["Error", "JavaScriptException"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:ifNotNil:", "on:do:", "error:", "ifTrue:ifFalse:", "isError:", "on:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(anObject == null || anObject.a$nil){
- return $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._error_("Error: nil");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }))._on_do_($globals.Error,(function(e){
- return e;
- }));
- } else {
- if($core.assert($self._isError_(anObject))){
- return anObject;
- } else {
- return $recv($globals.JavaScriptException)._on_(anObject);
- }
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asSmalltalkException:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "basicCreatePackage:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["packageName"],
- source: "basicCreatePackage: packageName\x0a\x09\x22Create and bind a new bare package with given name and return it.\x22\x0a\x09^ self packageDictionary at: packageName ifAbsentPut: [ Package new: packageName ]",
- referencedClasses: ["Package"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsentPut:", "packageDictionary", "new:"]
- }, function ($methodClass){ return function (packageName){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._packageDictionary())._at_ifAbsentPut_(packageName,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.Package)._new_(packageName);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicCreatePackage:",{packageName:packageName})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "beClean",
- protocol: "packages",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "beClean\x0a\x09\x22Marks all packages clean.\x22\x0a\x0a\x09self packages do: #beClean",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "packages"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._packages())._do_("beClean");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"beClean",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "cancelOptOut:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "cancelOptOut: anObject\x0a\x09\x22A Smalltalk object has a 'a$cls' property.\x0a\x09If this property is shadowed for anObject by optOut:,\x0a\x09the object is treated as plain JS object.\x0a\x09This removes the shadow and anObject is Smalltalk object\x0a\x09again if it was before.\x22\x0a\x09\x0a\x09<inlineJS: 'delete anObject.a$cls;'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["delete anObject.a$cls;"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- delete anObject.a$cls;;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"cancelOptOut:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "classes",
- protocol: "classes",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classes\x0a\x09^ self core traitsOrClasses copy",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copy", "traitsOrClasses", "core"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($self._core())._traitsOrClasses())._copy();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"classes",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "core",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "core\x0a\x09<inlineJS: 'return $core'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $core"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $core;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"core",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "createPackage:",
- protocol: "packages",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["packageName"],
- 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",
- referencedClasses: ["PackageAdded", "SystemAnnouncer"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["basicCreatePackage:", "package:", "new", "yourself", "announce:", "current"]
- }, function ($methodClass){ return function (packageName){
- var self=this,$self=this;
- var package_,announcement;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- package_=$self._basicCreatePackage_(packageName);
- $1=$recv($globals.PackageAdded)._new();
- $recv($1)._package_(package_);
- announcement=$recv($1)._yourself();
- $recv($recv($globals.SystemAnnouncer)._current())._announce_(announcement);
- return package_;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"createPackage:",{packageName:packageName,package_:package_,announcement:announcement})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "defaultAmdNamespace",
- protocol: "accessing amd",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "defaultAmdNamespace\x0a\x09^ 'transport.defaultAmdNamespace' settingValue",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["settingValue"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return "transport.defaultAmdNamespace"._settingValue();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"defaultAmdNamespace",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "defaultAmdNamespace:",
- protocol: "accessing amd",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "defaultAmdNamespace: aString\x0a\x09'transport.defaultAmdNamespace' settingValue: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["settingValue:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- "transport.defaultAmdNamespace"._settingValue_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"defaultAmdNamespace:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "deleteClass:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "deleteClass: aClass\x0a\x09\x22Deletes a class by deleting its binding only. Use #removeClass instead\x22\x0a\x09\x0a\x09<inlineJS: '$core.removeClass(aClass)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["$core.removeClass(aClass)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $core.removeClass(aClass);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"deleteClass:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "deleteGlobalJsVariable:",
- protocol: "globals",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "deleteGlobalJsVariable: aString\x0a\x09self globalJsVariables remove: aString ifAbsent:[]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["remove:ifAbsent:", "globalJsVariables"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._globalJsVariables())._remove_ifAbsent_(aString,(function(){
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"deleteGlobalJsVariable:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "existsJsGlobal:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "existsJsGlobal: aString\x0a\x09self deprecatedAPI: 'Use Platform >> includesGlobal: instead'.\x0a\x09^ Platform includesGlobal: aString",
- referencedClasses: ["Platform"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deprecatedAPI:", "includesGlobal:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deprecatedAPI_("Use Platform >> includesGlobal: instead");
- return $recv($globals.Platform)._includesGlobal_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"existsJsGlobal:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "globalJsVariables",
- protocol: "globals",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "globalJsVariables\x0a\x09^ globalJsVariables ifNil: [\x0a\x09\x09globalJsVariables := #(window document process global) ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.globalJsVariables;
- if($1 == null || $1.a$nil){
- $self.globalJsVariables=["window", "document", "process", "global"];
- return $self.globalJsVariables;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"globalJsVariables",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "globals",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "globals\x0a\x09<inlineJS: 'return $globals'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $globals"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $globals;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"globals",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "isError:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "isError: anObject\x0a\x09^ (self isSmalltalkObject: anObject) and: [ anObject isError ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "isSmalltalkObject:", "isError"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._isSmalltalkObject_(anObject))){
- return $recv(anObject)._isError();
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isError:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "isSmalltalkObject:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "isSmalltalkObject: anObject\x0a\x09\x22Consider anObject a Smalltalk object if it has a 'a$cls' property.\x0a\x09Note that this may be unaccurate\x22\x0a\x09\x0a\x09<inlineJS: 'return anObject.a$cls != null'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return anObject.a$cls != null"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return anObject.a$cls != null;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isSmalltalkObject:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "optOut:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "optOut: anObject\x0a\x09\x22A Smalltalk object has a 'a$cls' property.\x0a\x09This shadows the property for anObject.\x0a\x09The object is treated as plain JS object following this.\x22\x0a\x09\x0a\x09<inlineJS: 'anObject.a$cls = null'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["anObject.a$cls = null"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- anObject.a$cls = null;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"optOut:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "packageAt:ifAbsent:",
- protocol: "packages",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["packageName", "aBlock"],
- source: "packageAt: packageName ifAbsent: aBlock\x0a\x09^ self packageDictionary at: packageName ifAbsent: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:", "packageDictionary"]
- }, function ($methodClass){ return function (packageName,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._packageDictionary())._at_ifAbsent_(packageName,aBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"packageAt:ifAbsent:",{packageName:packageName,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "packageAt:ifPresent:",
- protocol: "packages",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["packageName", "aBlock"],
- source: "packageAt: packageName ifPresent: aBlock\x0a\x09^ self packageDictionary at: packageName ifPresent: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifPresent:", "packageDictionary"]
- }, function ($methodClass){ return function (packageName,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._packageDictionary())._at_ifPresent_(packageName,aBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"packageAt:ifPresent:",{packageName:packageName,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "packageDictionary",
- protocol: "packages",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "packageDictionary\x0a\x09^ packageDictionary ifNil: [ packageDictionary := Dictionary new ]",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.packageDictionary;
- if($1 == null || $1.a$nil){
- $self.packageDictionary=$recv($globals.Dictionary)._new();
- return $self.packageDictionary;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"packageDictionary",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "packages",
- protocol: "packages",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "packages\x0a\x09\x22Return all Package instances in the system.\x22\x0a\x0a\x09^ self packageDictionary values copy",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copy", "values", "packageDictionary"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($self._packageDictionary())._values())._copy();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"packages",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "parse:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "parse: aString\x0a\x09^ Compiler new parse: aString",
- referencedClasses: ["Compiler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "new"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Compiler)._new())._parse_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "postFailedLoad:",
- protocol: "image",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "postFailedLoad: aPackage\x0a\x09| keys descriptors |\x0a\x09Smalltalk removePackage: aPackage name.\x0a\x09keys := Set new.\x0a\x09descriptors := self core packageDescriptors.\x0a\x09descriptors keysAndValuesDo: [ :key :value | keys add: key ].\x0a\x09keys do: [ :each |\x0a\x09\x09Smalltalk removePackage: each.\x0a\x09\x09descriptors removeKey: each ]",
- referencedClasses: ["Smalltalk", "Set"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["removePackage:", "name", "new", "packageDescriptors", "core", "keysAndValuesDo:", "add:", "do:", "removeKey:"]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- var keys,descriptors;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv($globals.Smalltalk)._removePackage_($recv(aPackage)._name())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["removePackage:"]=1
- //>>excludeEnd("ctx");
- ][0];
- keys=$recv($globals.Set)._new();
- descriptors=$recv($self._core())._packageDescriptors();
- $recv(descriptors)._keysAndValuesDo_((function(key,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(keys)._add_(key);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv(keys)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv($globals.Smalltalk)._removePackage_(each);
- return $recv(descriptors)._removeKey_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"postFailedLoad:",{aPackage:aPackage,keys:keys,descriptors:descriptors})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "postLoad",
- protocol: "image",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "postLoad\x0a\x09^ self adoptPackageDescriptors then: [ :pkgs |\x0a\x09\x09| classes |\x0a\x09\x09pkgs do: #beClean.\x0a\x09\x09classes := Smalltalk classes select:\x0a\x09\x09\x09[ :each | pkgs includes: each package ].\x0a\x09\x09classes do: [ :each |\x0a\x09\x09\x09each = self class ifFalse: [ each initialize ] ].\x0a\x09\x09self sweepPackageDescriptors: pkgs ]",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["then:", "adoptPackageDescriptors", "do:", "select:", "classes", "includes:", "package", "ifFalse:", "=", "class", "initialize", "sweepPackageDescriptors:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._adoptPackageDescriptors())._then_((function(pkgs){
- var classes;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(pkgs)._do_("beClean")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- classes=$recv($recv($globals.Smalltalk)._classes())._select_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(pkgs)._includes_($recv(each)._package());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- $recv(classes)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv(each).__eq($self._class()))){
- return $recv(each)._initialize();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- return $self._sweepPackageDescriptors_(pkgs);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({pkgs:pkgs,classes:classes},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"postLoad",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "pseudoVariableNames",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "pseudoVariableNames\x0a\x09^ Compiler pseudoVariableNames",
- referencedClasses: ["Compiler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["pseudoVariableNames"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Compiler)._pseudoVariableNames();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"pseudoVariableNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "readJSObject:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "readJSObject: anObject\x0a\x09<inlineJS: 'return $core.readJSObject(anObject)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $core.readJSObject(anObject)"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $core.readJSObject(anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"readJSObject:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "removeClass:",
- protocol: "classes",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "removeClass: aClass\x0a\x09aClass isMetaclass ifTrue: [ self error: aClass asString, ' is a Metaclass and cannot be removed!' ].\x0a\x09aClass allSubclassesDo: [ :subclass | self error: aClass name, ' has a subclass: ', subclass name ].\x0a\x09aClass traitUsers ifNotEmpty: [ self error: aClass name, ' has trait users.' ].\x0a\x09\x0a\x09self deleteClass: aClass.\x0a\x09aClass includingPossibleMetaDo: [ :each | each setTraitComposition: #() ].\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09\x09announce: (ClassRemoved new\x0a\x09\x09\x09theClass: aClass;\x0a\x09\x09\x09yourself)",
- referencedClasses: ["SystemAnnouncer", "ClassRemoved"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "isMetaclass", "error:", ",", "asString", "allSubclassesDo:", "name", "ifNotEmpty:", "traitUsers", "deleteClass:", "includingPossibleMetaDo:", "setTraitComposition:", "announce:", "current", "theClass:", "new", "yourself"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- if($core.assert($recv(aClass)._isMetaclass())){
- [$self._error_([$recv($recv(aClass)._asString()).__comma(" is a Metaclass and cannot be removed!")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["error:"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- $recv(aClass)._allSubclassesDo_((function(subclass){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$self._error_([$recv([$recv([$recv(aClass)._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["name"]=1
- //>>excludeEnd("ctx");
- ][0]).__comma(" has a subclass: ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0]).__comma([$recv(subclass)._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["name"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["error:"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({subclass:subclass},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $recv($recv(aClass)._traitUsers())._ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._error_($recv($recv(aClass)._name()).__comma(" has trait users."));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- $self._deleteClass_(aClass);
- $recv(aClass)._includingPossibleMetaDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._setTraitComposition_([]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
- //>>excludeEnd("ctx");
- }));
- $1=$recv($globals.SystemAnnouncer)._current();
- $2=$recv($globals.ClassRemoved)._new();
- $recv($2)._theClass_(aClass);
- $recv($1)._announce_($recv($2)._yourself());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeClass:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "removePackage:",
- protocol: "packages",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["packageName"],
- source: "removePackage: packageName\x0a\x09\x22Removes a package and all its classes.\x22\x0a\x0a\x09| pkg |\x0a\x09pkg := self packageAt: packageName ifAbsent: [ self error: 'Missing package: ', packageName ].\x0a\x09pkg classes do: [ :each |\x0a\x09\x09\x09self removeClass: each ].\x0a\x09self packageDictionary removeKey: packageName.\x0a\x09\x0a\x09SystemAnnouncer current\x0a\x09announce: (PackageRemoved new\x0a\x09\x09package: pkg;\x0a\x09\x09yourself)",
- referencedClasses: ["SystemAnnouncer", "PackageRemoved"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["packageAt:ifAbsent:", "error:", ",", "do:", "classes", "removeClass:", "removeKey:", "packageDictionary", "announce:", "current", "package:", "new", "yourself"]
- }, function ($methodClass){ return function (packageName){
- var self=this,$self=this;
- var pkg;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- pkg=$self._packageAt_ifAbsent_(packageName,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._error_("Missing package: ".__comma(packageName));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv($recv(pkg)._classes())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._removeClass_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $recv($self._packageDictionary())._removeKey_(packageName);
- $1=$recv($globals.SystemAnnouncer)._current();
- $2=$recv($globals.PackageRemoved)._new();
- $recv($2)._package_(pkg);
- $recv($1)._announce_($recv($2)._yourself());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removePackage:",{packageName:packageName,pkg:pkg})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "renamePackage:to:",
- protocol: "packages",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["packageName", "newName"],
- source: "renamePackage: packageName to: newName\x0a\x09\x22Rename a package.\x22\x0a\x0a\x09| pkg |\x0a\x09pkg := self packageAt: packageName ifAbsent: [ self error: 'Missing package: ', packageName ].\x0a\x09self packageAt: newName ifPresent: [ self error: 'Already exists a package called: ', newName ].\x0a\x09pkg name: newName; beDirty.\x0a\x09self packageDictionary\x0a\x09\x09at: newName put: pkg;\x0a\x09\x09removeKey: packageName",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["packageAt:ifAbsent:", "error:", ",", "packageAt:ifPresent:", "name:", "beDirty", "at:put:", "packageDictionary", "removeKey:"]
- }, function ($methodClass){ return function (packageName,newName){
- var self=this,$self=this;
- var pkg;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- pkg=$self._packageAt_ifAbsent_(packageName,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$self._error_(["Missing package: ".__comma(packageName)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["error:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $self._packageAt_ifPresent_(newName,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._error_("Already exists a package called: ".__comma(newName));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $1=pkg;
- $recv($1)._name_(newName);
- $recv($1)._beDirty();
- $2=$self._packageDictionary();
- $recv($2)._at_put_(newName,pkg);
- $recv($2)._removeKey_(packageName);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"renamePackage:to:",{packageName:packageName,newName:newName,pkg:pkg})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "reservedWords",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "reservedWords\x0a\x09^ #(\x0a\x09\x09\x22http://www.ecma-international.org/ecma-262/6.0/#sec-keywords\x22\x0a\x09\x09break case catch class const continue debugger\x0a\x09\x09default delete do else export extends finally\x0a\x09\x09for function if import in instanceof new\x0a\x09\x09return super switch this throw try typeof\x0a\x09\x09var void while with yield\x0a\x09\x09\x22in strict mode\x22\x0a\x09\x09let static\x0a\x09\x09\x22Amber protected words: these should not be compiled as-is when in code\x22\x0a\x09\x09arguments\x0a\x09\x09\x22http://www.ecma-international.org/ecma-262/6.0/#sec-future-reserved-words\x22\x0a\x09\x09await enum\x0a\x09\x09\x22in strict mode\x22\x0a\x09\x09implements interface package private protected public\x0a\x09)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return ["break", "case", "catch", "class", "const", "continue", "debugger", "default", "delete", "do", "else", "export", "extends", "finally", "for", "function", "if", "import", "in", "instanceof", "new", "return", "super", "switch", "this", "throw", "try", "typeof", "var", "void", "while", "with", "yield", "let", "static", "arguments", "await", "enum", "implements", "interface", "package", "private", "protected", "public"];
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "settings",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "settings\x0a\x09^ SmalltalkSettings",
- referencedClasses: ["SmalltalkSettings"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.SmalltalkSettings;
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "sweepPackageDescriptors:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["pkgs"],
- source: "sweepPackageDescriptors: pkgs\x0a\x09| pd |\x09\x0a\x09pd := self core packageDescriptors.\x0a\x09pkgs do: [ :each | pd removeKey: each name ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["packageDescriptors", "core", "do:", "removeKey:", "name"]
- }, function ($methodClass){ return function (pkgs){
- var self=this,$self=this;
- var pd;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- pd=$recv($self._core())._packageDescriptors();
- $recv(pkgs)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(pd)._removeKey_($recv(each)._name());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sweepPackageDescriptors:",{pkgs:pkgs,pd:pd})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "try:ifTrue:catch:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["actionBlock", "aBlock", "anotherBlock"],
- source: "try: actionBlock ifTrue: aBlock catch: anotherBlock\x0a\x09\x22Similar to BlockClosure >> tryifTrue:catch:, but\x0a\x09converts all JS exceptions to JavaScriptException instances.\x22\x0a\x09\x0a\x09| smalltalkError |\x0a\x09^ actionBlock\x0a\x09\x09tryIfTrue: [ :error |\x0a\x09\x09\x09smalltalkError := self asSmalltalkException: error.\x0a\x09\x09\x09aBlock value: smalltalkError ]\x0a\x09\x09catch: [ anotherBlock value: smalltalkError ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["tryIfTrue:catch:", "asSmalltalkException:", "value:"]
- }, function ($methodClass){ return function (actionBlock,aBlock,anotherBlock){
- var self=this,$self=this;
- var smalltalkError;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(actionBlock)._tryIfTrue_catch_((function(error){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- smalltalkError=$self._asSmalltalkException_(error);
- return [$recv(aBlock)._value_(smalltalkError)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["value:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(anotherBlock)._value_(smalltalkError);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"try:ifTrue:catch:",{actionBlock:actionBlock,aBlock:aBlock,anotherBlock:anotherBlock,smalltalkError:smalltalkError})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "tryAdoptPackageDescriptorsBeyond:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aSet"],
- source: "tryAdoptPackageDescriptorsBeyond: aSet\x0a\x09| original |\x0a\x09original := aSet copy.\x0a\x09self core packageDescriptors keysAndValuesDo: [ :key :value |\x0a\x09\x09aSet add: (Package named: key javaScriptDescriptor: value) ].\x0a\x09^ (aSet allSatisfy: [ :each | original includes: each ])\x0a\x09\x09ifFalse: [ (Promise all: (aSet collect: #isReady)) then: [ self tryAdoptPackageDescriptorsBeyond: aSet ] ]\x0a\x09\x09ifTrue: [ Promise value: aSet ]",
- referencedClasses: ["Package", "Promise"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copy", "keysAndValuesDo:", "packageDescriptors", "core", "add:", "named:javaScriptDescriptor:", "ifFalse:ifTrue:", "allSatisfy:", "includes:", "then:", "all:", "collect:", "tryAdoptPackageDescriptorsBeyond:", "value:"]
- }, function ($methodClass){ return function (aSet){
- var self=this,$self=this;
- var original;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- original=$recv(aSet)._copy();
- $recv($recv($self._core())._packageDescriptors())._keysAndValuesDo_((function(key,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aSet)._add_($recv($globals.Package)._named_javaScriptDescriptor_(key,value));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- if($core.assert($recv(aSet)._allSatisfy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(original)._includes_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- })))){
- return $recv($globals.Promise)._value_(aSet);
- } else {
- return $recv($recv($globals.Promise)._all_($recv(aSet)._collect_("isReady")))._then_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._tryAdoptPackageDescriptorsBeyond_(aSet);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
- //>>excludeEnd("ctx");
- }));
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"tryAdoptPackageDescriptorsBeyond:",{aSet:aSet,original:original})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage);
- $core.addMethod(
- $core.method({
- selector: "version",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "version\x0a\x09\x22Answer the version string of Amber\x22\x0a\x09\x0a\x09^ '0.29.4'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "0.29.4";
- }; }),
- $globals.SmalltalkImage);
- $core.setSlots($globals.SmalltalkImage.a$cls, ["current"]);
- $core.addMethod(
- $core.method({
- selector: "current",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "current\x0a\x09^ current ifNil: [ current := super new ] ifNotNil: [ self deprecatedAPI. current ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:ifNotNil:", "new", "deprecatedAPI"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.current;
- if($1 == null || $1.a$nil){
- $self.current=[(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._new.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- return $self.current;
- } else {
- $self._deprecatedAPI();
- return $self.current;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"current",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage.a$cls);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09| st |\x0a\x09st := self current.\x0a\x09st globals at: 'Smalltalk' put: st",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["current", "at:put:", "globals"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var st;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- st=$self._current();
- $recv($recv(st)._globals())._at_put_("Smalltalk",st);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{st:st})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage.a$cls);
- $core.addMethod(
- $core.method({
- selector: "new",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "new\x0a\x09self shouldNotImplement",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["shouldNotImplement"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._shouldNotImplement();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"new",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SmalltalkImage.a$cls);
- $core.setTraitComposition([{trait: $globals.TIsInGroup}, {trait: $globals.TThenable}], $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "nextPutJSObject:",
- protocol: "*Kernel-Infrastructure",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aJSObject"],
- source: "nextPutJSObject: aJSObject\x0a\x09self nextPut: aJSObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPut:"]
- }, function ($methodClass){ return function (aJSObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._nextPut_(aJSObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutJSObject:",{aJSObject:aJSObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtoStream);
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptPropertyName",
- protocol: "*Kernel-Infrastructure",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptPropertyName\x0a<inlineJS: 'return $core.st2prop(self)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return $core.st2prop(self)"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $core.st2prop(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptPropertyName",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "asSetting",
- protocol: "*Kernel-Infrastructure",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asSetting\x0a\x09\x22Answer aSetting dedicated to locally store a value using this string as key.\x0a\x09Nil will be the default value.\x22\x0a\x09^ Setting at: self ifAbsent: nil",
- referencedClasses: ["Setting"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Setting)._at_ifAbsent_(self,nil);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asSetting",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "asSettingIfAbsent:",
- protocol: "*Kernel-Infrastructure",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDefaultValue"],
- source: "asSettingIfAbsent: aDefaultValue\x0a\x09\x22Answer aSetting dedicated to locally store a value using this string as key.\x0a\x09Make this setting to have aDefaultValue.\x22\x0a\x09^ Setting at: self ifAbsent: aDefaultValue",
- referencedClasses: ["Setting"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:"]
- }, function ($methodClass){ return function (aDefaultValue){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Setting)._at_ifAbsent_(self,aDefaultValue);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asSettingIfAbsent:",{aDefaultValue:aDefaultValue})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "settingValue",
- protocol: "*Kernel-Infrastructure",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "settingValue\x0a\x09^ self asSetting value",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value", "asSetting"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._asSetting())._value();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"settingValue",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "settingValue:",
- protocol: "*Kernel-Infrastructure",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aValue"],
- source: "settingValue: aValue\x0a\x09\x22Sets the value of the setting that will be locally stored using this string as key.\x0a\x09Note that aValue can be any object that can be stringifyed\x22\x0a\x09^ self asSetting value: aValue",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:", "asSetting"]
- }, function ($methodClass){ return function (aValue){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._asSetting())._value_(aValue);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"settingValue:",{aValue:aValue})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "settingValueIfAbsent:",
- protocol: "*Kernel-Infrastructure",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDefaultValue"],
- source: "settingValueIfAbsent: aDefaultValue\x0a\x09\x22Answer the value of the locally stored setting using this string as key.\x0a\x09Use aDefaultValue in case no setting is found\x22\x0a\x09^ (self asSettingIfAbsent: aDefaultValue) value",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value", "asSettingIfAbsent:"]
- }, function ($methodClass){ return function (aDefaultValue){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._asSettingIfAbsent_(aDefaultValue))._value();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"settingValueIfAbsent:",{aDefaultValue:aDefaultValue})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- });
- define('amber/core/Kernel-Exceptions',["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Kernel-Exceptions");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("Error", $globals.Object, "Kernel-Exceptions");
- $core.setSlots($globals.Error, ["message", "stack", "amberHandled", "context", "smalltalkError"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "basicSignal",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "basicSignal\x0a\x09<inlineJS: 'throw self;'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["throw self;"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- throw self;;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicSignal",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "beHandled",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "beHandled\x0a\x09amberHandled := true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- $self.amberHandled=true;
- return self;
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "beUnhandled",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "beUnhandled\x0a\x09amberHandled := false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- $self.amberHandled=false;
- return self;
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "context",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "context\x0a\x09^ context",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.context;
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "context:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethodContext"],
- source: "context: aMethodContext\x0a\x09context := aMethodContext",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aMethodContext){
- var self=this,$self=this;
- $self.context=aMethodContext;
- return self;
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09self messageText: 'Errorclass: ', (self class name).",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["messageText:", ",", "name", "class"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._messageText_("Errorclass: ".__comma($recv($self._class())._name()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "isError",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isError\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "jsStack",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "jsStack\x0a\x09^ stack",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.stack;
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "messageText",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "messageText\x0a\x09^ message",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.message;
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "messageText:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "messageText: aString\x0a\x09message := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.message=aString;
- return self;
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "outer",
- protocol: "signaling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "outer\x0a\x09\x22Pharo compatibility. Just sends #pass.\x22\x0a\x09\x0a\x09^ self pass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["pass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._pass();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"outer",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "pass",
- protocol: "signaling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "pass\x0a\x09\x22Let outer handler take care of this.\x22\x0a\x0a\x09self beUnhandled; basicSignal",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["beUnhandled", "basicSignal"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._beUnhandled();
- $self._basicSignal();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"pass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "resignal",
- protocol: "signaling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "resignal\x0a\x09self deprecatedAPI: 'Use #pass.'.\x0a\x09^ self pass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deprecatedAPI:", "pass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deprecatedAPI_("Use #pass.");
- return $self._pass();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"resignal",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "signal",
- protocol: "signaling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "signal\x0a\x09self beUnhandled; context: thisContext; basicSignal",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["beUnhandled", "context:", "basicSignal"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._beUnhandled();
- $self._context_($core.getThisContext());
- $self._basicSignal();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"signal",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "signal:",
- protocol: "signaling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "signal: aString\x0a\x09self messageText: aString; signal",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["messageText:", "signal"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._messageText_(aString);
- $self._signal();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "signalerContext",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "signalerContext\x0a\x09^ self signalerContextFrom: self context",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["signalerContextFrom:", "context"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._signalerContextFrom_($self._context());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"signalerContext",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "signalerContextFrom:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext"],
- source: "signalerContextFrom: aContext\x0a\x09\x22Find the first sender of signal(:), the first context which is neither \x0a\x09for an instance method nor for a class side method of Exception (or subclass).\x0a\x09This will make sure that the same context is found for both, `Error signal` \x0a\x09and `Error new signal`\x22\x0a\x0a\x09^ aContext findContextSuchThat: [ :one |\x0a\x09\x09(one receiver == self \x0a\x09\x09or: [ one receiver == self class ]) not ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["findContextSuchThat:", "not", "or:", "==", "receiver", "class"]
- }, function ($methodClass){ return function (aContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- return $recv(aContext)._findContextSuchThat_((function(one){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv([$recv(one)._receiver()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["receiver"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq_eq(self)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["=="]=1
- //>>excludeEnd("ctx");
- ][0])){
- $1=true;
- } else {
- $1=$recv($recv(one)._receiver()).__eq_eq($self._class());
- }
- return $recv($1)._not();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({one:one},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"signalerContextFrom:",{aContext:aContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "wasHandled",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "wasHandled\x0a\x09^ amberHandled == true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["=="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.amberHandled).__eq_eq(true);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"wasHandled",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Error);
- $core.addMethod(
- $core.method({
- selector: "classTag",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classTag\x0a\x09\x22Returns a tag or general category for this class.\x0a\x09Typically used to help tools do some reflection.\x0a\x09Helios, for example, uses this to decide what icon the class should display.\x22\x0a\x09\x0a\x09^ 'exception'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "exception";
- }; }),
- $globals.Error.a$cls);
- $core.addMethod(
- $core.method({
- selector: "signal",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "signal\x0a\x09^ self new signal",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["signal", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._new())._signal();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"signal",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Error.a$cls);
- $core.addMethod(
- $core.method({
- selector: "signal:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "signal: aString\x0a\x09^ self new\x0a\x09\x09signal: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["signal:", "new"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._new())._signal_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"signal:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Error.a$cls);
- $core.addClass("Halt", $globals.Error, "Kernel-Exceptions");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.Halt.comment="I am provided to support `Object>>#halt`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "messageText",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "messageText\x0a\x09^ 'Halt encountered'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "Halt encountered";
- }; }),
- $globals.Halt);
- $core.addMethod(
- $core.method({
- selector: "signalerContextFrom:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext"],
- source: "signalerContextFrom: aContext\x0a\x09\x22specialized version to find the proper context to open the debugger on.\x0a\x09This will find the first context whose method is no longer on `Halt` or \x0a\x09`Halt class` nor is `#halt` method itself.\x22\x0a\x09\x0a\x09^ aContext findContextSuchThat: [ :one |\x0a\x09\x09(one receiver == self \x0a\x09\x09or: [ (one receiver == self class) \x0a\x09\x09or: [ one method selector = #halt ]]) not ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["findContextSuchThat:", "not", "or:", "==", "receiver", "class", "=", "selector", "method"]
- }, function ($methodClass){ return function (aContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- return $recv(aContext)._findContextSuchThat_((function(one){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv([$recv(one)._receiver()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["receiver"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq_eq(self)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["=="]=1
- //>>excludeEnd("ctx");
- ][0])){
- $1=true;
- } else {
- if($core.assert($recv($recv(one)._receiver()).__eq_eq($self._class()))){
- $1=true;
- } else {
- $1=$recv($recv($recv(one)._method())._selector()).__eq("halt");
- }
- }
- return $recv($1)._not();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({one:one},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"signalerContextFrom:",{aContext:aContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Halt);
- $core.addClass("JavaScriptException", $globals.Error, "Kernel-Exceptions");
- $core.setSlots($globals.JavaScriptException, ["exception"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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:`";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "exception",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "exception\x0a\x09^ exception",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.exception;
- }; }),
- $globals.JavaScriptException);
- $core.addMethod(
- $core.method({
- selector: "exception:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anException"],
- source: "exception: anException\x0a\x09exception := anException",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anException){
- var self=this,$self=this;
- $self.exception=anException;
- return self;
- }; }),
- $globals.JavaScriptException);
- $core.addMethod(
- $core.method({
- selector: "messageText",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "messageText\x0a\x09<inlineJS: 'return \x22JavaScript exception: \x22 + $self.exception.toString()'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return \x22JavaScript exception: \x22 + $self.exception.toString()"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return "JavaScript exception: " + $self.exception.toString();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"messageText",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JavaScriptException);
- $core.addMethod(
- $core.method({
- selector: "on:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anException"],
- source: "on: anException\x0a\x09^ self new\x0a\x09\x09exception: anException;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["exception:", "new", "yourself"]
- }, function ($methodClass){ return function (anException){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._exception_(anException);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:",{anException:anException})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JavaScriptException.a$cls);
- $core.addMethod(
- $core.method({
- selector: "on:context:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anException", "aMethodContext"],
- source: "on: anException context: aMethodContext\x0a\x09^ self new\x0a\x09\x09exception: anException;\x0a\x09\x09context: aMethodContext;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["exception:", "new", "context:", "yourself"]
- }, function ($methodClass){ return function (anException,aMethodContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._exception_(anException);
- $recv($1)._context_(aMethodContext);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:context:",{anException:anException,aMethodContext:aMethodContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JavaScriptException.a$cls);
- $core.addClass("MessageNotUnderstood", $globals.Error, "Kernel-Exceptions");
- $core.setSlots($globals.MessageNotUnderstood, ["smalltalkMessage", "receiver"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.MessageNotUnderstood.comment="This exception is provided to support `Object>>doesNotUnderstand:`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "message",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "message\x0a\x09^ smalltalkMessage",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.smalltalkMessage;
- }; }),
- $globals.MessageNotUnderstood);
- $core.addMethod(
- $core.method({
- selector: "message:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMessage"],
- source: "message: aMessage\x0a\x09smalltalkMessage := aMessage",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aMessage){
- var self=this,$self=this;
- $self.smalltalkMessage=aMessage;
- return self;
- }; }),
- $globals.MessageNotUnderstood);
- $core.addMethod(
- $core.method({
- selector: "messageText",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "messageText\x0a\x09^ self receiver asString, ' does not understand #', self message selector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "asString", "receiver", "selector", "message"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return [$recv($recv($recv($self._receiver())._asString()).__comma(" does not understand #")).__comma($recv($self._message())._selector())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"messageText",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MessageNotUnderstood);
- $core.addMethod(
- $core.method({
- selector: "receiver",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "receiver\x0a\x09^ receiver",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.receiver;
- }; }),
- $globals.MessageNotUnderstood);
- $core.addMethod(
- $core.method({
- selector: "receiver:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "receiver: anObject\x0a\x09receiver := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.receiver=anObject;
- return self;
- }; }),
- $globals.MessageNotUnderstood);
- $core.addClass("NonBooleanReceiver", $globals.Error, "Kernel-Exceptions");
- $core.setSlots($globals.NonBooleanReceiver, ["object"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.NonBooleanReceiver.comment="NonBooleanReceiver exceptions may be thrown when executing inlined methods such as `#ifTrue:` with a non boolean receiver.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "object",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "object\x0a\x09^ object",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.object;
- }; }),
- $globals.NonBooleanReceiver);
- $core.addMethod(
- $core.method({
- selector: "object:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "object: anObject\x0a\x09object := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.object=anObject;
- return self;
- }; }),
- $globals.NonBooleanReceiver);
- $core.addMethod(
- $core.method({
- selector: "signalOn:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "signalOn: anObject\x0a\x09^ self new\x0a\x09\x09object: anObject;\x0a\x09\x09signal",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["object:", "new", "signal"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._object_(anObject);
- return $recv($1)._signal();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"signalOn:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NonBooleanReceiver.a$cls);
- });
- define('amber/core/Kernel-Announcements',["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Kernel-Announcements");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("AnnouncementSubscription", $globals.Object, "Kernel-Announcements");
- $core.setSlots($globals.AnnouncementSubscription, ["valuable", "announcementClass"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.AnnouncementSubscription.comment="I am a single entry in a subscription registry of an `Announcer`.\x0aSeveral subscriptions by the same object is possible.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "announcementClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "announcementClass\x0a\x09^ announcementClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.announcementClass;
- }; }),
- $globals.AnnouncementSubscription);
- $core.addMethod(
- $core.method({
- selector: "announcementClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "announcementClass: aClass\x0a\x09announcementClass := Smalltalk globals at: aClass name",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:", "globals", "name"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.announcementClass=$recv($recv($globals.Smalltalk)._globals())._at_($recv(aClass)._name());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"announcementClass:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AnnouncementSubscription);
- $core.addMethod(
- $core.method({
- selector: "deliver:",
- protocol: "announcing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anAnnouncement"],
- source: "deliver: anAnnouncement\x0a\x09(self handlesAnnouncement: anAnnouncement)\x0a\x09\x09ifTrue: [ self valuable value: anAnnouncement ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "handlesAnnouncement:", "value:", "valuable"]
- }, function ($methodClass){ return function (anAnnouncement){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._handlesAnnouncement_(anAnnouncement))){
- $recv($self._valuable())._value_(anAnnouncement);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"deliver:",{anAnnouncement:anAnnouncement})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AnnouncementSubscription);
- $core.addMethod(
- $core.method({
- selector: "handlesAnnouncement:",
- protocol: "announcing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anAnnouncement"],
- source: "handlesAnnouncement: anAnnouncement\x0a\x09\x22anAnnouncement might be announced from within another Amber environment\x22\x0a\x09\x0a\x09^ (Smalltalk globals at: anAnnouncement class name) includesBehavior: self announcementClass",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["includesBehavior:", "at:", "globals", "name", "class", "announcementClass"]
- }, function ($methodClass){ return function (anAnnouncement){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($recv($globals.Smalltalk)._globals())._at_($recv($recv(anAnnouncement)._class())._name()))._includesBehavior_($self._announcementClass());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"handlesAnnouncement:",{anAnnouncement:anAnnouncement})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AnnouncementSubscription);
- $core.addMethod(
- $core.method({
- selector: "receiver",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "receiver\x0a\x09^ self valuable receiver",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["receiver", "valuable"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._valuable())._receiver();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"receiver",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AnnouncementSubscription);
- $core.addMethod(
- $core.method({
- selector: "valuable",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "valuable\x0a\x09^ valuable",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.valuable;
- }; }),
- $globals.AnnouncementSubscription);
- $core.addMethod(
- $core.method({
- selector: "valuable:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aValuable"],
- source: "valuable: aValuable\x0a\x09valuable := aValuable",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aValuable){
- var self=this,$self=this;
- $self.valuable=aValuable;
- return self;
- }; }),
- $globals.AnnouncementSubscription);
- $core.addClass("AnnouncementValuable", $globals.Object, "Kernel-Announcements");
- $core.setSlots($globals.AnnouncementValuable, ["valuable", "receiver"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.AnnouncementValuable.comment="I wrap `valuable` objects (typically instances of `BlockClosure`) with a `receiver` to be able to unregister subscriptions based on a `receiver`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "receiver",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "receiver\x0a\x09^ receiver",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.receiver;
- }; }),
- $globals.AnnouncementValuable);
- $core.addMethod(
- $core.method({
- selector: "receiver:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "receiver: anObject\x0a\x09receiver := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.receiver=anObject;
- return self;
- }; }),
- $globals.AnnouncementValuable);
- $core.addMethod(
- $core.method({
- selector: "valuable",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "valuable\x0a\x09^ valuable",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.valuable;
- }; }),
- $globals.AnnouncementValuable);
- $core.addMethod(
- $core.method({
- selector: "valuable:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "valuable: anObject\x0a\x09valuable := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.valuable=anObject;
- return self;
- }; }),
- $globals.AnnouncementValuable);
- $core.addMethod(
- $core.method({
- selector: "value",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "value\x0a\x09^ self valuable value",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value", "valuable"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._valuable())._value();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AnnouncementValuable);
- $core.addMethod(
- $core.method({
- selector: "value:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "value: anObject\x0a\x09^ self valuable value: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:", "valuable"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._valuable())._value_(anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AnnouncementValuable);
- $core.addClass("Announcer", $globals.Object, "Kernel-Announcements");
- $core.setSlots($globals.Announcer, ["registry", "subscriptions"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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' ].";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "announce:",
- protocol: "announcing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anAnnouncement"],
- source: "announce: anAnnouncement\x0a\x09subscriptions do: [ :each |\x0a\x09\x09each deliver: anAnnouncement ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "deliver:"]
- }, function ($methodClass){ return function (anAnnouncement){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.subscriptions)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._deliver_(anAnnouncement);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"announce:",{anAnnouncement:anAnnouncement})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Announcer);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x09subscriptions := OrderedCollection new",
- referencedClasses: ["OrderedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.subscriptions=$recv($globals.OrderedCollection)._new();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Announcer);
- $core.addMethod(
- $core.method({
- selector: "on:do:",
- protocol: "subscribing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aBlock"],
- source: "on: aClass do: aBlock\x0a\x09self on: aClass do: aBlock for: nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:do:for:"]
- }, function ($methodClass){ return function (aClass,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._on_do_for_(aClass,aBlock,nil);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:do:",{aClass:aClass,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Announcer);
- $core.addMethod(
- $core.method({
- selector: "on:do:for:",
- protocol: "subscribing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aBlock", "aReceiver"],
- 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)",
- referencedClasses: ["AnnouncementSubscription", "AnnouncementValuable"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "valuable:", "new", "receiver:", "yourself", "announcementClass:"]
- }, function ($methodClass){ return function (aClass,aBlock,aReceiver){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3;
- $1=$self.subscriptions;
- $2=[$recv($globals.AnnouncementSubscription)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $3=$recv($globals.AnnouncementValuable)._new();
- $recv($3)._valuable_(aBlock);
- $recv($3)._receiver_(aReceiver);
- [$recv($2)._valuable_([$recv($3)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["valuable:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._announcementClass_(aClass);
- $recv($1)._add_($recv($2)._yourself());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:do:for:",{aClass:aClass,aBlock:aBlock,aReceiver:aReceiver})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Announcer);
- $core.addMethod(
- $core.method({
- selector: "on:doOnce:",
- protocol: "subscribing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aBlock"],
- 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",
- referencedClasses: ["AnnouncementSubscription"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["announcementClass:", "new", "yourself", "valuable:", "remove:", "value:", "add:"]
- }, function ($methodClass){ return function (aClass,aBlock){
- var self=this,$self=this;
- var subscription;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.AnnouncementSubscription)._new();
- $recv($1)._announcementClass_(aClass);
- subscription=$recv($1)._yourself();
- $recv(subscription)._valuable_((function(ann){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv($self.subscriptions)._remove_(subscription);
- return $recv(aBlock)._value_(ann);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv($self.subscriptions)._add_(subscription);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:doOnce:",{aClass:aClass,aBlock:aBlock,subscription:subscription})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Announcer);
- $core.addMethod(
- $core.method({
- selector: "on:send:to:",
- protocol: "subscribing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aSelector", "anObject"],
- 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)",
- referencedClasses: ["AnnouncementSubscription", "MessageSend"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "valuable:", "new", "receiver:", "selector:", "yourself", "announcementClass:"]
- }, function ($methodClass){ return function (aClass,aSelector,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3;
- $1=$self.subscriptions;
- $2=[$recv($globals.AnnouncementSubscription)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $3=$recv($globals.MessageSend)._new();
- $recv($3)._receiver_(anObject);
- $recv($3)._selector_(aSelector);
- $recv($2)._valuable_([$recv($3)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0]);
- $recv($2)._announcementClass_(aClass);
- $recv($1)._add_($recv($2)._yourself());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:send:to:",{aClass:aClass,aSelector:aSelector,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Announcer);
- $core.addMethod(
- $core.method({
- selector: "unsubscribe:",
- protocol: "subscribing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "unsubscribe: anObject\x0a\x09subscriptions := subscriptions reject: [ :each |\x0a\x09\x09each receiver = anObject ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["reject:", "=", "receiver"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.subscriptions=$recv($self.subscriptions)._reject_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv(each)._receiver()).__eq(anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"unsubscribe:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Announcer);
- $core.addClass("SystemAnnouncer", $globals.Announcer, "Kernel-Announcements");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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`";
- //>>excludeEnd("ide");
- $core.setSlots($globals.SystemAnnouncer.a$cls, ["current"]);
- $core.addMethod(
- $core.method({
- selector: "current",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "current\x0a\x09^ current ifNil: [ current := super new ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.current;
- if($1 == null || $1.a$nil){
- $self.current=[(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._new.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- return $self.current;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"current",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SystemAnnouncer.a$cls);
- $core.addMethod(
- $core.method({
- selector: "new",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "new\x0a\x09self shouldNotImplement",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["shouldNotImplement"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._shouldNotImplement();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"new",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SystemAnnouncer.a$cls);
- $core.addClass("SystemAnnouncement", $globals.Object, "Kernel-Announcements");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.SystemAnnouncement.comment="I am the superclass of all system announcements";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "classTag",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classTag\x0a\x09\x22Returns a tag or general category for this class.\x0a\x09Typically used to help tools do some reflection.\x0a\x09Helios, for example, uses this to decide what icon the class should display.\x22\x0a\x09\x0a\x09^ 'announcement'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "announcement";
- }; }),
- $globals.SystemAnnouncement.a$cls);
- $core.addClass("ClassAnnouncement", $globals.SystemAnnouncement, "Kernel-Announcements");
- $core.setSlots($globals.ClassAnnouncement, ["theClass"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ClassAnnouncement.comment="I am the abstract superclass of class-related announcements.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "theClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theClass\x0a\x09^ theClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.theClass;
- }; }),
- $globals.ClassAnnouncement);
- $core.addMethod(
- $core.method({
- selector: "theClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "theClass: aClass\x0a\x09theClass := aClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- $self.theClass=aClass;
- return self;
- }; }),
- $globals.ClassAnnouncement);
- $core.addClass("ClassAdded", $globals.ClassAnnouncement, "Kernel-Announcements");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ClassAdded.comment="I am emitted when a class is added to the system.\x0aSee ClassBuilder >> #addSubclassOf:... methods";
- //>>excludeEnd("ide");
- $core.addClass("ClassCommentChanged", $globals.ClassAnnouncement, "Kernel-Announcements");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ClassCommentChanged.comment="I am emitted when the comment of a class changes. (Behavior >> #comment)";
- //>>excludeEnd("ide");
- $core.addClass("ClassDefinitionChanged", $globals.ClassAnnouncement, "Kernel-Announcements");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ClassDefinitionChanged.comment="I am emitted when the definition of a class changes.\x0aSee ClassBuilder >> #class:instanceVariableNames:";
- //>>excludeEnd("ide");
- $core.addClass("ClassMigrated", $globals.ClassAnnouncement, "Kernel-Announcements");
- $core.setSlots($globals.ClassMigrated, ["oldClass"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ClassMigrated.comment="I am emitted when a class is migrated.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "oldClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "oldClass\x0a\x09^ oldClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.oldClass;
- }; }),
- $globals.ClassMigrated);
- $core.addMethod(
- $core.method({
- selector: "oldClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "oldClass: aClass\x0a\x09oldClass := aClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- $self.oldClass=aClass;
- return self;
- }; }),
- $globals.ClassMigrated);
- $core.addClass("ClassMoved", $globals.ClassAnnouncement, "Kernel-Announcements");
- $core.setSlots($globals.ClassMoved, ["oldPackage"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ClassMoved.comment="I am emitted when a class is moved from one package to another.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "oldPackage",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "oldPackage\x0a\x09^ oldPackage",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.oldPackage;
- }; }),
- $globals.ClassMoved);
- $core.addMethod(
- $core.method({
- selector: "oldPackage:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "oldPackage: aPackage\x0a\x09oldPackage := aPackage",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- $self.oldPackage=aPackage;
- return self;
- }; }),
- $globals.ClassMoved);
- $core.addClass("ClassRemoved", $globals.ClassAnnouncement, "Kernel-Announcements");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ClassRemoved.comment="I am emitted when a class is removed.\x0aSee Smalltalk >> #removeClass:";
- //>>excludeEnd("ide");
- $core.addClass("ClassRenamed", $globals.ClassAnnouncement, "Kernel-Announcements");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ClassRenamed.comment="I am emitted when a class is renamed.\x0aSee ClassBuilder >> #renameClass:to:";
- //>>excludeEnd("ide");
- $core.addClass("MethodAnnouncement", $globals.SystemAnnouncement, "Kernel-Announcements");
- $core.setSlots($globals.MethodAnnouncement, ["method"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.MethodAnnouncement.comment="I am the abstract superclass of method-related announcements.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "method",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "method\x0a\x09^ method",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.method;
- }; }),
- $globals.MethodAnnouncement);
- $core.addMethod(
- $core.method({
- selector: "method:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCompiledMethod"],
- source: "method: aCompiledMethod\x0a\x09method := aCompiledMethod",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aCompiledMethod){
- var self=this,$self=this;
- $self.method=aCompiledMethod;
- return self;
- }; }),
- $globals.MethodAnnouncement);
- $core.addClass("MethodAdded", $globals.MethodAnnouncement, "Kernel-Announcements");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.MethodAdded.comment="I am emitted when a `CompiledMethod` is added to a class.";
- //>>excludeEnd("ide");
- $core.addClass("MethodModified", $globals.MethodAnnouncement, "Kernel-Announcements");
- $core.setSlots($globals.MethodModified, ["oldMethod"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "oldMethod",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "oldMethod\x0a\x09^ oldMethod",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.oldMethod;
- }; }),
- $globals.MethodModified);
- $core.addMethod(
- $core.method({
- selector: "oldMethod:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethod"],
- source: "oldMethod: aMethod\x0a\x09oldMethod := aMethod",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aMethod){
- var self=this,$self=this;
- $self.oldMethod=aMethod;
- return self;
- }; }),
- $globals.MethodModified);
- $core.addClass("MethodMoved", $globals.MethodAnnouncement, "Kernel-Announcements");
- $core.setSlots($globals.MethodMoved, ["oldProtocol"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "oldProtocol",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "oldProtocol\x0a\x09^ oldProtocol",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.oldProtocol;
- }; }),
- $globals.MethodMoved);
- $core.addMethod(
- $core.method({
- selector: "oldProtocol:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "oldProtocol: aString\x0a\x09oldProtocol := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.oldProtocol=aString;
- return self;
- }; }),
- $globals.MethodMoved);
- $core.addClass("MethodRemoved", $globals.MethodAnnouncement, "Kernel-Announcements");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.MethodRemoved.comment="I am emitted when a `CompiledMethod` is removed from a class.";
- //>>excludeEnd("ide");
- $core.addClass("PackageAnnouncement", $globals.SystemAnnouncement, "Kernel-Announcements");
- $core.setSlots($globals.PackageAnnouncement, ["package"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.PackageAnnouncement.comment="I am the abstract superclass of package-related announcements.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "package",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "package\x0a\x09^ package",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.package;
- }; }),
- $globals.PackageAnnouncement);
- $core.addMethod(
- $core.method({
- selector: "package:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "package: aPackage\x0a\x09package := aPackage",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- $self.package=aPackage;
- return self;
- }; }),
- $globals.PackageAnnouncement);
- $core.addClass("PackageAdded", $globals.PackageAnnouncement, "Kernel-Announcements");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.PackageAdded.comment="I am emitted when a `Package` is added to the system.";
- //>>excludeEnd("ide");
- $core.addClass("PackageClean", $globals.PackageAnnouncement, "Kernel-Announcements");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.PackageClean.comment="I am emitted when a package is committed and becomes clean.";
- //>>excludeEnd("ide");
- $core.addClass("PackageDirty", $globals.PackageAnnouncement, "Kernel-Announcements");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.PackageDirty.comment="I am emitted when a package becomes dirty.";
- //>>excludeEnd("ide");
- $core.addClass("PackageRemoved", $globals.PackageAnnouncement, "Kernel-Announcements");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.PackageRemoved.comment="I am emitted when a `Package` is removed from the system.";
- //>>excludeEnd("ide");
- $core.addClass("ProtocolAnnouncement", $globals.SystemAnnouncement, "Kernel-Announcements");
- $core.setSlots($globals.ProtocolAnnouncement, ["theClass", "protocol"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ProtocolAnnouncement.comment="I am the abstract superclass of protocol-related announcements.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "package",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "package\x0a\x09\x0a\x09^ self theClass ifNotNil: [ :class | class packageOfProtocol: self protocol ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "theClass", "packageOfProtocol:", "protocol"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._theClass();
- if($1 == null || $1.a$nil){
- return $1;
- } else {
- var class_;
- class_=$1;
- return $recv(class_)._packageOfProtocol_($self._protocol());
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"package",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProtocolAnnouncement);
- $core.addMethod(
- $core.method({
- selector: "protocol",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "protocol\x0a\x09^ protocol",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.protocol;
- }; }),
- $globals.ProtocolAnnouncement);
- $core.addMethod(
- $core.method({
- selector: "protocol:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "protocol: aString\x0a\x09protocol := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.protocol=aString;
- return self;
- }; }),
- $globals.ProtocolAnnouncement);
- $core.addMethod(
- $core.method({
- selector: "theClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theClass\x0a\x09^ theClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.theClass;
- }; }),
- $globals.ProtocolAnnouncement);
- $core.addMethod(
- $core.method({
- selector: "theClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "theClass: aClass\x0a\x09theClass := aClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- $self.theClass=aClass;
- return self;
- }; }),
- $globals.ProtocolAnnouncement);
- $core.addClass("ProtocolAdded", $globals.ProtocolAnnouncement, "Kernel-Announcements");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ProtocolAdded.comment="I am emitted when a protocol is added to a class.";
- //>>excludeEnd("ide");
- $core.addClass("ProtocolRemoved", $globals.ProtocolAnnouncement, "Kernel-Announcements");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ProtocolRemoved.comment="I am emitted when a protocol is removed from a class.";
- //>>excludeEnd("ide");
- });
- define('amber/core/Platform-Services',["amber/boot", "require", "amber/core/Kernel-Collections", "amber/core/Kernel-Infrastructure", "amber/core/Kernel-Methods", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Platform-Services");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("ConsoleErrorHandler", $globals.Object, "Platform-Services");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ConsoleErrorHandler.comment="I am manage Smalltalk errors, displaying the stack in the console.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "handleError:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anError"],
- source: "handleError: anError\x0a\x09anError context ifNotNil: [ self logErrorContext: anError context ].\x0a\x09self logError: anError",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "context", "logErrorContext:", "logError:"]
- }, function ($methodClass){ return function (anError){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[$recv(anError)._context()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["context"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $self._logErrorContext_($recv(anError)._context());
- }
- $self._logError_(anError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ConsoleErrorHandler);
- $core.addMethod(
- $core.method({
- selector: "log:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "log: aString\x0a\x09console log: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["log:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(console)._log_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"log:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ConsoleErrorHandler);
- $core.addMethod(
- $core.method({
- selector: "logContext:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext"],
- source: "logContext: aContext\x0a\x09aContext home ifNotNil: [\x0a\x09\x09self logContext: aContext home ].\x0a\x09self log: aContext asString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "home", "logContext:", "log:", "asString"]
- }, function ($methodClass){ return function (aContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[$recv(aContext)._home()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["home"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $self._logContext_($recv(aContext)._home());
- }
- $self._log_($recv(aContext)._asString());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"logContext:",{aContext:aContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ConsoleErrorHandler);
- $core.addMethod(
- $core.method({
- selector: "logError:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anError"],
- source: "logError: anError\x0a\x09self log: anError messageText",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["log:", "messageText"]
- }, function ($methodClass){ return function (anError){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._log_($recv(anError)._messageText());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"logError:",{anError:anError})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ConsoleErrorHandler);
- $core.addMethod(
- $core.method({
- selector: "logErrorContext:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext"],
- source: "logErrorContext: aContext\x0a\x09aContext ifNotNil: [\x0a\x09\x09aContext home ifNotNil: [\x0a\x09\x09\x09self logContext: aContext home ]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "home", "logContext:"]
- }, function ($methodClass){ return function (aContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- if(aContext == null || aContext.a$nil){
- aContext;
- } else {
- $1=[$recv(aContext)._home()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["home"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $self._logContext_($recv(aContext)._home());
- }
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"logErrorContext:",{aContext:aContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ConsoleErrorHandler);
- $core.setSlots($globals.ConsoleErrorHandler.a$cls, ["current"]);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09ErrorHandler registerIfNone: self new",
- referencedClasses: ["ErrorHandler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["registerIfNone:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.ErrorHandler)._registerIfNone_($self._new());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ConsoleErrorHandler.a$cls);
- $core.addClass("ConsoleTranscript", $globals.Object, "Platform-Services");
- $core.setSlots($globals.ConsoleTranscript, ["textarea"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ConsoleTranscript.comment="I am a specific transcript emitting to the JavaScript console.\x0a\x0aIf no other transcript is registered, I am the default.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "clear",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "clear\x0a\x09\x22no op\x22",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.ConsoleTranscript);
- $core.addMethod(
- $core.method({
- selector: "cr",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "cr\x0a\x09\x22no op\x22",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.ConsoleTranscript);
- $core.addMethod(
- $core.method({
- selector: "open",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "open",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.ConsoleTranscript);
- $core.addMethod(
- $core.method({
- selector: "show:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "show: anObject\x0a\x22Smalltalk objects should have no trouble displaying themselves on the Transcript; Javascript objects don't know how, so must be wrapped in a JSObectProxy.\x22\x0a<inlineJS: 'console.log(String($recv(anObject)._asString()))'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["console.log(String($recv(anObject)._asString()))"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- console.log(String($recv(anObject)._asString()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ConsoleTranscript);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09Transcript registerIfNone: self new",
- referencedClasses: ["Transcript"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["registerIfNone:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.Transcript)._registerIfNone_($self._new());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ConsoleTranscript.a$cls);
- $core.addClass("Environment", $globals.Object, "Platform-Services");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "addInstVarNamed:to:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aClass"],
- source: "addInstVarNamed: aString to: aClass\x0a\x09| newSlots |\x0a\x09newSlots := aClass slots copyWith: aString.\x0a\x0a\x09aClass isMetaclass\x0a\x09\x09ifTrue: [ self classBuilder\x0a\x09\x09\x09class: aClass slots: newSlots ]\x0a\x09\x09ifFalse: [ self classBuilder\x0a\x09\x09\x09addSubclassOf: aClass superclass \x0a\x09\x09\x09named: aClass name \x0a\x09\x09\x09slots: newSlots\x0a\x09\x09\x09package: aClass package name ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyWith:", "slots", "ifTrue:ifFalse:", "isMetaclass", "class:slots:", "classBuilder", "addSubclassOf:named:slots:package:", "superclass", "name", "package"]
- }, function ($methodClass){ return function (aString,aClass){
- var self=this,$self=this;
- var newSlots;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- newSlots=$recv($recv(aClass)._slots())._copyWith_(aString);
- if($core.assert($recv(aClass)._isMetaclass())){
- $recv([$self._classBuilder()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["classBuilder"]=1
- //>>excludeEnd("ctx");
- ][0])._class_slots_(aClass,newSlots);
- } else {
- $recv($self._classBuilder())._addSubclassOf_named_slots_package_($recv(aClass)._superclass(),[$recv(aClass)._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["name"]=1
- //>>excludeEnd("ctx");
- ][0],newSlots,$recv($recv(aClass)._package())._name());
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addInstVarNamed:to:",{aString:aString,aClass:aClass,newSlots:newSlots})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "allSelectors",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "allSelectors\x0a\x09^ Smalltalk core allSelectors",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["allSelectors", "core"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Smalltalk)._core())._allSelectors();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"allSelectors",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "availableClassNames",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "availableClassNames\x0a\x09^ Smalltalk classes \x0a\x09\x09collect: [ :each | each name ]",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "classes", "name"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Smalltalk)._classes())._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._name();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"availableClassNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "availablePackageNames",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "availablePackageNames\x0a\x09^ Smalltalk packages \x0a\x09\x09collect: [ :each | each name ]",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "packages", "name"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Smalltalk)._packages())._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._name();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"availablePackageNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "availableProtocolsFor:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["protocols", "ifNotNil:", "superclass", "addAll:", "availableProtocolsFor:", "sort", "asArray", "asSet"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- var protocols;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- protocols=$recv(aClass)._protocols();
- $1=[$recv(aClass)._superclass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["superclass"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $recv(protocols)._addAll_($self._availableProtocolsFor_($recv(aClass)._superclass()));
- }
- return $recv($recv($recv(protocols)._asSet())._asArray())._sort();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"availableProtocolsFor:",{aClass:aClass,protocols:protocols})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "classBuilder",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classBuilder\x0a\x09^ ClassBuilder new",
- referencedClasses: ["ClassBuilder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.ClassBuilder)._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"classBuilder",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "classNamed:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "classNamed: aString\x0a\x09^ (Smalltalk globals at: aString asSymbol)\x0a\x09\x09ifNil: [ self error: 'Invalid class name' ]",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "at:", "globals", "asSymbol", "error:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($recv($globals.Smalltalk)._globals())._at_($recv(aString)._asSymbol());
- if($1 == null || $1.a$nil){
- return $self._error_("Invalid class name");
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"classNamed:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "classes",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classes\x0a\x09^ Smalltalk classes",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["classes"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Smalltalk)._classes();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"classes",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "commitPackage:onSuccess:onError:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aBlock", "anotherBlock"],
- source: "commitPackage: aPackage onSuccess: aBlock onError: anotherBlock\x0a\x09aPackage transport\x0a\x09\x09commitOnSuccess: aBlock\x0a\x09\x09onError: anotherBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["commitOnSuccess:onError:", "transport"]
- }, function ($methodClass){ return function (aPackage,aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(aPackage)._transport())._commitOnSuccess_onError_(aBlock,anotherBlock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commitPackage:onSuccess:onError:",{aPackage:aPackage,aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "compileClassComment:for:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aClass"],
- source: "compileClassComment: aString for: aClass\x0a\x09aClass comment: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["comment:"]
- }, function ($methodClass){ return function (aString,aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aClass)._comment_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"compileClassComment:for:",{aString:aString,aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "compileClassDefinition:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "compileClassDefinition: aString\x0a\x09[ self evaluate: aString for: DoIt new ]\x0a\x09\x09on: Error\x0a\x09\x09do: [ :error | Terminal alert: error messageText ]",
- referencedClasses: ["DoIt", "Error", "Terminal"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:do:", "evaluate:for:", "new", "alert:", "messageText"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._evaluate_for_(aString,$recv($globals.DoIt)._new());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._on_do_($globals.Error,(function(error){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.Terminal)._alert_($recv(error)._messageText());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"compileClassDefinition:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "compileMethod:for:protocol:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["sourceCode", "class", "protocol"],
- source: "compileMethod: sourceCode for: class protocol: protocol\x0a\x09^ class\x0a\x09\x09compile: sourceCode\x0a\x09\x09protocol: protocol",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["compile:protocol:"]
- }, function ($methodClass){ return function (sourceCode,class_,protocol){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(class_)._compile_protocol_(sourceCode,protocol);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"compileMethod:for:protocol:",{sourceCode:sourceCode,class_:class_,protocol:protocol})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "copyClass:to:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aClassName"],
- 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",
- referencedClasses: ["Smalltalk", "ClassBuilder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "at:", "globals", "error:", ",", "copyClass:named:", "new"]
- }, function ($methodClass){ return function (aClass,aClassName){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($recv($globals.Smalltalk)._globals())._at_(aClassName);
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $self._error_([$recv("A class named ".__comma(aClassName)).__comma(" already exists")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]);
- }
- $recv($recv($globals.ClassBuilder)._new())._copyClass_named_(aClass,aClassName);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"copyClass:to:",{aClass:aClass,aClassName:aClassName})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "doItReceiver",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "doItReceiver\x0a\x09^ DoIt new",
- referencedClasses: ["DoIt"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.DoIt)._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"doItReceiver",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "evaluate:for:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "evaluate: aString for: anObject\x0a\x09^ Evaluator evaluate: aString for: anObject",
- referencedClasses: ["Evaluator"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["evaluate:for:"]
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Evaluator)._evaluate_for_(aString,anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"evaluate:for:",{aString:aString,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "evaluate:on:do:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anErrorClass", "exceptionBlock"],
- source: "evaluate: aBlock on: anErrorClass do: exceptionBlock\x0a\x09\x22Evaluate a block and catch exceptions happening on the environment stack\x22\x0a\x09\x0a\x09^ aBlock on: (self classNamed: anErrorClass name) do: exceptionBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:do:", "classNamed:", "name"]
- }, function ($methodClass){ return function (aBlock,anErrorClass,exceptionBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._on_do_($self._classNamed_($recv(anErrorClass)._name()),exceptionBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"evaluate:on:do:",{aBlock:aBlock,anErrorClass:anErrorClass,exceptionBlock:exceptionBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "inspect:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "inspect: anObject\x0a\x09Inspector inspect: anObject",
- referencedClasses: ["Inspector"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["inspect:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.Inspector)._inspect_(anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "moveClass:toPackage:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aPackageName"],
- source: "moveClass: aClass toPackage: aPackageName\x0a\x09| package |\x0a\x09\x0a\x09package := Package named: aPackageName.\x0a\x09package ifNil: [ self error: 'Invalid package name' ].\x0a\x09package == aClass package ifTrue: [ ^ self ].\x0a\x09\x0a\x09aClass package: package.\x0a\x09aClass recompile",
- referencedClasses: ["Package"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["named:", "ifNil:", "error:", "ifTrue:", "==", "package", "package:", "recompile"]
- }, function ($methodClass){ return function (aClass,aPackageName){
- var self=this,$self=this;
- var package_;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- package_=$recv($globals.Package)._named_(aPackageName);
- $1=package_;
- if($1 == null || $1.a$nil){
- $self._error_("Invalid package name");
- } else {
- $1;
- }
- if($core.assert($recv(package_).__eq_eq($recv(aClass)._package()))){
- return self;
- }
- $recv(aClass)._package_(package_);
- $recv(aClass)._recompile();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"moveClass:toPackage:",{aClass:aClass,aPackageName:aPackageName,package_:package_})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "moveMethod:toClass:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethod", "aClassName"],
- source: "moveMethod: aMethod toClass: aClassName\x0a\x09| destinationClass |\x0a\x09\x0a\x09destinationClass := self classNamed: aClassName.\x0a\x09destinationClass == aMethod origin ifTrue: [ ^ self ].\x0a\x09\x0a\x09aMethod origin isMetaclass ifTrue: [ \x0a\x09\x09destinationClass := destinationClass theMetaClass ].\x0a\x09\x0a\x09destinationClass \x0a\x09\x09compile: aMethod source\x0a\x09\x09protocol: aMethod protocol.\x0a\x09aMethod origin \x0a\x09\x09removeCompiledMethod: aMethod",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["classNamed:", "ifTrue:", "==", "origin", "isMetaclass", "theMetaClass", "compile:protocol:", "source", "protocol", "removeCompiledMethod:"]
- }, function ($methodClass){ return function (aMethod,aClassName){
- var self=this,$self=this;
- var destinationClass;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- destinationClass=$self._classNamed_(aClassName);
- if($core.assert($recv(destinationClass).__eq_eq([$recv(aMethod)._origin()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["origin"]=1
- //>>excludeEnd("ctx");
- ][0]))){
- return self;
- }
- if($core.assert($recv([$recv(aMethod)._origin()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["origin"]=2
- //>>excludeEnd("ctx");
- ][0])._isMetaclass())){
- destinationClass=$recv(destinationClass)._theMetaClass();
- destinationClass;
- }
- $recv(destinationClass)._compile_protocol_($recv(aMethod)._source(),$recv(aMethod)._protocol());
- $recv($recv(aMethod)._origin())._removeCompiledMethod_(aMethod);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"moveMethod:toClass:",{aMethod:aMethod,aClassName:aClassName,destinationClass:destinationClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "moveMethod:toProtocol:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethod", "aProtocol"],
- source: "moveMethod: aMethod toProtocol: aProtocol\x0a\x09aMethod protocol: aProtocol.\x0a\x0a\x09aMethod origin\x0a\x09\x09compile: aMethod source\x0a\x09\x09protocol: aMethod protocol",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["protocol:", "compile:protocol:", "origin", "source", "protocol"]
- }, function ($methodClass){ return function (aMethod,aProtocol){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aMethod)._protocol_(aProtocol);
- $recv($recv(aMethod)._origin())._compile_protocol_($recv(aMethod)._source(),$recv(aMethod)._protocol());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"moveMethod:toProtocol:",{aMethod:aMethod,aProtocol:aProtocol})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "packages",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "packages\x0a\x09^ Smalltalk packages",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["packages"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Smalltalk)._packages();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"packages",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "registerErrorHandler:",
- protocol: "services",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anErrorHandler"],
- source: "registerErrorHandler: anErrorHandler\x0a\x09ErrorHandler register: anErrorHandler",
- referencedClasses: ["ErrorHandler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["register:"]
- }, function ($methodClass){ return function (anErrorHandler){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.ErrorHandler)._register_(anErrorHandler);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"registerErrorHandler:",{anErrorHandler:anErrorHandler})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "registerFinder:",
- protocol: "services",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aFinder"],
- source: "registerFinder: aFinder\x0a\x09Finder register: aFinder",
- referencedClasses: ["Finder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["register:"]
- }, function ($methodClass){ return function (aFinder){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.Finder)._register_(aFinder);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"registerFinder:",{aFinder:aFinder})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "registerInspector:",
- protocol: "services",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInspector"],
- source: "registerInspector: anInspector\x0a\x09Inspector register: anInspector",
- referencedClasses: ["Inspector"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["register:"]
- }, function ($methodClass){ return function (anInspector){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.Inspector)._register_(anInspector);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"registerInspector:",{anInspector:anInspector})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "registerProgressHandler:",
- protocol: "services",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aProgressHandler"],
- source: "registerProgressHandler: aProgressHandler\x0a\x09ProgressHandler register: aProgressHandler",
- referencedClasses: ["ProgressHandler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["register:"]
- }, function ($methodClass){ return function (aProgressHandler){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.ProgressHandler)._register_(aProgressHandler);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"registerProgressHandler:",{aProgressHandler:aProgressHandler})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "registerTranscript:",
- protocol: "services",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aTranscript"],
- source: "registerTranscript: aTranscript\x0a\x09Transcript register: aTranscript",
- referencedClasses: ["Transcript"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["register:"]
- }, function ($methodClass){ return function (aTranscript){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.Transcript)._register_(aTranscript);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"registerTranscript:",{aTranscript:aTranscript})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "removeClass:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "removeClass: aClass\x0a\x09Smalltalk removeClass: aClass",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["removeClass:"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.Smalltalk)._removeClass_(aClass);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeClass:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "removeMethod:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethod"],
- source: "removeMethod: aMethod\x0a\x09aMethod origin removeCompiledMethod: aMethod",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["removeCompiledMethod:", "origin"]
- }, function ($methodClass){ return function (aMethod){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(aMethod)._origin())._removeCompiledMethod_(aMethod);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeMethod:",{aMethod:aMethod})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "removeProtocol:from:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aClass"],
- source: "removeProtocol: aString from: aClass\x0a\x09(aClass methodsInProtocol: aString)\x0a\x09\x09do: [ :each | aClass removeCompiledMethod: each ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "methodsInProtocol:", "removeCompiledMethod:"]
- }, function ($methodClass){ return function (aString,aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(aClass)._methodsInProtocol_(aString))._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aClass)._removeCompiledMethod_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeProtocol:from:",{aString:aString,aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "renameClass:to:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aClassName"],
- 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",
- referencedClasses: ["Smalltalk", "ClassBuilder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "at:", "globals", "error:", ",", "renameClass:to:", "new"]
- }, function ($methodClass){ return function (aClass,aClassName){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($recv($globals.Smalltalk)._globals())._at_(aClassName);
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $self._error_([$recv("A class named ".__comma(aClassName)).__comma(" already exists")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]);
- }
- $recv($recv($globals.ClassBuilder)._new())._renameClass_to_(aClass,aClassName);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"renameClass:to:",{aClass:aClass,aClassName:aClassName})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "renamePackage:to:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackageName", "aNewPackageName"],
- source: "renamePackage: aPackageName to: aNewPackageName\x0a Smalltalk renamePackage: aPackageName to: aNewPackageName",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["renamePackage:to:"]
- }, function ($methodClass){ return function (aPackageName,aNewPackageName){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.Smalltalk)._renamePackage_to_(aPackageName,aNewPackageName);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"renamePackage:to:",{aPackageName:aPackageName,aNewPackageName:aNewPackageName})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "renameProtocol:to:in:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anotherString", "aClass"],
- source: "renameProtocol: aString to: anotherString in: aClass\x0a\x09(aClass methodsInProtocol: aString)\x0a\x09\x09do: [ :each | each protocol: anotherString ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "methodsInProtocol:", "protocol:"]
- }, function ($methodClass){ return function (aString,anotherString,aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(aClass)._methodsInProtocol_(aString))._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._protocol_(anotherString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"renameProtocol:to:in:",{aString:aString,anotherString:anotherString,aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "setClassCommentOf:to:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aString"],
- source: "setClassCommentOf: aClass to: aString\x0a\x09aClass comment: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["comment:"]
- }, function ($methodClass){ return function (aClass,aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aClass)._comment_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setClassCommentOf:to:",{aClass:aClass,aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addMethod(
- $core.method({
- selector: "systemAnnouncer",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "systemAnnouncer\x0a\x09^ (Smalltalk globals at: #SystemAnnouncer) current",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["current", "at:", "globals"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($recv($globals.Smalltalk)._globals())._at_("SystemAnnouncer"))._current();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"systemAnnouncer",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Environment);
- $core.addClass("NullProgressHandler", $globals.Object, "Platform-Services");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.NullProgressHandler.comment="I am the default progress handler. I do not display any progress, and simply iterate over the collection.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "do:on:displaying:",
- protocol: "progress handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "aCollection", "aString"],
- source: "do: aBlock on: aCollection displaying: aString\x0a\x09aCollection do: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:"]
- }, function ($methodClass){ return function (aBlock,aCollection,aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aCollection)._do_(aBlock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"do:on:displaying:",{aBlock:aBlock,aCollection:aCollection,aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NullProgressHandler);
- $core.setSlots($globals.NullProgressHandler.a$cls, ["current"]);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09ProgressHandler registerIfNone: self new",
- referencedClasses: ["ProgressHandler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["registerIfNone:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.ProgressHandler)._registerIfNone_($self._new());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NullProgressHandler.a$cls);
- $core.addClass("Service", $globals.Object, "Platform-Services");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.setSlots($globals.Service.a$cls, ["current"]);
- $core.addMethod(
- $core.method({
- selector: "current",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "current\x0a\x09^ current",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.current;
- }; }),
- $globals.Service.a$cls);
- $core.addMethod(
- $core.method({
- selector: "new",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "new\x0a\x09self shouldNotImplement",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["shouldNotImplement"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._shouldNotImplement();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"new",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Service.a$cls);
- $core.addMethod(
- $core.method({
- selector: "register:",
- protocol: "registration",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "register: anObject\x0a\x09current := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.current=anObject;
- return self;
- }; }),
- $globals.Service.a$cls);
- $core.addMethod(
- $core.method({
- selector: "registerIfNone:",
- protocol: "registration",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "registerIfNone: anObject\x0a\x09self current ifNil: [ self register: anObject ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "current", "register:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._current();
- if($1 == null || $1.a$nil){
- $self._register_(anObject);
- } else {
- $1;
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"registerIfNone:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Service.a$cls);
- $core.addClass("ErrorHandler", $globals.Service, "Platform-Services");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "handleError:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anError"],
- source: "handleError: anError\x0a\x09| smalltalkError |\x0a\x09smalltalkError := Smalltalk asSmalltalkException: anError.\x0a\x09smalltalkError context ifNil: [ smalltalkError context: thisContext ].\x0a\x09self handleUnhandledError: smalltalkError",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["asSmalltalkException:", "ifNil:", "context", "context:", "handleUnhandledError:"]
- }, function ($methodClass){ return function (anError){
- var self=this,$self=this;
- var smalltalkError;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- smalltalkError=$recv($globals.Smalltalk)._asSmalltalkException_(anError);
- $1=$recv(smalltalkError)._context();
- if($1 == null || $1.a$nil){
- $recv(smalltalkError)._context_($core.getThisContext());
- } else {
- $1;
- }
- $self._handleUnhandledError_(smalltalkError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"handleError:",{anError:anError,smalltalkError:smalltalkError})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ErrorHandler.a$cls);
- $core.addMethod(
- $core.method({
- selector: "handleUnhandledError:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anError"],
- source: "handleUnhandledError: anError\x0a\x09anError wasHandled ifFalse: [\x0a\x09\x09self current handleError: anError.\x0a\x09\x09anError beHandled ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "wasHandled", "handleError:", "current", "beHandled"]
- }, function ($methodClass){ return function (anError){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv(anError)._wasHandled())){
- $recv($self._current())._handleError_(anError);
- $recv(anError)._beHandled();
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"handleUnhandledError:",{anError:anError})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ErrorHandler.a$cls);
- $core.addClass("Finder", $globals.Service, "Platform-Services");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "findClass:",
- protocol: "finding",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "findClass: aClass\x0a\x09^ self current findClass: aClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["findClass:", "current"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._current())._findClass_(aClass);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"findClass:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Finder.a$cls);
- $core.addMethod(
- $core.method({
- selector: "findMethod:",
- protocol: "finding",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCompiledMethod"],
- source: "findMethod: aCompiledMethod\x0a\x09^ self current findMethod: aCompiledMethod",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["findMethod:", "current"]
- }, function ($methodClass){ return function (aCompiledMethod){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._current())._findMethod_(aCompiledMethod);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"findMethod:",{aCompiledMethod:aCompiledMethod})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Finder.a$cls);
- $core.addMethod(
- $core.method({
- selector: "findString:",
- protocol: "finding",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "findString: aString\x0a\x09^ self current findString: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["findString:", "current"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._current())._findString_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"findString:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Finder.a$cls);
- $core.addClass("Inspector", $globals.Service, "Platform-Services");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.Inspector.comment="I am the service responsible for inspecting objects.\x0a\x0aThe default inspector object is the transcript.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "inspect:",
- protocol: "inspecting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "inspect: anObject\x0a\x09^ self current inspect: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["inspect:", "current"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._current())._inspect_(anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Inspector.a$cls);
- $core.addClass("Platform", $globals.Service, "Platform-Services");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.Platform.comment="I am bridge to JS environment.\x0a\x0a## API\x0a\x0a Platform globals. \x22JS global object\x22\x0a Platform newXHR \x22new XMLHttpRequest() or its shim\x22";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "fetch:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStringOrObject"],
- source: "fetch: aStringOrObject\x0a\x09^ self current fetch: aStringOrObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["fetch:", "current"]
- }, function ($methodClass){ return function (aStringOrObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._current())._fetch_(aStringOrObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fetch:",{aStringOrObject:aStringOrObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Platform.a$cls);
- $core.addMethod(
- $core.method({
- selector: "fetchUrl:options:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "fetchUrl: aString options: anObject\x0a\x09^ self current fetchUrl: aString options: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["fetchUrl:options:", "current"]
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._current())._fetchUrl_options_(aString,anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fetchUrl:options:",{aString:aString,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Platform.a$cls);
- $core.addMethod(
- $core.method({
- selector: "globals",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "globals\x0a\x09^ self current globals",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["globals", "current"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._current())._globals();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"globals",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Platform.a$cls);
- $core.addMethod(
- $core.method({
- selector: "includesGlobal:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "includesGlobal: aString\x0a\x09^ self globals \x0a\x09\x09at: aString \x0a\x09\x09ifPresent: [ true ] \x0a\x09\x09ifAbsent: [ false ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifPresent:ifAbsent:", "globals"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._globals())._at_ifPresent_ifAbsent_(aString,(function(){
- return true;
- }),(function(){
- return false;
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"includesGlobal:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Platform.a$cls);
- $core.addMethod(
- $core.method({
- selector: "newXhr",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "newXhr\x0a\x09^ self current newXhr",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["newXhr", "current"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._current())._newXhr();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newXhr",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Platform.a$cls);
- $core.addClass("ProgressHandler", $globals.Service, "Platform-Services");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "do:on:displaying:",
- protocol: "progress handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "aCollection", "aString"],
- source: "do: aBlock on: aCollection displaying: aString\x0a\x09self current do: aBlock on: aCollection displaying: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:on:displaying:", "current"]
- }, function ($methodClass){ return function (aBlock,aCollection,aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._current())._do_on_displaying_(aBlock,aCollection,aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"do:on:displaying:",{aBlock:aBlock,aCollection:aCollection,aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ProgressHandler.a$cls);
- $core.addClass("Terminal", $globals.Service, "Platform-Services");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.Terminal.comment="I am UI interface service.\x0a\x0a## API\x0a\x0a Terminal alert: 'Hey, there is a problem'.\x0a Terminal confirm: 'Affirmative?'.\x0a Terminal prompt: 'Your name:'.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "alert:",
- protocol: "dialogs",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "alert: aString\x0a\x09^ self current alert: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["alert:", "current"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._current())._alert_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"alert:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Terminal.a$cls);
- $core.addMethod(
- $core.method({
- selector: "confirm:",
- protocol: "dialogs",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "confirm: aString\x0a\x09^ self current confirm: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["confirm:", "current"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._current())._confirm_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"confirm:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Terminal.a$cls);
- $core.addMethod(
- $core.method({
- selector: "prompt:",
- protocol: "dialogs",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "prompt: aString\x0a\x09^ self current prompt: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["prompt:", "current"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._current())._prompt_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"prompt:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Terminal.a$cls);
- $core.addMethod(
- $core.method({
- selector: "prompt:default:",
- protocol: "dialogs",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "defaultString"],
- source: "prompt: aString default: defaultString\x0a\x09^ self current prompt: aString default: defaultString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["prompt:default:", "current"]
- }, function ($methodClass){ return function (aString,defaultString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._current())._prompt_default_(aString,defaultString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"prompt:default:",{aString:aString,defaultString:defaultString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Terminal.a$cls);
- $core.addClass("Transcript", $globals.Service, "Platform-Services");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "clear",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "clear\x0a\x09self current clear",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["clear", "current"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._current())._clear();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"clear",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Transcript.a$cls);
- $core.addMethod(
- $core.method({
- selector: "cr",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "cr\x0a\x09self current show: String cr",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["show:", "current", "cr"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._current())._show_($recv($globals.String)._cr());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"cr",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Transcript.a$cls);
- $core.addMethod(
- $core.method({
- selector: "inspect:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "inspect: anObject\x0a\x09self show: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["show:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._show_(anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inspect:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Transcript.a$cls);
- $core.addMethod(
- $core.method({
- selector: "open",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "open\x0a\x09self current open",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["open", "current"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._current())._open();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"open",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Transcript.a$cls);
- $core.addMethod(
- $core.method({
- selector: "show:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "show: anObject\x0a\x09self current show: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["show:", "current"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._current())._show_(anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"show:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Transcript.a$cls);
- $core.addMethod(
- $core.method({
- selector: "inspectOn:",
- protocol: "*Platform-Services",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInspector"],
- source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Array streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPut: '#self' -> self;\x0a\x09\x09\x09nextPut: '#keys' -> self keys;\x0a\x09\x09\x09nextPutAll: self associations ].\x0a\x09anInspector\x0a\x09\x09setLabel: self shortenedPrintString;\x0a\x09\x09setVariables: variables",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "nextPut:", "->", "keys", "nextPutAll:", "associations", "setLabel:", "shortenedPrintString", "setVariables:"]
- }, function ($methodClass){ return function (anInspector){
- var self=this,$self=this;
- var variables;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- variables=$recv($globals.Array)._streamContents_((function(stream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(stream)._nextPut_(["#self".__minus_gt(self)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["->"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(stream)._nextPut_("#keys".__minus_gt($self._keys()));
- return $recv(stream)._nextPutAll_($self._associations());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv(anInspector)._setLabel_($self._shortenedPrintString());
- $recv(anInspector)._setVariables_(variables);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollection);
- $core.addMethod(
- $core.method({
- selector: "inspectOn:",
- protocol: "*Platform-Services",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInspector"],
- source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Array streamContents: [ :stream |\x0a\x09\x09| i |\x0a\x09\x09stream nextPut: '#self' -> self.\x0a\x09\x09i := 1.\x0a\x09\x09self do: [ :each |\x0a\x09\x09\x09stream nextPut: i -> each.\x0a\x09\x09\x09i := i + 1 ] ].\x0a\x09anInspector\x0a\x09\x09setLabel: self shortenedPrintString;\x0a\x09\x09setVariables: variables",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "nextPut:", "->", "do:", "+", "setLabel:", "shortenedPrintString", "setVariables:"]
- }, function ($methodClass){ return function (anInspector){
- var self=this,$self=this;
- var variables;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- variables=$recv($globals.Array)._streamContents_((function(stream){
- var i;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(stream)._nextPut_(["#self".__minus_gt(self)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["->"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=1
- //>>excludeEnd("ctx");
- ][0];
- i=(1);
- return $self._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- $recv(stream)._nextPut_($recv(i).__minus_gt(each));
- i=$recv(i).__plus((1));
- return i;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream,i:i},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv(anInspector)._setLabel_($self._shortenedPrintString());
- $recv(anInspector)._setVariables_(variables);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "inspectOn:",
- protocol: "*Platform-Services",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInspector"],
- source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Array streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPut: '#self' -> self;\x0a\x09\x09\x09nextPut: '#year' -> self year;\x0a\x09\x09\x09nextPut: '#month' -> self month;\x0a\x09\x09\x09nextPut: '#day' -> self day;\x0a\x09\x09\x09nextPut: '#hours' -> self hours;\x0a\x09\x09\x09nextPut: '#minutes' -> self minutes;\x0a\x09\x09\x09nextPut: '#seconds' -> self seconds;\x0a\x09\x09\x09nextPut: '#milliseconds' -> self milliseconds ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "nextPut:", "->", "year", "month", "day", "hours", "minutes", "seconds", "milliseconds", "setLabel:", "printString", "setVariables:"]
- }, function ($methodClass){ return function (anInspector){
- var self=this,$self=this;
- var variables;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- variables=$recv($globals.Array)._streamContents_((function(stream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(stream)._nextPut_(["#self".__minus_gt(self)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["->"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._nextPut_(["#year".__minus_gt($self._year())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["->"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._nextPut_(["#month".__minus_gt($self._month())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["->"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._nextPut_(["#day".__minus_gt($self._day())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["->"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._nextPut_(["#hours".__minus_gt($self._hours())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["->"]=5
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=5
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._nextPut_(["#minutes".__minus_gt($self._minutes())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["->"]=6
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=6
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._nextPut_(["#seconds".__minus_gt($self._seconds())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["->"]=7
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=7
- //>>excludeEnd("ctx");
- ][0];
- return $recv(stream)._nextPut_("#milliseconds".__minus_gt($self._milliseconds()));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv(anInspector)._setLabel_($self._printString());
- $recv(anInspector)._setVariables_(variables);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Date);
- $core.addMethod(
- $core.method({
- selector: "inspectOn:",
- protocol: "*Platform-Services",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInspector"],
- source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Array streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPut: '#self' -> self jsObject;\x0a\x09\x09\x09nextPutAll: (JSObjectProxy associationsOfProxy: self) ].\x0a\x09anInspector setLabel: self printString.\x0a\x09anInspector setVariables: variables",
- referencedClasses: ["Array", "JSObjectProxy"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "nextPut:", "->", "jsObject", "nextPutAll:", "associationsOfProxy:", "setLabel:", "printString", "setVariables:"]
- }, function ($methodClass){ return function (anInspector){
- var self=this,$self=this;
- var variables;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- variables=$recv($globals.Array)._streamContents_((function(stream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(stream)._nextPut_("#self".__minus_gt($self._jsObject()));
- return $recv(stream)._nextPutAll_($recv($globals.JSObjectProxy)._associationsOfProxy_(self));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv(anInspector)._setLabel_($self._printString());
- $recv(anInspector)._setVariables_(variables);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "inspectOn:",
- protocol: "*Platform-Services",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInspector"],
- source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Array streamContents: [ :stream |\x0a\x09\x09stream nextPut: '#self' -> self.\x0a\x09\x09self class allInstanceVariableNames do: [ :each |\x0a\x09\x09\x09stream nextPut: each -> (self instVarNamed: each) ] ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "nextPut:", "->", "do:", "allInstanceVariableNames", "class", "instVarNamed:", "setLabel:", "printString", "setVariables:"]
- }, function ($methodClass){ return function (anInspector){
- var self=this,$self=this;
- var variables;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- variables=$recv($globals.Array)._streamContents_((function(stream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(stream)._nextPut_(["#self".__minus_gt(self)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["->"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $recv($recv($self._class())._allInstanceVariableNames())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(stream)._nextPut_($recv(each).__minus_gt($self._instVarNamed_(each)));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv(anInspector)._setLabel_($self._printString());
- $recv(anInspector)._setVariables_(variables);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Object);
- $core.addMethod(
- $core.method({
- selector: "do:displayingProgress:",
- protocol: "*Platform-Services",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "aString"],
- source: "do: aBlock displayingProgress: aString\x0a\x09ProgressHandler \x0a\x09\x09do: aBlock \x0a\x09\x09on: self \x0a\x09\x09displaying: aString",
- referencedClasses: ["ProgressHandler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:on:displaying:"]
- }, function ($methodClass){ return function (aBlock,aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.ProgressHandler)._do_on_displaying_(aBlock,self,aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"do:displayingProgress:",{aBlock:aBlock,aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "inspectOn:",
- protocol: "*Platform-Services",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInspector"],
- source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Array streamContents: [ :stream |\x0a\x09\x09stream nextPut: '#self' -> self.\x0a\x09\x09self withIndexDo: [ :each :i |\x0a\x09\x09\x09stream nextPut: i -> each ] ].\x0a\x09anInspector\x0a\x09\x09setLabel: self shortenedPrintString;\x0a\x09\x09setVariables: variables",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "nextPut:", "->", "withIndexDo:", "setLabel:", "shortenedPrintString", "setVariables:"]
- }, function ($methodClass){ return function (anInspector){
- var self=this,$self=this;
- var variables;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- variables=$recv($globals.Array)._streamContents_((function(stream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(stream)._nextPut_(["#self".__minus_gt(self)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["->"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $self._withIndexDo_((function(each,i){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(stream)._nextPut_($recv(i).__minus_gt(each));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each,i:i},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv(anInspector)._setLabel_($self._shortenedPrintString());
- $recv(anInspector)._setVariables_(variables);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollection);
- $core.addMethod(
- $core.method({
- selector: "inspectOn:",
- protocol: "*Platform-Services",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInspector"],
- source: "inspectOn: anInspector\x0a\x09| variables |\x0a\x09variables := Array streamContents: [ :stream |\x0a\x09\x09stream\x0a\x09\x09\x09nextPut: '#self' -> self;\x0a\x09\x09\x09nextPut: '#home' -> self home;\x0a\x09\x09\x09nextPut: '#receiver' -> self receiver;\x0a\x09\x09\x09nextPut: '#selector' -> self selector;\x0a\x09\x09\x09nextPut: '#locals' -> self locals.\x0a\x09self class instanceVariableNames do: [ :each |\x0a\x09\x09stream nextPut: each -> (self instVarNamed: each) ] ].\x0a\x09anInspector\x0a\x09\x09setLabel: self printString;\x0a\x09\x09setVariables: variables",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "nextPut:", "->", "home", "receiver", "selector", "locals", "do:", "instanceVariableNames", "class", "instVarNamed:", "setLabel:", "printString", "setVariables:"]
- }, function ($methodClass){ return function (anInspector){
- var self=this,$self=this;
- var variables;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- variables=$recv($globals.Array)._streamContents_((function(stream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(stream)._nextPut_(["#self".__minus_gt(self)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["->"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._nextPut_(["#home".__minus_gt($self._home())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["->"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._nextPut_(["#receiver".__minus_gt($self._receiver())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["->"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._nextPut_(["#selector".__minus_gt($self._selector())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["->"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._nextPut_(["#locals".__minus_gt($self._locals())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["->"]=5
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPut:"]=5
- //>>excludeEnd("ctx");
- ][0];
- return $recv($recv($self._class())._instanceVariableNames())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(stream)._nextPut_($recv(each).__minus_gt($self._instVarNamed_(each)));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv(anInspector)._setLabel_($self._printString());
- $recv(anInspector)._setVariables_(variables);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inspectOn:",{anInspector:anInspector,variables:variables})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMethodContext);
- });
- define('amber/deploy',[
- './helpers',
- './boot', // pre-fetch, dep of ./helpers
- // --- packages of the core Amber begin here ---
- 'amber/core/Kernel-Helpers',
- 'amber/core/Kernel-Objects',
- 'amber/core/Kernel-Classes',
- 'amber/core/Kernel-Methods',
- 'amber/core/Kernel-Collections',
- 'amber/core/Kernel-Dag',
- 'amber/core/Kernel-Infrastructure',
- 'amber/core/Kernel-Promises',
- 'amber/core/Kernel-Exceptions',
- 'amber/core/Kernel-Announcements',
- 'amber/core/Platform-Services',
- // --- packages of the core Amber end here ---
- ], function (amber) {
- return amber;
- });
- /*
- * Generated by PEG.js 0.10.0.
- *
- * http://pegjs.org/
- */
- define('amber/parser',["./boot"], function(__boot) {
- "use strict";
- function peg$subclass(child, parent) {
- function ctor() { this.constructor = child; }
- ctor.prototype = parent.prototype;
- child.prototype = new ctor();
- }
- function peg$SyntaxError(message, expected, found, location) {
- this.message = message;
- this.expected = expected;
- this.found = found;
- this.location = location;
- this.name = "SyntaxError";
- if (typeof Error.captureStackTrace === "function") {
- Error.captureStackTrace(this, peg$SyntaxError);
- }
- }
- peg$subclass(peg$SyntaxError, Error);
- peg$SyntaxError.buildMessage = function(expected, found) {
- var DESCRIBE_EXPECTATION_FNS = {
- literal: function(expectation) {
- return "\"" + literalEscape(expectation.text) + "\"";
- },
- "class": function(expectation) {
- var escapedParts = "",
- i;
- for (i = 0; i < expectation.parts.length; i++) {
- escapedParts += expectation.parts[i] instanceof Array
- ? classEscape(expectation.parts[i][0]) + "-" + classEscape(expectation.parts[i][1])
- : classEscape(expectation.parts[i]);
- }
- return "[" + (expectation.inverted ? "^" : "") + escapedParts + "]";
- },
- any: function(expectation) {
- return "any character";
- },
- end: function(expectation) {
- return "end of input";
- },
- other: function(expectation) {
- return expectation.description;
- }
- };
- function hex(ch) {
- return ch.charCodeAt(0).toString(16).toUpperCase();
- }
- function literalEscape(s) {
- return s
- .replace(/\\/g, '\\\\')
- .replace(/"/g, '\\"')
- .replace(/\0/g, '\\0')
- .replace(/\t/g, '\\t')
- .replace(/\n/g, '\\n')
- .replace(/\r/g, '\\r')
- .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); })
- .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); });
- }
- function classEscape(s) {
- return s
- .replace(/\\/g, '\\\\')
- .replace(/\]/g, '\\]')
- .replace(/\^/g, '\\^')
- .replace(/-/g, '\\-')
- .replace(/\0/g, '\\0')
- .replace(/\t/g, '\\t')
- .replace(/\n/g, '\\n')
- .replace(/\r/g, '\\r')
- .replace(/[\x00-\x0F]/g, function(ch) { return '\\x0' + hex(ch); })
- .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return '\\x' + hex(ch); });
- }
- function describeExpectation(expectation) {
- return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);
- }
- function describeExpected(expected) {
- var descriptions = new Array(expected.length),
- i, j;
- for (i = 0; i < expected.length; i++) {
- descriptions[i] = describeExpectation(expected[i]);
- }
- descriptions.sort();
- if (descriptions.length > 0) {
- for (i = 1, j = 1; i < descriptions.length; i++) {
- if (descriptions[i - 1] !== descriptions[i]) {
- descriptions[j] = descriptions[i];
- j++;
- }
- }
- descriptions.length = j;
- }
- switch (descriptions.length) {
- case 1:
- return descriptions[0];
- case 2:
- return descriptions[0] + " or " + descriptions[1];
- default:
- return descriptions.slice(0, -1).join(", ")
- + ", or "
- + descriptions[descriptions.length - 1];
- }
- }
- function describeFound(found) {
- return found ? "\"" + literalEscape(found) + "\"" : "end of input";
- }
- return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found.";
- };
- function peg$parse(input, options) {
- options = options !== void 0 ? options : {};
- var peg$FAILED = {},
- peg$startRuleFunctions = { start: peg$parsestart },
- peg$startRuleFunction = peg$parsestart,
- peg$c0 = /^[ \t\x0B\f\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF\n\r\u2028\u2029]/,
- peg$c1 = peg$classExpectation([" ", "\t", "\x0B", "\f", "\xA0", "\u1680", ["\u2000", "\u200A"], "\u202F", "\u205F", "\u3000", "\uFEFF", "\n", "\r", "\u2028", "\u2029"], false, false),
- peg$c2 = "\"",
- peg$c3 = peg$literalExpectation("\"", false),
- peg$c4 = /^[^"]/,
- peg$c5 = peg$classExpectation(["\""], true, false),
- peg$c6 = ".",
- peg$c7 = peg$literalExpectation(".", false),
- peg$c8 = /^[a-zA-Z]/,
- peg$c9 = peg$classExpectation([["a", "z"], ["A", "Z"]], false, false),
- peg$c10 = /^[a-zA-Z0-9]/,
- peg$c11 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false),
- peg$c12 = ":",
- peg$c13 = peg$literalExpectation(":", false),
- peg$c14 = /^[A-Z]/,
- peg$c15 = peg$classExpectation([["A", "Z"]], false, false),
- peg$c16 = function(val) {
- return newNode($globals.ValueNode)._value_(val);
- },
- peg$c17 = "'",
- peg$c18 = peg$literalExpectation("'", false),
- peg$c19 = "''",
- peg$c20 = peg$literalExpectation("''", false),
- peg$c21 = function() {return '\'';},
- peg$c22 = /^[^']/,
- peg$c23 = peg$classExpectation(["'"], true, false),
- peg$c24 = function(val) {return val.join('');},
- peg$c25 = "$",
- peg$c26 = peg$literalExpectation("$", false),
- peg$c27 = peg$anyExpectation(),
- peg$c28 = function(char) {
- return newNode($globals.ValueNode)._value_(char);
- },
- peg$c29 = "#",
- peg$c30 = peg$literalExpectation("#", false),
- peg$c31 = function(rest) {return rest;},
- peg$c32 = "e",
- peg$c33 = peg$literalExpectation("e", false),
- peg$c34 = function(n) {return parseFloat(n);},
- peg$c35 = "-",
- peg$c36 = peg$literalExpectation("-", false),
- peg$c37 = "16r",
- peg$c38 = peg$literalExpectation("16r", false),
- peg$c39 = /^[0-9a-fA-F]/,
- peg$c40 = peg$classExpectation([["0", "9"], ["a", "f"], ["A", "F"]], false, false),
- peg$c41 = function(neg, num) {
- return parseInt(((neg || '') + num), 16);
- },
- peg$c42 = /^[0-9]/,
- peg$c43 = peg$classExpectation([["0", "9"]], false, false),
- peg$c44 = function(n) {return parseFloat(n, 10);},
- peg$c45 = function(n) {return parseInt(n, 10);},
- peg$c46 = "#(",
- peg$c47 = peg$literalExpectation("#(", false),
- peg$c48 = ")",
- peg$c49 = peg$literalExpectation(")", false),
- peg$c50 = function(rest) {
- return newNode($globals.ValueNode)._value_(rest);
- },
- peg$c51 = "(",
- peg$c52 = peg$literalExpectation("(", false),
- peg$c53 = function(lit) {return lit._value();},
- peg$c54 = "{",
- peg$c55 = peg$literalExpectation("{", false),
- peg$c56 = "}",
- peg$c57 = peg$literalExpectation("}", false),
- peg$c58 = function(expressions) {
- return newNode($globals.DynamicArrayNode)._dagChildren_(expressions || []);
- },
- peg$c59 = "#{",
- peg$c60 = peg$literalExpectation("#{", false),
- peg$c61 = function(expressions) {
- return newNode($globals.DynamicDictionaryNode)._dagChildren_(expressions || []);
- },
- peg$c62 = "true",
- peg$c63 = peg$literalExpectation("true", false),
- peg$c64 = function() {return true;},
- peg$c65 = "false",
- peg$c66 = peg$literalExpectation("false", false),
- peg$c67 = function() {return false;},
- peg$c68 = "nil",
- peg$c69 = peg$literalExpectation("nil", false),
- peg$c70 = function() {return null;},
- peg$c71 = function(identifier) {
- return newNode($globals.VariableNode)._identifier_(identifier);
- },
- peg$c72 = /^[\\+*\/=><,@%~|&\-]/,
- peg$c73 = peg$classExpectation(["\\", "+", "*", "/", "=", ">", "<", ",", "@", "%", "~", "|", "&", "-"], false, false),
- peg$c74 = function(key, arg) {return {key:key, arg:arg};},
- peg$c75 = function(pairs) {
- var selector = '';
- var params = [];
- for(var i = 0; i < pairs.length; i++) {
- selector += pairs[i].key;
- params.push(pairs[i].arg);
- }
- return [selector, params];
- },
- peg$c76 = function(selector, arg) {
- return [selector, [arg]];
- },
- peg$c77 = function(selector) {return [selector, []];},
- peg$c78 = function(expression) {
- return expression;
- },
- peg$c79 = function(first, others) {
- return [first].concat(others);
- },
- peg$c80 = function(selector) {
- return $globals.Message._selector_arguments_(selector, []);
- },
- peg$c81 = function(pairs) {
- var selector = '';
- var args = [];
- for(var i = 0; i < pairs.length; i++) {
- selector += pairs[i].key;
- args.push(pairs[i].arg._value());
- }
- return $globals.Message._selector_arguments_(selector, args)
- },
- peg$c82 = "<",
- peg$c83 = peg$literalExpectation("<", false),
- peg$c84 = ">",
- peg$c85 = peg$literalExpectation(">", false),
- peg$c86 = function(message) {return message;},
- peg$c87 = ":=",
- peg$c88 = peg$literalExpectation(":=", false),
- peg$c89 = function(variable, expression) {
- return newNode($globals.AssignmentNode)._left_(variable)._right_(expression);
- },
- peg$c90 = "^",
- peg$c91 = peg$literalExpectation("^", false),
- peg$c92 = function(expression) {
- return newNode($globals.ReturnNode)._expression_(expression);
- },
- peg$c93 = "|",
- peg$c94 = peg$literalExpectation("|", false),
- peg$c95 = function(variable) {return variable;},
- peg$c96 = function(vars) {
- return vars;
- },
- peg$c97 = function(param) {return param;},
- peg$c98 = function(params) {
- return params;
- },
- peg$c99 = function(ret) {return [ret];},
- peg$c100 = function(exps, ret) {
- var expressions = exps;
- expressions.push(ret);
- return expressions;
- },
- peg$c101 = function(expressions) {return expressions || [];},
- peg$c102 = "[",
- peg$c103 = peg$literalExpectation("[", false),
- peg$c104 = "]",
- peg$c105 = peg$literalExpectation("]", false),
- peg$c106 = function(params, temps, statements) {
- return newNode($globals.BlockNode)
- ._parameters_(params || [])
- ._sequenceNode_(newSequenceNode($globals.BlockSequenceNode, temps, statements));
- },
- peg$c107 = function(selector) {
- return newNode($globals.SendNode)._selector_(selector);
- },
- peg$c108 = function(receiver, tail) {
- return receiver._withTail_(tail);
- },
- peg$c109 = function(selector, arg) {
- return newNode($globals.SendNode)._selector_(selector)._arguments_([arg]);
- },
- peg$c110 = function(unarys, binarys) { return unarys.concat(binarys); },
- peg$c111 = function(pairs) {
- var selector = '';
- var args = [];
- for(var i = 0; i < pairs.length; i++) {
- selector += pairs[i].key;
- args.push(pairs[i].arg);
- }
- return newNode($globals.SendNode)._selector_(selector)._arguments_(args);
- },
- peg$c112 = function(binarys, final) {
- if (final) binarys.push(final);
- return binarys;
- },
- peg$c113 = function(receiver, tail) {return tail.length > 0;},
- peg$c114 = ";",
- peg$c115 = peg$literalExpectation(";", false),
- peg$c116 = function(receiver, tail, mess) {return mess;},
- peg$c117 = function(receiver, tail, messages) {
- messages.unshift(receiver._withTail_(tail));
- return newNode($globals.CascadeNode)._dagChildren_(messages);
- },
- peg$c118 = function(pattern, aPragmas, temps, zPragmas, statements) {
- return newNode($globals.MethodNode)
- ._selector_(pattern[0])
- ._arguments_(pattern[1])
- ._pragmas_((aPragmas || []).concat(zPragmas || []))
- ._sequenceNode_(newSequenceNode($globals.SequenceNode, temps, statements));
- },
- peg$c119 = function(receiver, tail) { return tail.length > 0 && tail[tail.length-1]._selector() === '->' },
- peg$c120 = function(receiver, tail) {
- var last = tail.pop();
- return [receiver._withTail_(tail), last._arguments()[0]];
- },
- peg$c121 = function(first, others) {
- return first.concat.apply(first, others);
- },
- peg$currPos = 0,
- peg$savedPos = 0,
- peg$posDetailsCache = [{ line: 1, column: 1 }],
- peg$maxFailPos = 0,
- peg$maxFailExpected = [],
- peg$silentFails = 0,
- peg$resultsCache = {},
- peg$result;
- if ("startRule" in options) {
- if (!(options.startRule in peg$startRuleFunctions)) {
- throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");
- }
- peg$startRuleFunction = peg$startRuleFunctions[options.startRule];
- }
- function text() {
- return input.substring(peg$savedPos, peg$currPos);
- }
- function location() {
- return peg$computeLocation(peg$savedPos, peg$currPos);
- }
- function expected(description, location) {
- location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)
- throw peg$buildStructuredError(
- [peg$otherExpectation(description)],
- input.substring(peg$savedPos, peg$currPos),
- location
- );
- }
- function error(message, location) {
- location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)
- throw peg$buildSimpleError(message, location);
- }
- function peg$literalExpectation(text, ignoreCase) {
- return { type: "literal", text: text, ignoreCase: ignoreCase };
- }
- function peg$classExpectation(parts, inverted, ignoreCase) {
- return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase };
- }
- function peg$anyExpectation() {
- return { type: "any" };
- }
- function peg$endExpectation() {
- return { type: "end" };
- }
- function peg$otherExpectation(description) {
- return { type: "other", description: description };
- }
- function peg$computePosDetails(pos) {
- var details = peg$posDetailsCache[pos], p;
- if (details) {
- return details;
- } else {
- p = pos - 1;
- while (!peg$posDetailsCache[p]) {
- p--;
- }
- details = peg$posDetailsCache[p];
- details = {
- line: details.line,
- column: details.column
- };
- while (p < pos) {
- if (input.charCodeAt(p) === 10) {
- details.line++;
- details.column = 1;
- } else {
- details.column++;
- }
- p++;
- }
- peg$posDetailsCache[pos] = details;
- return details;
- }
- }
- function peg$computeLocation(startPos, endPos) {
- var startPosDetails = peg$computePosDetails(startPos),
- endPosDetails = peg$computePosDetails(endPos);
- return {
- start: {
- offset: startPos,
- line: startPosDetails.line,
- column: startPosDetails.column
- },
- end: {
- offset: endPos,
- line: endPosDetails.line,
- column: endPosDetails.column
- }
- };
- }
- function peg$fail(expected) {
- if (peg$currPos < peg$maxFailPos) { return; }
- if (peg$currPos > peg$maxFailPos) {
- peg$maxFailPos = peg$currPos;
- peg$maxFailExpected = [];
- }
- peg$maxFailExpected.push(expected);
- }
- function peg$buildSimpleError(message, location) {
- return new peg$SyntaxError(message, null, null, location);
- }
- function peg$buildStructuredError(expected, found, location) {
- return new peg$SyntaxError(
- peg$SyntaxError.buildMessage(expected, found),
- expected,
- found,
- location
- );
- }
- function peg$parsestart() {
- var s0;
- var key = peg$currPos * 65 + 0,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$parsemethod();
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parseseparator() {
- var s0, s1;
- var key = peg$currPos * 65 + 1,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = [];
- if (peg$c0.test(input.charAt(peg$currPos))) {
- s1 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c1); }
- }
- if (s1 !== peg$FAILED) {
- while (s1 !== peg$FAILED) {
- s0.push(s1);
- if (peg$c0.test(input.charAt(peg$currPos))) {
- s1 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c1); }
- }
- }
- } else {
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsecomments() {
- var s0, s1, s2, s3, s4;
- var key = peg$currPos * 65 + 2,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = [];
- s1 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 34) {
- s2 = peg$c2;
- peg$currPos++;
- } else {
- s2 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c3); }
- }
- if (s2 !== peg$FAILED) {
- s3 = [];
- if (peg$c4.test(input.charAt(peg$currPos))) {
- s4 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c5); }
- }
- while (s4 !== peg$FAILED) {
- s3.push(s4);
- if (peg$c4.test(input.charAt(peg$currPos))) {
- s4 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c5); }
- }
- }
- if (s3 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 34) {
- s4 = peg$c2;
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c3); }
- }
- if (s4 !== peg$FAILED) {
- s2 = [s2, s3, s4];
- s1 = s2;
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- if (s1 !== peg$FAILED) {
- while (s1 !== peg$FAILED) {
- s0.push(s1);
- s1 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 34) {
- s2 = peg$c2;
- peg$currPos++;
- } else {
- s2 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c3); }
- }
- if (s2 !== peg$FAILED) {
- s3 = [];
- if (peg$c4.test(input.charAt(peg$currPos))) {
- s4 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c5); }
- }
- while (s4 !== peg$FAILED) {
- s3.push(s4);
- if (peg$c4.test(input.charAt(peg$currPos))) {
- s4 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c5); }
- }
- }
- if (s3 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 34) {
- s4 = peg$c2;
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c3); }
- }
- if (s4 !== peg$FAILED) {
- s2 = [s2, s3, s4];
- s1 = s2;
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- }
- } else {
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsews() {
- var s0, s1;
- var key = peg$currPos * 65 + 3,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = [];
- s1 = peg$parseseparator();
- if (s1 === peg$FAILED) {
- s1 = peg$parsecomments();
- }
- while (s1 !== peg$FAILED) {
- s0.push(s1);
- s1 = peg$parseseparator();
- if (s1 === peg$FAILED) {
- s1 = peg$parsecomments();
- }
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsemaybeDotsWs() {
- var s0, s1;
- var key = peg$currPos * 65 + 4,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = [];
- if (input.charCodeAt(peg$currPos) === 46) {
- s1 = peg$c6;
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c7); }
- }
- if (s1 === peg$FAILED) {
- s1 = peg$parseseparator();
- if (s1 === peg$FAILED) {
- s1 = peg$parsecomments();
- }
- }
- while (s1 !== peg$FAILED) {
- s0.push(s1);
- if (input.charCodeAt(peg$currPos) === 46) {
- s1 = peg$c6;
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c7); }
- }
- if (s1 === peg$FAILED) {
- s1 = peg$parseseparator();
- if (s1 === peg$FAILED) {
- s1 = peg$parsecomments();
- }
- }
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsesomeDotsWs() {
- var s0, s1, s2, s3;
- var key = peg$currPos * 65 + 5,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parsews();
- if (s1 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 46) {
- s2 = peg$c6;
- peg$currPos++;
- } else {
- s2 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c7); }
- }
- if (s2 !== peg$FAILED) {
- s3 = peg$parsemaybeDotsWs();
- if (s3 !== peg$FAILED) {
- s1 = [s1, s2, s3];
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parseidentifier() {
- var s0, s1, s2, s3, s4;
- var key = peg$currPos * 65 + 6,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$currPos;
- if (peg$c8.test(input.charAt(peg$currPos))) {
- s2 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s2 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c9); }
- }
- if (s2 !== peg$FAILED) {
- s3 = [];
- if (peg$c10.test(input.charAt(peg$currPos))) {
- s4 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c11); }
- }
- while (s4 !== peg$FAILED) {
- s3.push(s4);
- if (peg$c10.test(input.charAt(peg$currPos))) {
- s4 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c11); }
- }
- }
- if (s3 !== peg$FAILED) {
- s2 = [s2, s3];
- s1 = s2;
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- if (s1 !== peg$FAILED) {
- s0 = input.substring(s0, peg$currPos);
- } else {
- s0 = s1;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsekeyword() {
- var s0, s1, s2, s3;
- var key = peg$currPos * 65 + 7,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$currPos;
- s2 = peg$parseidentifier();
- if (s2 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 58) {
- s3 = peg$c12;
- peg$currPos++;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c13); }
- }
- if (s3 !== peg$FAILED) {
- s2 = [s2, s3];
- s1 = s2;
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- if (s1 !== peg$FAILED) {
- s0 = input.substring(s0, peg$currPos);
- } else {
- s0 = s1;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parseclassName() {
- var s0, s1, s2, s3, s4;
- var key = peg$currPos * 65 + 8,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$currPos;
- if (peg$c14.test(input.charAt(peg$currPos))) {
- s2 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s2 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c15); }
- }
- if (s2 !== peg$FAILED) {
- s3 = [];
- if (peg$c10.test(input.charAt(peg$currPos))) {
- s4 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c11); }
- }
- while (s4 !== peg$FAILED) {
- s3.push(s4);
- if (peg$c10.test(input.charAt(peg$currPos))) {
- s4 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c11); }
- }
- }
- if (s3 !== peg$FAILED) {
- s2 = [s2, s3];
- s1 = s2;
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- if (s1 !== peg$FAILED) {
- s0 = input.substring(s0, peg$currPos);
- } else {
- s0 = s1;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsestring() {
- var s0, s1;
- var key = peg$currPos * 65 + 9,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parserawString();
- if (s1 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c16(s1);
- }
- s0 = s1;
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parserawString() {
- var s0, s1, s2, s3, s4;
- var key = peg$currPos * 65 + 10,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 39) {
- s1 = peg$c17;
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c18); }
- }
- if (s1 !== peg$FAILED) {
- s2 = [];
- s3 = peg$currPos;
- if (input.substr(peg$currPos, 2) === peg$c19) {
- s4 = peg$c19;
- peg$currPos += 2;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c20); }
- }
- if (s4 !== peg$FAILED) {
- peg$savedPos = s3;
- s4 = peg$c21();
- }
- s3 = s4;
- if (s3 === peg$FAILED) {
- if (peg$c22.test(input.charAt(peg$currPos))) {
- s3 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c23); }
- }
- }
- while (s3 !== peg$FAILED) {
- s2.push(s3);
- s3 = peg$currPos;
- if (input.substr(peg$currPos, 2) === peg$c19) {
- s4 = peg$c19;
- peg$currPos += 2;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c20); }
- }
- if (s4 !== peg$FAILED) {
- peg$savedPos = s3;
- s4 = peg$c21();
- }
- s3 = s4;
- if (s3 === peg$FAILED) {
- if (peg$c22.test(input.charAt(peg$currPos))) {
- s3 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c23); }
- }
- }
- }
- if (s2 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 39) {
- s3 = peg$c17;
- peg$currPos++;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c18); }
- }
- if (s3 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c24(s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsecharacter() {
- var s0, s1, s2;
- var key = peg$currPos * 65 + 11,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 36) {
- s1 = peg$c25;
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c26); }
- }
- if (s1 !== peg$FAILED) {
- if (input.length > peg$currPos) {
- s2 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s2 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c27); }
- }
- if (s2 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c28(s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsesymbol() {
- var s0, s1, s2;
- var key = peg$currPos * 65 + 12,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 35) {
- s1 = peg$c29;
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c30); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parsebareSymbol();
- if (s2 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c31(s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsebareSymbol() {
- var s0, s1, s2, s3;
- var key = peg$currPos * 65 + 13,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$currPos;
- s2 = [];
- s3 = peg$parsekeyword();
- if (s3 !== peg$FAILED) {
- while (s3 !== peg$FAILED) {
- s2.push(s3);
- s3 = peg$parsekeyword();
- }
- } else {
- s2 = peg$FAILED;
- }
- if (s2 !== peg$FAILED) {
- s1 = input.substring(s1, peg$currPos);
- } else {
- s1 = s2;
- }
- if (s1 === peg$FAILED) {
- s1 = peg$parsebinarySelector();
- if (s1 === peg$FAILED) {
- s1 = peg$parseidentifier();
- if (s1 === peg$FAILED) {
- s1 = peg$parserawString();
- }
- }
- }
- if (s1 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c16(s1);
- }
- s0 = s1;
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsenumber() {
- var s0, s1;
- var key = peg$currPos * 65 + 14,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parserawNumber();
- if (s1 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c16(s1);
- }
- s0 = s1;
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parserawNumber() {
- var s0;
- var key = peg$currPos * 65 + 15,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$parsenumberExp();
- if (s0 === peg$FAILED) {
- s0 = peg$parsehex();
- if (s0 === peg$FAILED) {
- s0 = peg$parsefloat();
- if (s0 === peg$FAILED) {
- s0 = peg$parseinteger();
- }
- }
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsenumberExp() {
- var s0, s1, s2, s3, s4, s5;
- var key = peg$currPos * 65 + 16,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$currPos;
- s2 = peg$currPos;
- s3 = peg$parsefloat();
- if (s3 === peg$FAILED) {
- s3 = peg$parseinteger();
- }
- if (s3 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 101) {
- s4 = peg$c32;
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c33); }
- }
- if (s4 !== peg$FAILED) {
- s5 = peg$parseinteger();
- if (s5 !== peg$FAILED) {
- s3 = [s3, s4, s5];
- s2 = s3;
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- if (s2 !== peg$FAILED) {
- s1 = input.substring(s1, peg$currPos);
- } else {
- s1 = s2;
- }
- if (s1 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c34(s1);
- }
- s0 = s1;
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsehex() {
- var s0, s1, s2, s3, s4, s5;
- var key = peg$currPos * 65 + 17,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 45) {
- s1 = peg$c35;
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c36); }
- }
- if (s1 === peg$FAILED) {
- s1 = null;
- }
- if (s1 !== peg$FAILED) {
- if (input.substr(peg$currPos, 3) === peg$c37) {
- s2 = peg$c37;
- peg$currPos += 3;
- } else {
- s2 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c38); }
- }
- if (s2 !== peg$FAILED) {
- s3 = peg$currPos;
- s4 = [];
- if (peg$c39.test(input.charAt(peg$currPos))) {
- s5 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s5 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c40); }
- }
- if (s5 !== peg$FAILED) {
- while (s5 !== peg$FAILED) {
- s4.push(s5);
- if (peg$c39.test(input.charAt(peg$currPos))) {
- s5 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s5 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c40); }
- }
- }
- } else {
- s4 = peg$FAILED;
- }
- if (s4 !== peg$FAILED) {
- s3 = input.substring(s3, peg$currPos);
- } else {
- s3 = s4;
- }
- if (s3 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c41(s1, s3);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsefloat() {
- var s0, s1, s2, s3, s4, s5, s6, s7;
- var key = peg$currPos * 65 + 18,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$currPos;
- s2 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 45) {
- s3 = peg$c35;
- peg$currPos++;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c36); }
- }
- if (s3 === peg$FAILED) {
- s3 = null;
- }
- if (s3 !== peg$FAILED) {
- s4 = [];
- if (peg$c42.test(input.charAt(peg$currPos))) {
- s5 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s5 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c43); }
- }
- if (s5 !== peg$FAILED) {
- while (s5 !== peg$FAILED) {
- s4.push(s5);
- if (peg$c42.test(input.charAt(peg$currPos))) {
- s5 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s5 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c43); }
- }
- }
- } else {
- s4 = peg$FAILED;
- }
- if (s4 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 46) {
- s5 = peg$c6;
- peg$currPos++;
- } else {
- s5 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c7); }
- }
- if (s5 !== peg$FAILED) {
- s6 = [];
- if (peg$c42.test(input.charAt(peg$currPos))) {
- s7 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s7 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c43); }
- }
- if (s7 !== peg$FAILED) {
- while (s7 !== peg$FAILED) {
- s6.push(s7);
- if (peg$c42.test(input.charAt(peg$currPos))) {
- s7 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s7 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c43); }
- }
- }
- } else {
- s6 = peg$FAILED;
- }
- if (s6 !== peg$FAILED) {
- s3 = [s3, s4, s5, s6];
- s2 = s3;
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- if (s2 !== peg$FAILED) {
- s1 = input.substring(s1, peg$currPos);
- } else {
- s1 = s2;
- }
- if (s1 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c44(s1);
- }
- s0 = s1;
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parseinteger() {
- var s0, s1, s2, s3, s4, s5;
- var key = peg$currPos * 65 + 19,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$currPos;
- s2 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 45) {
- s3 = peg$c35;
- peg$currPos++;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c36); }
- }
- if (s3 === peg$FAILED) {
- s3 = null;
- }
- if (s3 !== peg$FAILED) {
- s4 = [];
- if (peg$c42.test(input.charAt(peg$currPos))) {
- s5 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s5 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c43); }
- }
- if (s5 !== peg$FAILED) {
- while (s5 !== peg$FAILED) {
- s4.push(s5);
- if (peg$c42.test(input.charAt(peg$currPos))) {
- s5 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s5 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c43); }
- }
- }
- } else {
- s4 = peg$FAILED;
- }
- if (s4 !== peg$FAILED) {
- s3 = [s3, s4];
- s2 = s3;
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- if (s2 !== peg$FAILED) {
- s1 = input.substring(s1, peg$currPos);
- } else {
- s1 = s2;
- }
- if (s1 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c45(s1);
- }
- s0 = s1;
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parseliteralArray() {
- var s0, s1, s2, s3, s4;
- var key = peg$currPos * 65 + 20,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- if (input.substr(peg$currPos, 2) === peg$c46) {
- s1 = peg$c46;
- peg$currPos += 2;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c47); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parsewsLiteralArrayContents();
- if (s2 !== peg$FAILED) {
- s3 = peg$parsews();
- if (s3 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 41) {
- s4 = peg$c48;
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c49); }
- }
- if (s4 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c50(s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsebareLiteralArray() {
- var s0, s1, s2, s3, s4;
- var key = peg$currPos * 65 + 21,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 40) {
- s1 = peg$c51;
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c52); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parsewsLiteralArrayContents();
- if (s2 !== peg$FAILED) {
- s3 = peg$parsews();
- if (s3 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 41) {
- s4 = peg$c48;
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c49); }
- }
- if (s4 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c50(s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parseliteralArrayElement() {
- var s0;
- var key = peg$currPos * 65 + 22,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$parseparseTimeLiteral();
- if (s0 === peg$FAILED) {
- s0 = peg$parsebareLiteralArray();
- if (s0 === peg$FAILED) {
- s0 = peg$parsebareSymbol();
- }
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsLiteralArrayContents() {
- var s0, s1, s2, s3;
- var key = peg$currPos * 65 + 23,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = [];
- s1 = peg$currPos;
- s2 = peg$parsews();
- if (s2 !== peg$FAILED) {
- s3 = peg$parseliteralArrayElement();
- if (s3 !== peg$FAILED) {
- peg$savedPos = s1;
- s2 = peg$c53(s3);
- s1 = s2;
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- while (s1 !== peg$FAILED) {
- s0.push(s1);
- s1 = peg$currPos;
- s2 = peg$parsews();
- if (s2 !== peg$FAILED) {
- s3 = peg$parseliteralArrayElement();
- if (s3 !== peg$FAILED) {
- peg$savedPos = s1;
- s2 = peg$c53(s3);
- s1 = s2;
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsedynamicArray() {
- var s0, s1, s2, s3, s4;
- var key = peg$currPos * 65 + 24,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 123) {
- s1 = peg$c54;
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c55); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parsewsExpressions();
- if (s2 === peg$FAILED) {
- s2 = null;
- }
- if (s2 !== peg$FAILED) {
- s3 = peg$parsemaybeDotsWs();
- if (s3 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 125) {
- s4 = peg$c56;
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c57); }
- }
- if (s4 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c58(s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsedynamicDictionary() {
- var s0, s1, s2, s3, s4;
- var key = peg$currPos * 65 + 25,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- if (input.substr(peg$currPos, 2) === peg$c59) {
- s1 = peg$c59;
- peg$currPos += 2;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c60); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parsewsAssociations();
- if (s2 === peg$FAILED) {
- s2 = null;
- }
- if (s2 !== peg$FAILED) {
- s3 = peg$parsemaybeDotsWs();
- if (s3 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 125) {
- s4 = peg$c56;
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c57); }
- }
- if (s4 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c61(s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsepseudoVariable() {
- var s0, s1, s2;
- var key = peg$currPos * 65 + 26,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$currPos;
- if (input.substr(peg$currPos, 4) === peg$c62) {
- s2 = peg$c62;
- peg$currPos += 4;
- } else {
- s2 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c63); }
- }
- if (s2 !== peg$FAILED) {
- peg$savedPos = s1;
- s2 = peg$c64();
- }
- s1 = s2;
- if (s1 === peg$FAILED) {
- s1 = peg$currPos;
- if (input.substr(peg$currPos, 5) === peg$c65) {
- s2 = peg$c65;
- peg$currPos += 5;
- } else {
- s2 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c66); }
- }
- if (s2 !== peg$FAILED) {
- peg$savedPos = s1;
- s2 = peg$c67();
- }
- s1 = s2;
- if (s1 === peg$FAILED) {
- s1 = peg$currPos;
- if (input.substr(peg$currPos, 3) === peg$c68) {
- s2 = peg$c68;
- peg$currPos += 3;
- } else {
- s2 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c69); }
- }
- if (s2 !== peg$FAILED) {
- peg$savedPos = s1;
- s2 = peg$c70();
- }
- s1 = s2;
- }
- }
- if (s1 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c16(s1);
- }
- s0 = s1;
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parseparseTimeLiteral() {
- var s0;
- var key = peg$currPos * 65 + 27,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$parsepseudoVariable();
- if (s0 === peg$FAILED) {
- s0 = peg$parsenumber();
- if (s0 === peg$FAILED) {
- s0 = peg$parseliteralArray();
- if (s0 === peg$FAILED) {
- s0 = peg$parsestring();
- if (s0 === peg$FAILED) {
- s0 = peg$parsesymbol();
- if (s0 === peg$FAILED) {
- s0 = peg$parsecharacter();
- }
- }
- }
- }
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parseruntimeLiteral() {
- var s0;
- var key = peg$currPos * 65 + 28,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$parsedynamicDictionary();
- if (s0 === peg$FAILED) {
- s0 = peg$parsedynamicArray();
- if (s0 === peg$FAILED) {
- s0 = peg$parseblock();
- }
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parseliteral() {
- var s0;
- var key = peg$currPos * 65 + 29,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$parseruntimeLiteral();
- if (s0 === peg$FAILED) {
- s0 = peg$parseparseTimeLiteral();
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsevariable() {
- var s0, s1;
- var key = peg$currPos * 65 + 30,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parseidentifier();
- if (s1 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c71(s1);
- }
- s0 = s1;
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsebinarySelector() {
- var s0, s1, s2;
- var key = peg$currPos * 65 + 31,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = [];
- if (peg$c72.test(input.charAt(peg$currPos))) {
- s2 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s2 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c73); }
- }
- if (s2 !== peg$FAILED) {
- while (s2 !== peg$FAILED) {
- s1.push(s2);
- if (peg$c72.test(input.charAt(peg$currPos))) {
- s2 = input.charAt(peg$currPos);
- peg$currPos++;
- } else {
- s2 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c73); }
- }
- }
- } else {
- s1 = peg$FAILED;
- }
- if (s1 !== peg$FAILED) {
- s0 = input.substring(s0, peg$currPos);
- } else {
- s0 = s1;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsKeywordPattern() {
- var s0, s1, s2, s3, s4, s5, s6;
- var key = peg$currPos * 65 + 32,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = [];
- s2 = peg$currPos;
- s3 = peg$parsews();
- if (s3 !== peg$FAILED) {
- s4 = peg$parsekeyword();
- if (s4 !== peg$FAILED) {
- s5 = peg$parsews();
- if (s5 !== peg$FAILED) {
- s6 = peg$parseidentifier();
- if (s6 !== peg$FAILED) {
- peg$savedPos = s2;
- s3 = peg$c74(s4, s6);
- s2 = s3;
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- if (s2 !== peg$FAILED) {
- while (s2 !== peg$FAILED) {
- s1.push(s2);
- s2 = peg$currPos;
- s3 = peg$parsews();
- if (s3 !== peg$FAILED) {
- s4 = peg$parsekeyword();
- if (s4 !== peg$FAILED) {
- s5 = peg$parsews();
- if (s5 !== peg$FAILED) {
- s6 = peg$parseidentifier();
- if (s6 !== peg$FAILED) {
- peg$savedPos = s2;
- s3 = peg$c74(s4, s6);
- s2 = s3;
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- }
- } else {
- s1 = peg$FAILED;
- }
- if (s1 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c75(s1);
- }
- s0 = s1;
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsBinaryPattern() {
- var s0, s1, s2, s3, s4;
- var key = peg$currPos * 65 + 33,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parsews();
- if (s1 !== peg$FAILED) {
- s2 = peg$parsebinarySelector();
- if (s2 !== peg$FAILED) {
- s3 = peg$parsews();
- if (s3 !== peg$FAILED) {
- s4 = peg$parseidentifier();
- if (s4 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c76(s2, s4);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsUnaryPattern() {
- var s0, s1, s2;
- var key = peg$currPos * 65 + 34,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parsews();
- if (s1 !== peg$FAILED) {
- s2 = peg$parseidentifier();
- if (s2 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c77(s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parseexpression() {
- var s0;
- var key = peg$currPos * 65 + 35,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$parseassignment();
- if (s0 === peg$FAILED) {
- s0 = peg$parsecascade();
- if (s0 === peg$FAILED) {
- s0 = peg$parsekeywordSend();
- }
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsExpressionsRest() {
- var s0, s1, s2;
- var key = peg$currPos * 65 + 36,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parsesomeDotsWs();
- if (s1 !== peg$FAILED) {
- s2 = peg$parseexpression();
- if (s2 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c78(s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsExpressions() {
- var s0, s1, s2, s3, s4;
- var key = peg$currPos * 65 + 37,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parsemaybeDotsWs();
- if (s1 !== peg$FAILED) {
- s2 = peg$parseexpression();
- if (s2 !== peg$FAILED) {
- s3 = [];
- s4 = peg$parsewsExpressionsRest();
- while (s4 !== peg$FAILED) {
- s3.push(s4);
- s4 = peg$parsewsExpressionsRest();
- }
- if (s3 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c79(s2, s3);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsUnaryPragmaMessage() {
- var s0, s1, s2, s3, s4;
- var key = peg$currPos * 65 + 38,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parsews();
- if (s1 !== peg$FAILED) {
- s2 = peg$parseidentifier();
- if (s2 !== peg$FAILED) {
- s3 = peg$currPos;
- peg$silentFails++;
- if (input.charCodeAt(peg$currPos) === 58) {
- s4 = peg$c12;
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c13); }
- }
- peg$silentFails--;
- if (s4 === peg$FAILED) {
- s3 = void 0;
- } else {
- peg$currPos = s3;
- s3 = peg$FAILED;
- }
- if (s3 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c80(s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsKeywordPragmaMessage() {
- var s0, s1, s2, s3, s4, s5, s6;
- var key = peg$currPos * 65 + 39,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = [];
- s2 = peg$currPos;
- s3 = peg$parsews();
- if (s3 !== peg$FAILED) {
- s4 = peg$parsekeyword();
- if (s4 !== peg$FAILED) {
- s5 = peg$parsews();
- if (s5 !== peg$FAILED) {
- s6 = peg$parseparseTimeLiteral();
- if (s6 !== peg$FAILED) {
- peg$savedPos = s2;
- s3 = peg$c74(s4, s6);
- s2 = s3;
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- if (s2 !== peg$FAILED) {
- while (s2 !== peg$FAILED) {
- s1.push(s2);
- s2 = peg$currPos;
- s3 = peg$parsews();
- if (s3 !== peg$FAILED) {
- s4 = peg$parsekeyword();
- if (s4 !== peg$FAILED) {
- s5 = peg$parsews();
- if (s5 !== peg$FAILED) {
- s6 = peg$parseparseTimeLiteral();
- if (s6 !== peg$FAILED) {
- peg$savedPos = s2;
- s3 = peg$c74(s4, s6);
- s2 = s3;
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- }
- } else {
- s1 = peg$FAILED;
- }
- if (s1 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c81(s1);
- }
- s0 = s1;
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsPragmaMessage() {
- var s0;
- var key = peg$currPos * 65 + 40,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$parsewsUnaryPragmaMessage();
- if (s0 === peg$FAILED) {
- s0 = peg$parsewsKeywordPragmaMessage();
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsPragmas() {
- var s0, s1, s2, s3, s4, s5, s6;
- var key = peg$currPos * 65 + 41,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = [];
- s1 = peg$currPos;
- s2 = peg$parsews();
- if (s2 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 60) {
- s3 = peg$c82;
- peg$currPos++;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c83); }
- }
- if (s3 !== peg$FAILED) {
- s4 = peg$parsewsPragmaMessage();
- if (s4 !== peg$FAILED) {
- s5 = peg$parsews();
- if (s5 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 62) {
- s6 = peg$c84;
- peg$currPos++;
- } else {
- s6 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c85); }
- }
- if (s6 !== peg$FAILED) {
- peg$savedPos = s1;
- s2 = peg$c86(s4);
- s1 = s2;
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- while (s1 !== peg$FAILED) {
- s0.push(s1);
- s1 = peg$currPos;
- s2 = peg$parsews();
- if (s2 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 60) {
- s3 = peg$c82;
- peg$currPos++;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c83); }
- }
- if (s3 !== peg$FAILED) {
- s4 = peg$parsewsPragmaMessage();
- if (s4 !== peg$FAILED) {
- s5 = peg$parsews();
- if (s5 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 62) {
- s6 = peg$c84;
- peg$currPos++;
- } else {
- s6 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c85); }
- }
- if (s6 !== peg$FAILED) {
- peg$savedPos = s1;
- s2 = peg$c86(s4);
- s1 = s2;
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- } else {
- peg$currPos = s1;
- s1 = peg$FAILED;
- }
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parseassignment() {
- var s0, s1, s2, s3, s4, s5;
- var key = peg$currPos * 65 + 42,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parsevariable();
- if (s1 !== peg$FAILED) {
- s2 = peg$parsews();
- if (s2 !== peg$FAILED) {
- if (input.substr(peg$currPos, 2) === peg$c87) {
- s3 = peg$c87;
- peg$currPos += 2;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c88); }
- }
- if (s3 !== peg$FAILED) {
- s4 = peg$parsews();
- if (s4 !== peg$FAILED) {
- s5 = peg$parseexpression();
- if (s5 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c89(s1, s5);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parseret() {
- var s0, s1, s2, s3;
- var key = peg$currPos * 65 + 43,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 94) {
- s1 = peg$c90;
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c91); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parsews();
- if (s2 !== peg$FAILED) {
- s3 = peg$parseexpression();
- if (s3 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c92(s3);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsetemps() {
- var s0, s1, s2, s3, s4, s5;
- var key = peg$currPos * 65 + 44,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 124) {
- s1 = peg$c93;
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c94); }
- }
- if (s1 !== peg$FAILED) {
- s2 = [];
- s3 = peg$currPos;
- s4 = peg$parsews();
- if (s4 !== peg$FAILED) {
- s5 = peg$parseidentifier();
- if (s5 !== peg$FAILED) {
- peg$savedPos = s3;
- s4 = peg$c95(s5);
- s3 = s4;
- } else {
- peg$currPos = s3;
- s3 = peg$FAILED;
- }
- } else {
- peg$currPos = s3;
- s3 = peg$FAILED;
- }
- while (s3 !== peg$FAILED) {
- s2.push(s3);
- s3 = peg$currPos;
- s4 = peg$parsews();
- if (s4 !== peg$FAILED) {
- s5 = peg$parseidentifier();
- if (s5 !== peg$FAILED) {
- peg$savedPos = s3;
- s4 = peg$c95(s5);
- s3 = s4;
- } else {
- peg$currPos = s3;
- s3 = peg$FAILED;
- }
- } else {
- peg$currPos = s3;
- s3 = peg$FAILED;
- }
- }
- if (s2 !== peg$FAILED) {
- s3 = peg$parsews();
- if (s3 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 124) {
- s4 = peg$c93;
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c94); }
- }
- if (s4 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c96(s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsBlockParamList() {
- var s0, s1, s2, s3, s4, s5, s6;
- var key = peg$currPos * 65 + 45,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = [];
- s2 = peg$currPos;
- s3 = peg$parsews();
- if (s3 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 58) {
- s4 = peg$c12;
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c13); }
- }
- if (s4 !== peg$FAILED) {
- s5 = peg$parsews();
- if (s5 !== peg$FAILED) {
- s6 = peg$parseidentifier();
- if (s6 !== peg$FAILED) {
- peg$savedPos = s2;
- s3 = peg$c97(s6);
- s2 = s3;
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- if (s2 !== peg$FAILED) {
- while (s2 !== peg$FAILED) {
- s1.push(s2);
- s2 = peg$currPos;
- s3 = peg$parsews();
- if (s3 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 58) {
- s4 = peg$c12;
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c13); }
- }
- if (s4 !== peg$FAILED) {
- s5 = peg$parsews();
- if (s5 !== peg$FAILED) {
- s6 = peg$parseidentifier();
- if (s6 !== peg$FAILED) {
- peg$savedPos = s2;
- s3 = peg$c97(s6);
- s2 = s3;
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- }
- } else {
- s1 = peg$FAILED;
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parsews();
- if (s2 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 124) {
- s3 = peg$c93;
- peg$currPos++;
- } else {
- s3 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c94); }
- }
- if (s3 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c98(s1);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsesubexpression() {
- var s0, s1, s2, s3, s4, s5;
- var key = peg$currPos * 65 + 46,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 40) {
- s1 = peg$c51;
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c52); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parsews();
- if (s2 !== peg$FAILED) {
- s3 = peg$parseexpression();
- if (s3 !== peg$FAILED) {
- s4 = peg$parsews();
- if (s4 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 41) {
- s5 = peg$c48;
- peg$currPos++;
- } else {
- s5 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c49); }
- }
- if (s5 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c78(s3);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsStatements() {
- var s0, s1, s2, s3;
- var key = peg$currPos * 65 + 47,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parsemaybeDotsWs();
- if (s1 !== peg$FAILED) {
- s2 = peg$parseret();
- if (s2 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c99(s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- if (s0 === peg$FAILED) {
- s0 = peg$currPos;
- s1 = peg$parsewsExpressions();
- if (s1 !== peg$FAILED) {
- s2 = peg$parsesomeDotsWs();
- if (s2 !== peg$FAILED) {
- s3 = peg$parseret();
- if (s3 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c100(s1, s3);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- if (s0 === peg$FAILED) {
- s0 = peg$currPos;
- s1 = peg$parsewsExpressions();
- if (s1 === peg$FAILED) {
- s1 = null;
- }
- if (s1 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c101(s1);
- }
- s0 = s1;
- }
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parseblock() {
- var s0, s1, s2, s3, s4, s5, s6, s7;
- var key = peg$currPos * 65 + 48,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- if (input.charCodeAt(peg$currPos) === 91) {
- s1 = peg$c102;
- peg$currPos++;
- } else {
- s1 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c103); }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parsewsBlockParamList();
- if (s2 === peg$FAILED) {
- s2 = null;
- }
- if (s2 !== peg$FAILED) {
- s3 = peg$parsews();
- if (s3 !== peg$FAILED) {
- s4 = peg$parsetemps();
- if (s4 === peg$FAILED) {
- s4 = null;
- }
- if (s4 !== peg$FAILED) {
- s5 = peg$parsewsStatements();
- if (s5 === peg$FAILED) {
- s5 = null;
- }
- if (s5 !== peg$FAILED) {
- s6 = peg$parsemaybeDotsWs();
- if (s6 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 93) {
- s7 = peg$c104;
- peg$currPos++;
- } else {
- s7 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c105); }
- }
- if (s7 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c106(s2, s4, s5);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parseoperand() {
- var s0;
- var key = peg$currPos * 65 + 49,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$parsevariable();
- if (s0 === peg$FAILED) {
- s0 = peg$parseliteral();
- if (s0 === peg$FAILED) {
- s0 = peg$parsesubexpression();
- }
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsUnaryMessage() {
- var s0, s1, s2, s3, s4;
- var key = peg$currPos * 65 + 50,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parsews();
- if (s1 !== peg$FAILED) {
- s2 = peg$parseidentifier();
- if (s2 !== peg$FAILED) {
- s3 = peg$currPos;
- peg$silentFails++;
- if (input.charCodeAt(peg$currPos) === 58) {
- s4 = peg$c12;
- peg$currPos++;
- } else {
- s4 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c13); }
- }
- peg$silentFails--;
- if (s4 === peg$FAILED) {
- s3 = void 0;
- } else {
- peg$currPos = s3;
- s3 = peg$FAILED;
- }
- if (s3 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c107(s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsUnaryTail() {
- var s0, s1;
- var key = peg$currPos * 65 + 51,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = [];
- s1 = peg$parsewsUnaryMessage();
- while (s1 !== peg$FAILED) {
- s0.push(s1);
- s1 = peg$parsewsUnaryMessage();
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parseunarySend() {
- var s0, s1, s2;
- var key = peg$currPos * 65 + 52,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parseoperand();
- if (s1 !== peg$FAILED) {
- s2 = peg$parsewsUnaryTail();
- if (s2 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c108(s1, s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsBinaryMessage() {
- var s0, s1, s2, s3, s4;
- var key = peg$currPos * 65 + 53,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parsews();
- if (s1 !== peg$FAILED) {
- s2 = peg$parsebinarySelector();
- if (s2 !== peg$FAILED) {
- s3 = peg$parsews();
- if (s3 !== peg$FAILED) {
- s4 = peg$parseunarySend();
- if (s4 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c109(s2, s4);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsBinaryTail() {
- var s0, s1, s2, s3;
- var key = peg$currPos * 65 + 54,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parsewsUnaryTail();
- if (s1 !== peg$FAILED) {
- s2 = [];
- s3 = peg$parsewsBinaryMessage();
- while (s3 !== peg$FAILED) {
- s2.push(s3);
- s3 = peg$parsewsBinaryMessage();
- }
- if (s2 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c110(s1, s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsebinarySend() {
- var s0, s1, s2;
- var key = peg$currPos * 65 + 55,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parseoperand();
- if (s1 !== peg$FAILED) {
- s2 = peg$parsewsBinaryTail();
- if (s2 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c108(s1, s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsKeywordMessage() {
- var s0, s1, s2, s3, s4, s5, s6;
- var key = peg$currPos * 65 + 56,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = [];
- s2 = peg$currPos;
- s3 = peg$parsews();
- if (s3 !== peg$FAILED) {
- s4 = peg$parsekeyword();
- if (s4 !== peg$FAILED) {
- s5 = peg$parsews();
- if (s5 !== peg$FAILED) {
- s6 = peg$parsebinarySend();
- if (s6 !== peg$FAILED) {
- peg$savedPos = s2;
- s3 = peg$c74(s4, s6);
- s2 = s3;
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- if (s2 !== peg$FAILED) {
- while (s2 !== peg$FAILED) {
- s1.push(s2);
- s2 = peg$currPos;
- s3 = peg$parsews();
- if (s3 !== peg$FAILED) {
- s4 = peg$parsekeyword();
- if (s4 !== peg$FAILED) {
- s5 = peg$parsews();
- if (s5 !== peg$FAILED) {
- s6 = peg$parsebinarySend();
- if (s6 !== peg$FAILED) {
- peg$savedPos = s2;
- s3 = peg$c74(s4, s6);
- s2 = s3;
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- } else {
- peg$currPos = s2;
- s2 = peg$FAILED;
- }
- }
- } else {
- s1 = peg$FAILED;
- }
- if (s1 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c111(s1);
- }
- s0 = s1;
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsKeywordTail() {
- var s0, s1, s2;
- var key = peg$currPos * 65 + 57,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parsewsBinaryTail();
- if (s1 !== peg$FAILED) {
- s2 = peg$parsewsKeywordMessage();
- if (s2 === peg$FAILED) {
- s2 = null;
- }
- if (s2 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c112(s1, s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsekeywordSend() {
- var s0, s1, s2;
- var key = peg$currPos * 65 + 58,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parseoperand();
- if (s1 !== peg$FAILED) {
- s2 = peg$parsewsKeywordTail();
- if (s2 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c108(s1, s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsMessage() {
- var s0;
- var key = peg$currPos * 65 + 59,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$parsewsBinaryMessage();
- if (s0 === peg$FAILED) {
- s0 = peg$parsewsUnaryMessage();
- if (s0 === peg$FAILED) {
- s0 = peg$parsewsKeywordMessage();
- }
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsecascade() {
- var s0, s1, s2, s3, s4, s5, s6, s7, s8;
- var key = peg$currPos * 65 + 60,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parseoperand();
- if (s1 !== peg$FAILED) {
- s2 = peg$parsewsKeywordTail();
- if (s2 !== peg$FAILED) {
- peg$savedPos = peg$currPos;
- s3 = peg$c113(s1, s2);
- if (s3) {
- s3 = void 0;
- } else {
- s3 = peg$FAILED;
- }
- if (s3 !== peg$FAILED) {
- s4 = [];
- s5 = peg$currPos;
- s6 = peg$parsews();
- if (s6 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 59) {
- s7 = peg$c114;
- peg$currPos++;
- } else {
- s7 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c115); }
- }
- if (s7 !== peg$FAILED) {
- s8 = peg$parsewsMessage();
- if (s8 !== peg$FAILED) {
- peg$savedPos = s5;
- s6 = peg$c116(s1, s2, s8);
- s5 = s6;
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- if (s5 !== peg$FAILED) {
- while (s5 !== peg$FAILED) {
- s4.push(s5);
- s5 = peg$currPos;
- s6 = peg$parsews();
- if (s6 !== peg$FAILED) {
- if (input.charCodeAt(peg$currPos) === 59) {
- s7 = peg$c114;
- peg$currPos++;
- } else {
- s7 = peg$FAILED;
- if (peg$silentFails === 0) { peg$fail(peg$c115); }
- }
- if (s7 !== peg$FAILED) {
- s8 = peg$parsewsMessage();
- if (s8 !== peg$FAILED) {
- peg$savedPos = s5;
- s6 = peg$c116(s1, s2, s8);
- s5 = s6;
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- } else {
- peg$currPos = s5;
- s5 = peg$FAILED;
- }
- }
- } else {
- s4 = peg$FAILED;
- }
- if (s4 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c117(s1, s2, s4);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsemethod() {
- var s0, s1, s2, s3, s4, s5, s6, s7;
- var key = peg$currPos * 65 + 61,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parsewsKeywordPattern();
- if (s1 === peg$FAILED) {
- s1 = peg$parsewsBinaryPattern();
- if (s1 === peg$FAILED) {
- s1 = peg$parsewsUnaryPattern();
- }
- }
- if (s1 !== peg$FAILED) {
- s2 = peg$parsewsPragmas();
- if (s2 === peg$FAILED) {
- s2 = null;
- }
- if (s2 !== peg$FAILED) {
- s3 = peg$parsews();
- if (s3 !== peg$FAILED) {
- s4 = peg$parsetemps();
- if (s4 === peg$FAILED) {
- s4 = null;
- }
- if (s4 !== peg$FAILED) {
- s5 = peg$parsewsPragmas();
- if (s5 === peg$FAILED) {
- s5 = null;
- }
- if (s5 !== peg$FAILED) {
- s6 = peg$parsewsStatements();
- if (s6 === peg$FAILED) {
- s6 = null;
- }
- if (s6 !== peg$FAILED) {
- s7 = peg$parsemaybeDotsWs();
- if (s7 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c118(s1, s2, s4, s5, s6);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parseassociationSend() {
- var s0, s1, s2, s3;
- var key = peg$currPos * 65 + 62,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parseoperand();
- if (s1 !== peg$FAILED) {
- s2 = peg$parsewsBinaryTail();
- if (s2 !== peg$FAILED) {
- peg$savedPos = peg$currPos;
- s3 = peg$c119(s1, s2);
- if (s3) {
- s3 = void 0;
- } else {
- s3 = peg$FAILED;
- }
- if (s3 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c120(s1, s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsAssociationsRest() {
- var s0, s1, s2;
- var key = peg$currPos * 65 + 63,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parsesomeDotsWs();
- if (s1 !== peg$FAILED) {
- s2 = peg$parseassociationSend();
- if (s2 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c78(s2);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- function peg$parsewsAssociations() {
- var s0, s1, s2, s3, s4;
- var key = peg$currPos * 65 + 64,
- cached = peg$resultsCache[key];
- if (cached) {
- peg$currPos = cached.nextPos;
- return cached.result;
- }
- s0 = peg$currPos;
- s1 = peg$parsemaybeDotsWs();
- if (s1 !== peg$FAILED) {
- s2 = peg$parseassociationSend();
- if (s2 !== peg$FAILED) {
- s3 = [];
- s4 = peg$parsewsAssociationsRest();
- while (s4 !== peg$FAILED) {
- s3.push(s4);
- s4 = peg$parsewsAssociationsRest();
- }
- if (s3 !== peg$FAILED) {
- peg$savedPos = s0;
- s1 = peg$c121(s2, s3);
- s0 = s1;
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- } else {
- peg$currPos = s0;
- s0 = peg$FAILED;
- }
- peg$resultsCache[key] = { nextPos: peg$currPos, result: s0 };
- return s0;
- }
- var $globals = __boot.globals;
- function newNode(nodeClass) {
- return nodeClass._new()._location_(location())._source_(text());
- }
- function newSequenceNode(nodeClass, temps, statements) {
- return newNode(nodeClass)._temps_(temps || [])._dagChildren_(statements || []);
- }
- peg$result = peg$startRuleFunction();
- if (peg$result !== peg$FAILED && peg$currPos === input.length) {
- return peg$result;
- } else {
- if (peg$result !== peg$FAILED && peg$currPos < input.length) {
- peg$fail(peg$endExpectation());
- }
- throw peg$buildStructuredError(
- peg$maxFailExpected,
- peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,
- peg$maxFailPos < input.length
- ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)
- : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)
- );
- }
- }
- return {
- SyntaxError: peg$SyntaxError,
- parse: peg$parse
- };
- });
- define('amber/core/Platform-ImportExport',["amber/boot", "require", "amber/core/Kernel-Classes", "amber/core/Kernel-Exceptions", "amber/core/Kernel-Infrastructure", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Platform-ImportExport");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("AbstractExporter", $globals.Object, "Platform-ImportExport");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "exportPackage:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackage: aPackage on: aStream\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackage:on:",{aPackage:aPackage,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractExporter);
- $core.addMethod(
- $core.method({
- selector: "extensionMethodsOfPackage:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "extensionMethodsOfPackage: aPackage\x0a\x09| result |\x0a\x09\x0a\x09result := OrderedCollection new.\x0a\x09\x0a\x09(self extensionProtocolsOfPackage: aPackage) do: [ :each |\x0a\x09\x09result addAll: each ownMethods ].\x0a\x09\x09\x0a\x09^ result",
- referencedClasses: ["OrderedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "do:", "extensionProtocolsOfPackage:", "addAll:", "ownMethods"]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- var result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- result=$recv($globals.OrderedCollection)._new();
- $recv($self._extensionProtocolsOfPackage_(aPackage))._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(result)._addAll_($recv(each)._ownMethods());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"extensionMethodsOfPackage:",{aPackage:aPackage,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractExporter);
- $core.addMethod(
- $core.method({
- selector: "extensionProtocolsOfPackage:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "extensionProtocolsOfPackage: aPackage\x0a\x09| extensionName result |\x0a\x09\x0a\x09extensionName := '*', aPackage name.\x0a\x09result := OrderedCollection new.\x0a\x09\x0a\x09\x22The classes must be loaded since it is extensions only.\x0a\x09Therefore topological sorting (dependency resolution) does not matter here.\x0a\x09Not sorting topologically improves the speed by a number of magnitude.\x0a\x09\x0a\x09Not to shuffle diffs, classes are sorted by their name.\x22\x0a\x09\x0a\x09(Smalltalk classes asArray sorted: [ :a :b | a name < b name ]) do: [ :each |\x0a\x09\x09each includingPossibleMetaDo: [ :behavior |\x0a\x09\x09\x09(behavior protocols includes: extensionName) ifTrue: [\x0a\x09\x09\x09\x09result add: (ExportMethodProtocol name: extensionName theClass: behavior) ] ] ].\x0a\x0a\x09^ result",
- referencedClasses: ["OrderedCollection", "Smalltalk", "ExportMethodProtocol"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "name", "new", "do:", "sorted:", "asArray", "classes", "<", "includingPossibleMetaDo:", "ifTrue:", "includes:", "protocols", "add:", "name:theClass:"]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- var extensionName,result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- extensionName="*".__comma([$recv(aPackage)._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["name"]=1
- //>>excludeEnd("ctx");
- ][0]);
- result=$recv($globals.OrderedCollection)._new();
- $recv($recv($recv($recv($globals.Smalltalk)._classes())._asArray())._sorted_((function(a,b){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv([$recv(a)._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["name"]=2
- //>>excludeEnd("ctx");
- ][0]).__lt($recv(b)._name());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._includingPossibleMetaDo_((function(behavior){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv(behavior)._protocols())._includes_(extensionName))){
- return $recv(result)._add_($recv($globals.ExportMethodProtocol)._name_theClass_(extensionName,behavior));
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({behavior:behavior},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"extensionProtocolsOfPackage:",{aPackage:aPackage,extensionName:extensionName,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractExporter);
- $core.addClass("ChunkExporter", $globals.AbstractExporter, "Platform-ImportExport");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "chunkEscape:",
- protocol: "convenience",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "chunkEscape: aString\x0a\x09\x22Replace all occurrences of ! with !! and trim at both ends.\x22\x0a\x0a\x09^ (aString replace: '!' with: '!!') trimBoth",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["trimBoth", "replace:with:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv(aString)._replace_with_("!","!!"))._trimBoth();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"chunkEscape:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "exportBehavior:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBehavior", "aStream"],
- source: "exportBehavior: aBehavior on: aStream\x0a\x09aBehavior exportBehaviorDefinitionTo: aStream using: self.\x0a\x09self \x0a\x09\x09exportProtocols: (self ownMethodProtocolsOfClass: aBehavior)\x0a\x09\x09on: aStream",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["exportBehaviorDefinitionTo:using:", "exportProtocols:on:", "ownMethodProtocolsOfClass:"]
- }, function ($methodClass){ return function (aBehavior,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aBehavior)._exportBehaviorDefinitionTo_using_(aStream,self);
- $self._exportProtocols_on_($self._ownMethodProtocolsOfClass_(aBehavior),aStream);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportBehavior:on:",{aBehavior:aBehavior,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "exportCategoryEpilogueOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCategory", "aStream"],
- source: "exportCategoryEpilogueOf: aCategory on: aStream\x0a\x09aStream write: ' !'; lf; lf",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["write:", "lf"]
- }, function ($methodClass){ return function (aCategory,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._write_(" !");
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._lf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportCategoryEpilogueOf:on:",{aCategory:aCategory,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "exportCategoryPrologueOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCategory", "aStream"],
- source: "exportCategoryPrologueOf: aCategory on: aStream\x0a\x09aStream\x0a\x09\x09write: '!';\x0a\x09\x09print: aCategory theClass;\x0a\x09\x09write: ' methodsFor: ';\x0a\x09\x09print: aCategory;\x0a\x09\x09write: '!'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["write:", "print:", "theClass"]
- }, function ($methodClass){ return function (aCategory,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._write_("!")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._print_($recv(aCategory)._theClass())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["print:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_(" methodsFor: ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._print_(aCategory);
- $recv(aStream)._write_("!");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportCategoryPrologueOf:on:",{aCategory:aCategory,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "exportDefinitionOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aStream"],
- source: "exportDefinitionOf: aClass on: aStream\x0a\x09\x22Chunk format.\x22\x0a\x0a\x09aStream\x0a\x09\x09print: aClass superclass;\x0a\x09\x09write: ' subclass: ';\x0a\x09\x09printSymbol: aClass name;\x0a\x09\x09lf.\x0a\x09\x22aClass traitComposition\x0a\x09\x09ifNotEmpty: [ aStream tab; write: {'uses: '. aClass traitCompositionDefinition}; lf ].\x22\x0a\x09aStream\x0a\x09\x09tab;\x0a\x09\x09write: {'slots: {'. ('. ' join: (aClass instanceVariableNames collect: #symbolPrintString)). '}'};\x0a\x09\x09lf;\x0a\x09\x09tab;\x0a\x09\x09write: 'package: ';\x0a\x09\x09print: aClass category;\x0a\x09\x09write: '!';\x0a\x09\x09lf.\x0a\x09aClass comment ifNotEmpty: [ aStream\x0a\x09\x09write: '!'; print: aClass; write: ' commentStamp!'; lf;\x0a\x09\x09write: { self chunkEscape: aClass comment. '!' }; lf ].\x0a\x09aStream lf",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["print:", "superclass", "write:", "printSymbol:", "name", "lf", "tab", "join:", "collect:", "instanceVariableNames", "category", "ifNotEmpty:", "comment", "chunkEscape:"]
- }, function ($methodClass){ return function (aClass,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._print_($recv(aClass)._superclass())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["print:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_(" subclass: ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._printSymbol_($recv(aClass)._name());
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._tab()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["tab"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_(["slots: {",". "._join_($recv($recv(aClass)._instanceVariableNames())._collect_("symbolPrintString")),"}"])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._tab();
- [$recv(aStream)._write_("package: ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._print_($recv(aClass)._category())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["print:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_("!")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv([$recv(aClass)._comment()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["comment"]=1
- //>>excludeEnd("ctx");
- ][0])._ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._write_("!")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._print_(aClass);
- [$recv(aStream)._write_(" commentStamp!")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=6
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=4
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._write_([$self._chunkEscape_($recv(aClass)._comment()),"!"]);
- return [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=5
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv(aStream)._lf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:",{aClass:aClass,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "exportMetaDefinitionOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aStream"],
- source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x0a\x09| classIvars classTraitComposition |\x0a\x09classIvars := aClass class instanceVariableNames.\x0a\x09classTraitComposition := aClass class traitComposition.\x0a\x0a\x09(classIvars notEmpty \x22or: [classTraitComposition notEmpty]\x22) ifTrue: [\x0a\x09\x09aStream\x0a\x09\x09\x09print: aClass theMetaClass.\x0a\x09\x09aStream space. \x22classTraitComposition\x0a\x09\x09\x09ifEmpty: [ aStream space ]\x0a\x09\x09\x09ifNotEmpty: [ aStream lf; tab; write: {'uses: '. aClass class traitCompositionDefinition}; lf; tab ].\x22\x0a\x09\x09aStream\x0a\x09\x09\x09write: {'slots: {'. ('. ' join: (classIvars collect: #symbolPrintString)). '}!'}; lf; lf ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["instanceVariableNames", "class", "traitComposition", "ifTrue:", "notEmpty", "print:", "theMetaClass", "space", "write:", "join:", "collect:", "lf"]
- }, function ($methodClass){ return function (aClass,aStream){
- var self=this,$self=this;
- var classIvars,classTraitComposition;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- classIvars=$recv([$recv(aClass)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0])._instanceVariableNames();
- classTraitComposition=$recv($recv(aClass)._class())._traitComposition();
- if($core.assert($recv(classIvars)._notEmpty())){
- $recv(aStream)._print_($recv(aClass)._theMetaClass());
- $recv(aStream)._space();
- $recv(aStream)._write_(["slots: {",". "._join_($recv(classIvars)._collect_("symbolPrintString")),"}!"]);
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._lf();
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream,classIvars:classIvars,classTraitComposition:classTraitComposition})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "exportMethod:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethod", "aStream"],
- source: "exportMethod: aMethod on: aStream\x0a\x09aStream\x0a\x09\x09lf; lf; write: (self chunkEscape: aMethod source); lf;\x0a\x09\x09write: '!'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["lf", "write:", "chunkEscape:", "source"]
- }, function ($methodClass){ return function (aMethod,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_($self._chunkEscape_($recv(aMethod)._source()))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._lf();
- $recv(aStream)._write_("!");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportMethod:on:",{aMethod:aMethod,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "exportPackage:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackage: aPackage on: aStream\x0a\x0a\x09self\x0a\x09\x09exportPackageDefinitionOf: aPackage on: aStream;\x0a\x09\x09exportPackageImportsOf: aPackage on: aStream.\x0a\x09\x0a\x09aPackage sortedClasses do: [ :eachClass | eachClass includingPossibleMetaDo: [ :each |\x0a\x09\x09self exportBehavior: each on: aStream ] ].\x0a\x09\x0a\x09self exportPackageTraitCompositionsOf: aPackage on: aStream.\x0a\x0a\x09self \x0a\x09\x09exportProtocols: (self extensionProtocolsOfPackage: aPackage)\x0a\x09\x09on: aStream",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["exportPackageDefinitionOf:on:", "exportPackageImportsOf:on:", "do:", "sortedClasses", "includingPossibleMetaDo:", "exportBehavior:on:", "exportPackageTraitCompositionsOf:on:", "exportProtocols:on:", "extensionProtocolsOfPackage:"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._exportPackageDefinitionOf_on_(aPackage,aStream);
- $self._exportPackageImportsOf_on_(aPackage,aStream);
- $recv($recv(aPackage)._sortedClasses())._do_((function(eachClass){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(eachClass)._includingPossibleMetaDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._exportBehavior_on_(each,aStream);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({eachClass:eachClass},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $self._exportPackageTraitCompositionsOf_on_(aPackage,aStream);
- $self._exportProtocols_on_($self._extensionProtocolsOfPackage_(aPackage),aStream);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackage:on:",{aPackage:aPackage,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "exportPackageDefinitionOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackageDefinitionOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09write: 'Smalltalk createPackage: ';\x0a\x09\x09print: aPackage name;\x0a\x09\x09write: '!';\x0a\x09\x09lf",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["write:", "print:", "name", "lf"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._write_("Smalltalk createPackage: ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._print_($recv(aPackage)._name());
- $recv(aStream)._write_("!");
- $recv(aStream)._lf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackageDefinitionOf:on:",{aPackage:aPackage,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "exportPackageImportsOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackageImportsOf: aPackage on: aStream\x0a\x09aPackage imports ifNotEmpty: [ :imports | aStream\x0a\x09\x09write: '(Smalltalk packageAt: ';\x0a\x09\x09print: aPackage name;\x0a\x09\x09write: ' ifAbsent: [ self error: ';\x0a\x09\x09print: 'Package not created: ', aPackage name;\x0a\x09\x09write: { ' ]) imports: '. self chunkEscape: aPackage importsDefinition. '!' };\x0a\x09\x09lf ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotEmpty:", "imports", "write:", "print:", "name", ",", "chunkEscape:", "importsDefinition", "lf"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(aPackage)._imports())._ifNotEmpty_((function(imports){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._write_("(Smalltalk packageAt: ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._print_([$recv(aPackage)._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["name"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["print:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_(" ifAbsent: [ self error: ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._print_("Package not created: ".__comma($recv(aPackage)._name()));
- $recv(aStream)._write_([" ]) imports: ",$self._chunkEscape_($recv(aPackage)._importsDefinition()),"!"]);
- return $recv(aStream)._lf();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({imports:imports},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackageImportsOf:on:",{aPackage:aPackage,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "exportPackageTraitCompositionsOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackageTraitCompositionsOf: aPackage on: aStream\x0a\x09aPackage traitCompositions ifNotEmpty: [ :traitCompositions |\x0a\x09\x09traitCompositions keysAndValuesDo: [ :key :value | self exportTraitComposition: value of: key on: aStream ].\x0a\x09\x09aStream write: '! !'; lf; lf ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotEmpty:", "traitCompositions", "keysAndValuesDo:", "exportTraitComposition:of:on:", "write:", "lf"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(aPackage)._traitCompositions())._ifNotEmpty_((function(traitCompositions){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(traitCompositions)._keysAndValuesDo_((function(key,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._exportTraitComposition_of_on_(value,key,aStream);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({key:key,value:value},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- $recv(aStream)._write_("! !");
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $recv(aStream)._lf();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({traitCompositions:traitCompositions},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackageTraitCompositionsOf:on:",{aPackage:aPackage,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "exportProtocol:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aProtocol", "aStream"],
- source: "exportProtocol: aProtocol on: aStream\x0a\x09aProtocol ownMethods ifNotEmpty: [ :methods |\x0a\x09\x09self exportProtocolPrologueOf: aProtocol on: aStream.\x0a\x09\x09methods do: [ :method | \x0a\x09\x09\x09self exportMethod: method on: aStream ].\x0a\x09\x09self exportProtocolEpilogueOf: aProtocol on: aStream ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotEmpty:", "ownMethods", "exportProtocolPrologueOf:on:", "do:", "exportMethod:on:", "exportProtocolEpilogueOf:on:"]
- }, function ($methodClass){ return function (aProtocol,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(aProtocol)._ownMethods())._ifNotEmpty_((function(methods){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self._exportProtocolPrologueOf_on_(aProtocol,aStream);
- $recv(methods)._do_((function(method){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._exportMethod_on_(method,aStream);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({method:method},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- return $self._exportProtocolEpilogueOf_on_(aProtocol,aStream);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({methods:methods},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportProtocol:on:",{aProtocol:aProtocol,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "exportProtocolEpilogueOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aProtocol", "aStream"],
- source: "exportProtocolEpilogueOf: aProtocol on: aStream\x0a\x09aStream write: ' !'; lf; lf",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["write:", "lf"]
- }, function ($methodClass){ return function (aProtocol,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._write_(" !");
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._lf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportProtocolEpilogueOf:on:",{aProtocol:aProtocol,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "exportProtocolPrologueOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aProtocol", "aStream"],
- source: "exportProtocolPrologueOf: aProtocol on: aStream\x0a\x09aStream\x0a\x09\x09write: '!';\x0a\x09\x09print: aProtocol theClass;\x0a\x09\x09write: ' methodsFor: ';\x0a\x09\x09print: aProtocol name;\x0a\x09\x09write: '!'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["write:", "print:", "theClass", "name"]
- }, function ($methodClass){ return function (aProtocol,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._write_("!")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._print_($recv(aProtocol)._theClass())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["print:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_(" methodsFor: ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._print_($recv(aProtocol)._name());
- $recv(aStream)._write_("!");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportProtocolPrologueOf:on:",{aProtocol:aProtocol,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "exportProtocols:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection", "aStream"],
- source: "exportProtocols: aCollection on: aStream\x0a\x09aCollection do: [ :each |\x0a\x09\x09self exportProtocol: each on: aStream ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "exportProtocol:on:"]
- }, function ($methodClass){ return function (aCollection,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aCollection)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._exportProtocol_on_(each,aStream);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportProtocols:on:",{aCollection:aCollection,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "exportTraitComposition:of:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aTraitComposition", "aBehavior", "aStream"],
- source: "exportTraitComposition: aTraitComposition of: aBehavior on: aStream\x0a\x09aStream \x0a\x09\x09print: aBehavior;\x0a\x09\x09write: ' setTraitComposition: ';\x0a\x09\x09write: aBehavior traitCompositionDefinition;\x0a\x09\x09write: ' asTraitComposition!';\x0a\x09\x09lf",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["print:", "write:", "traitCompositionDefinition", "lf"]
- }, function ($methodClass){ return function (aTraitComposition,aBehavior,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._print_(aBehavior);
- [$recv(aStream)._write_(" setTraitComposition: ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_($recv(aBehavior)._traitCompositionDefinition())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._write_(" asTraitComposition!");
- $recv(aStream)._lf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportTraitComposition:of:on:",{aTraitComposition:aTraitComposition,aBehavior:aBehavior,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "exportTraitDefinitionOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aStream"],
- source: "exportTraitDefinitionOf: aClass on: aStream\x0a\x09\x22Chunk format.\x22\x0a\x0a\x09aStream\x0a\x09\x09write: 'Trait named: '; printSymbol: aClass name; lf.\x0a\x09\x22aClass traitComposition\x0a\x09\x09ifNotEmpty: [ aStream tab; write: {'uses: '. aClass traitCompositionDefinition}; lf ].\x22\x0a\x09aStream\x0a\x09\x09tab; write: 'package: '; print:\x09aClass category; write: '!'; lf.\x0a\x09aClass comment ifNotEmpty: [\x0a\x09\x09aStream\x0a\x09\x09write: '!'; print: aClass; write: ' commentStamp!'; lf;\x0a\x09\x09write: { self chunkEscape: aClass comment. '!' }; lf ].\x0a\x09aStream lf",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["write:", "printSymbol:", "name", "lf", "tab", "print:", "category", "ifNotEmpty:", "comment", "chunkEscape:"]
- }, function ($methodClass){ return function (aClass,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._write_("Trait named: ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._printSymbol_($recv(aClass)._name());
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._tab();
- [$recv(aStream)._write_("package: ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._print_($recv(aClass)._category())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["print:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_("!")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv([$recv(aClass)._comment()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["comment"]=1
- //>>excludeEnd("ctx");
- ][0])._ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._write_("!")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._print_(aClass);
- [$recv(aStream)._write_(" commentStamp!")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=5
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._write_([$self._chunkEscape_($recv(aClass)._comment()),"!"]);
- return [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=4
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv(aStream)._lf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportTraitDefinitionOf:on:",{aClass:aClass,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "extensionCategoriesOfPackage:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "extensionCategoriesOfPackage: aPackage\x0a\x09\x22Issue #143: sort protocol alphabetically\x22\x0a\x0a\x09| name map result |\x0a\x09name := aPackage name.\x0a\x09result := OrderedCollection new.\x0a\x09(Package sortedClasses: Smalltalk classes) do: [ :each |\x0a\x09\x09each includingPossibleMetaDo: [ :aClass |\x0a\x09\x09\x09map := Dictionary new.\x0a\x09\x09\x09aClass protocolsDo: [ :category :methods |\x0a\x09\x09\x09\x09category = ('*', name) ifTrue: [ map at: category put: methods ] ].\x0a\x09\x09\x09result addAll: ((map keys sorted: [ :a :b | a <= b ]) collect: [ :category |\x0a\x09\x09\x09\x09MethodCategory name: category theClass: aClass methods: (map at: category) ]) ] ].\x0a\x09^ result",
- referencedClasses: ["OrderedCollection", "Package", "Smalltalk", "Dictionary", "MethodCategory"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["name", "new", "do:", "sortedClasses:", "classes", "includingPossibleMetaDo:", "protocolsDo:", "ifTrue:", "=", ",", "at:put:", "addAll:", "collect:", "sorted:", "keys", "<=", "name:theClass:methods:", "at:"]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- var name,map,result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- name=$recv(aPackage)._name();
- result=[$recv($globals.OrderedCollection)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($recv($globals.Package)._sortedClasses_($recv($globals.Smalltalk)._classes()))._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._includingPossibleMetaDo_((function(aClass){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- map=$recv($globals.Dictionary)._new();
- $recv(aClass)._protocolsDo_((function(category,methods){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx4) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(category).__eq("*".__comma(name)))){
- return $recv(map)._at_put_(category,methods);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx4) {$ctx4.fillBlock({category:category,methods:methods},$ctx3,3)});
- //>>excludeEnd("ctx");
- }));
- return $recv(result)._addAll_($recv($recv($recv(map)._keys())._sorted_((function(a,b){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx4) {
- //>>excludeEnd("ctx");
- return $recv(a).__lt_eq(b);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx4) {$ctx4.fillBlock({a:a,b:b},$ctx3,5)});
- //>>excludeEnd("ctx");
- })))._collect_((function(category){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx4) {
- //>>excludeEnd("ctx");
- return $recv($globals.MethodCategory)._name_theClass_methods_(category,aClass,$recv(map)._at_(category));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx4) {$ctx4.fillBlock({category:category},$ctx3,6)});
- //>>excludeEnd("ctx");
- })));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({aClass:aClass},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"extensionCategoriesOfPackage:",{aPackage:aPackage,name:name,map:map,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "ownCategoriesOfClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- 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) ]",
- referencedClasses: ["Dictionary", "MethodCategory"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "protocolsDo:", "ifFalse:", "match:", "at:put:", "collect:", "sorted:", "keys", "<=", "name:theClass:methods:", "at:"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- var map;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- map=$recv($globals.Dictionary)._new();
- $recv(aClass)._protocolsDo_((function(each,methods){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv(each)._match_("^\x5c*"))){
- return $recv(map)._at_put_(each,methods);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each,methods:methods},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return $recv($recv($recv(map)._keys())._sorted_((function(a,b){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(a).__lt_eq(b);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,3)});
- //>>excludeEnd("ctx");
- })))._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.MethodCategory)._name_theClass_methods_(each,aClass,$recv(map)._at_(each));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ownCategoriesOfClass:",{aClass:aClass,map:map})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "ownCategoriesOfMetaClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "ownCategoriesOfMetaClass: aClass\x0a\x09\x22Issue #143: sort protocol alphabetically\x22\x0a\x0a\x09^ self ownCategoriesOfClass: aClass theMetaClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ownCategoriesOfClass:", "theMetaClass"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._ownCategoriesOfClass_($recv(aClass)._theMetaClass());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ownCategoriesOfMetaClass:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addMethod(
- $core.method({
- selector: "ownMethodProtocolsOfClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- 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 ]",
- referencedClasses: ["ExportMethodProtocol"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "ownProtocols", "name:theClass:"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv(aClass)._ownProtocols())._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.ExportMethodProtocol)._name_theClass_(each,aClass);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ownMethodProtocolsOfClass:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkExporter);
- $core.addClass("Exporter", $globals.AbstractExporter, "Platform-ImportExport");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.).";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "exportBehavior:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBehavior", "aStream"],
- source: "exportBehavior: aBehavior on: aStream\x0a\x09aBehavior exportBehaviorDefinitionTo: aStream using: self.\x0a\x09aBehavior ownMethods do: [ :method |\x0a\x09\x09self exportMethod: method on: aStream ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["exportBehaviorDefinitionTo:using:", "do:", "ownMethods", "exportMethod:on:"]
- }, function ($methodClass){ return function (aBehavior,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aBehavior)._exportBehaviorDefinitionTo_using_(aStream,self);
- $recv($recv(aBehavior)._ownMethods())._do_((function(method){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._exportMethod_on_(method,aStream);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({method:method},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportBehavior:on:",{aBehavior:aBehavior,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addMethod(
- $core.method({
- selector: "exportDefinitionOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aStream"],
- source: "exportDefinitionOf: aClass on: aStream\x0a\x09aStream\x0a\x09\x09lf;\x0a\x09\x09write: {\x0a\x09\x09\x09'$core.addClass('.\x0a\x09\x09\x09aClass name asJavaScriptSource. ', '.\x0a\x09\x09\x09aClass superclass ifNil: [ 'null' ] ifNotNil: [ :superclass | superclass asJavaScriptSource ]. ', '.\x0a\x09\x09\x09aClass category asJavaScriptSource.\x0a\x09\x09\x09');' };\x0a\x09\x09lf.\x0a\x09aClass instanceVariableNames ifNotEmpty: [ :ivars | aStream\x0a\x09\x09write: { '$core.setSlots('. aClass asJavaScriptSource. ', '. ivars asJavaScriptSource. ');' };\x0a\x09\x09lf ].\x0a\x09aClass comment ifNotEmpty: [\x0a\x09\x09aStream\x0a\x09\x09\x09write: '//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);'; lf;\x0a\x09\x09\x09write: { aClass asJavaScriptSource. '.comment='. aClass comment crlfSanitized asJavaScriptSource. ';' }; lf;\x0a\x09\x09\x09write: '//>>excludeEnd(\x22ide\x22);';\x0a\x09\x09\x09lf ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["lf", "write:", "asJavaScriptSource", "name", "ifNil:ifNotNil:", "superclass", "category", "ifNotEmpty:", "instanceVariableNames", "comment", "crlfSanitized"]
- }, function ($methodClass){ return function (aClass,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3;
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- $1=[$recv($recv(aClass)._name())._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asJavaScriptSource"]=1
- //>>excludeEnd("ctx");
- ][0];
- $2=$recv(aClass)._superclass();
- if($2 == null || $2.a$nil){
- $3="null";
- } else {
- var superclass;
- superclass=$2;
- $3=[$recv(superclass)._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asJavaScriptSource"]=2
- //>>excludeEnd("ctx");
- ][0];
- }
- [$recv(aStream)._write_(["$core.addClass(",$1,", ",$3,", ",[$recv($recv(aClass)._category())._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asJavaScriptSource"]=3
- //>>excludeEnd("ctx");
- ][0],");"])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv($recv(aClass)._instanceVariableNames())._ifNotEmpty_((function(ivars){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._write_(["$core.setSlots(",[$recv(aClass)._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["asJavaScriptSource"]=4
- //>>excludeEnd("ctx");
- ][0],", ",[$recv(ivars)._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["asJavaScriptSource"]=5
- //>>excludeEnd("ctx");
- ][0],");"])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- return [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=3
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({ivars:ivars},$ctx1,3)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["ifNotEmpty:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv([$recv(aClass)._comment()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["comment"]=1
- //>>excludeEnd("ctx");
- ][0])._ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._write_("//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_([[$recv(aClass)._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["asJavaScriptSource"]=6
- //>>excludeEnd("ctx");
- ][0],".comment=",$recv($recv($recv(aClass)._comment())._crlfSanitized())._asJavaScriptSource(),";"])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=5
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._write_("//>>excludeEnd(\x22ide\x22);");
- return $recv(aStream)._lf();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportDefinitionOf:on:",{aClass:aClass,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addMethod(
- $core.method({
- selector: "exportMetaDefinitionOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aStream"],
- source: "exportMetaDefinitionOf: aClass on: aStream\x0a\x09aStream lf.\x0a\x09aClass theMetaClass instanceVariableNames ifNotEmpty: [ :classIvars | aStream\x0a\x09\x09write: { '$core.setSlots('. aClass theMetaClass asJavaScriptSource. ', '. classIvars asJavaScriptSource. ');' };\x0a\x09\x09lf ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["lf", "ifNotEmpty:", "instanceVariableNames", "theMetaClass", "write:", "asJavaScriptSource"]
- }, function ($methodClass){ return function (aClass,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($recv([$recv(aClass)._theMetaClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["theMetaClass"]=1
- //>>excludeEnd("ctx");
- ][0])._instanceVariableNames())._ifNotEmpty_((function(classIvars){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(aStream)._write_(["$core.setSlots(",[$recv($recv(aClass)._theMetaClass())._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["asJavaScriptSource"]=1
- //>>excludeEnd("ctx");
- ][0],", ",$recv(classIvars)._asJavaScriptSource(),");"]);
- return $recv(aStream)._lf();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({classIvars:classIvars},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportMetaDefinitionOf:on:",{aClass:aClass,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addMethod(
- $core.method({
- selector: "exportMethod:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethod", "aStream"],
- source: "exportMethod: aMethod on: aStream\x0a\x09aStream\x0a\x09\x09write: '$core.addMethod('; lf;\x0a\x09\x09write: '$core.method({'; lf;\x0a\x09\x09write: { 'selector: '. aMethod selector asJavaScriptSource. ',' }; lf;\x0a\x09\x09write: { 'protocol: '. aMethod protocol asJavaScriptSource. ',' }; lf.\x0a\x09aMethod instantiateFn ifNil: [ aStream write: { 'fn: '. aMethod fn compiledSource. ',' }; lf ].\x0a\x09aStream\x0a\x09\x09write: '//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);'; lf;\x0a\x09\x09write: { 'args: '. aMethod arguments asJavaScriptSource. ',' }; lf;\x0a\x09\x09write: { 'source: '. aMethod source asJavaScriptSource. ',' }; lf;\x0a\x09\x09write: { 'referencedClasses: '. aMethod referencedClasses asJavaScriptSource. ',' }; lf;\x0a\x09\x09write: '//>>excludeEnd(\x22ide\x22);'; lf;\x0a\x09\x09write: { 'pragmas: '. aMethod basicPragmas asJavaScriptSource. ',' }; lf;\x0a\x09\x09write: { 'messageSends: '. aMethod messageSends asJavaScriptSource }; lf;\x0a\x09\x09write: '}'.\x0a\x09aMethod instantiateFn ifNotNil: [ :ifn | aStream write: { ', '. ifn compiledSource } ].\x0a\x09aStream\x0a\x09\x09write: '),'; lf;\x0a\x09\x09write: { aMethod origin asJavaScriptSource. ');' }; lf; lf",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["write:", "lf", "asJavaScriptSource", "selector", "protocol", "ifNil:", "instantiateFn", "compiledSource", "fn", "arguments", "source", "referencedClasses", "basicPragmas", "messageSends", "ifNotNil:", "origin"]
- }, function ($methodClass){ return function (aMethod,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- [$recv(aStream)._write_("$core.addMethod(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_("$core.method({")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_(["selector: ",[$recv($recv(aMethod)._selector())._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asJavaScriptSource"]=1
- //>>excludeEnd("ctx");
- ][0],","])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_(["protocol: ",[$recv($recv(aMethod)._protocol())._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asJavaScriptSource"]=2
- //>>excludeEnd("ctx");
- ][0],","])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=4
- //>>excludeEnd("ctx");
- ][0];
- $1=[$recv(aMethod)._instantiateFn()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["instantiateFn"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- [$recv(aStream)._write_(["fn: ",[$recv($recv(aMethod)._fn())._compiledSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["compiledSource"]=1
- //>>excludeEnd("ctx");
- ][0],","])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=5
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=5
- //>>excludeEnd("ctx");
- ][0];
- } else {
- $1;
- }
- [$recv(aStream)._write_("//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=6
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=6
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_(["args: ",[$recv($recv(aMethod)._arguments())._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asJavaScriptSource"]=3
- //>>excludeEnd("ctx");
- ][0],","])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=7
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=7
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_(["source: ",[$recv($recv(aMethod)._source())._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asJavaScriptSource"]=4
- //>>excludeEnd("ctx");
- ][0],","])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=8
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=8
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_(["referencedClasses: ",[$recv($recv(aMethod)._referencedClasses())._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asJavaScriptSource"]=5
- //>>excludeEnd("ctx");
- ][0],","])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=9
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=9
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_("//>>excludeEnd(\x22ide\x22);")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=10
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=10
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_(["pragmas: ",[$recv($recv(aMethod)._basicPragmas())._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asJavaScriptSource"]=6
- //>>excludeEnd("ctx");
- ][0],","])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=11
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=11
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_(["messageSends: ",[$recv($recv(aMethod)._messageSends())._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asJavaScriptSource"]=7
- //>>excludeEnd("ctx");
- ][0]])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=12
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=12
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_("}")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=13
- //>>excludeEnd("ctx");
- ][0];
- $2=$recv(aMethod)._instantiateFn();
- if($2 == null || $2.a$nil){
- $2;
- } else {
- var ifn;
- ifn=$2;
- [$recv(aStream)._write_([", ",$recv(ifn)._compiledSource()])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=14
- //>>excludeEnd("ctx");
- ][0];
- }
- [$recv(aStream)._write_("),")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=15
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=13
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._write_([$recv($recv(aMethod)._origin())._asJavaScriptSource(),");"]);
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=14
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._lf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportMethod:on:",{aMethod:aMethod,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addMethod(
- $core.method({
- selector: "exportPackage:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackage: aPackage on: aStream\x0a\x09\x0a\x09self \x0a\x09\x09exportPackagePrologueOf: aPackage on: aStream;\x0a\x09\x09exportPackageDefinitionOf: aPackage on: aStream;\x0a\x09\x09exportPackageContextOf: aPackage on: aStream;\x0a\x09\x09exportPackageImportsOf: aPackage on: aStream;\x0a\x09\x09exportPackageTransportOf: aPackage on: aStream.\x0a\x09\x0a\x09aPackage sortedClasses do: [ :eachClass | eachClass includingPossibleMetaDo: [ :each |\x0a\x09\x09self exportBehavior: each on: aStream ] ].\x0a\x09\x09\x09\x0a\x09self exportPackageTraitCompositionsOf: aPackage on: aStream.\x0a\x0a\x09(self extensionMethodsOfPackage: aPackage) do: [ :each |\x0a\x09\x09self exportMethod: each on: aStream ].\x0a\x09\x09\x0a\x09self exportPackageEpilogueOf: aPackage on: aStream",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["exportPackagePrologueOf:on:", "exportPackageDefinitionOf:on:", "exportPackageContextOf:on:", "exportPackageImportsOf:on:", "exportPackageTransportOf:on:", "do:", "sortedClasses", "includingPossibleMetaDo:", "exportBehavior:on:", "exportPackageTraitCompositionsOf:on:", "extensionMethodsOfPackage:", "exportMethod:on:", "exportPackageEpilogueOf:on:"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._exportPackagePrologueOf_on_(aPackage,aStream);
- $self._exportPackageDefinitionOf_on_(aPackage,aStream);
- $self._exportPackageContextOf_on_(aPackage,aStream);
- $self._exportPackageImportsOf_on_(aPackage,aStream);
- $self._exportPackageTransportOf_on_(aPackage,aStream);
- [$recv($recv(aPackage)._sortedClasses())._do_((function(eachClass){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(eachClass)._includingPossibleMetaDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._exportBehavior_on_(each,aStream);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({eachClass:eachClass},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._exportPackageTraitCompositionsOf_on_(aPackage,aStream);
- $recv($self._extensionMethodsOfPackage_(aPackage))._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._exportMethod_on_(each,aStream);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- $self._exportPackageEpilogueOf_on_(aPackage,aStream);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackage:on:",{aPackage:aPackage,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addMethod(
- $core.method({
- selector: "exportPackageBodyBlockPrologueOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackageBodyBlockPrologueOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09write: 'var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;'; lf",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["write:", "lf"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._write_("var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;");
- $recv(aStream)._lf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackageBodyBlockPrologueOf:on:",{aPackage:aPackage,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addMethod(
- $core.method({
- selector: "exportPackageContextOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackageContextOf: aPackage on: aStream\x0a\x09aPackage contextFunctionSource ifNotNil: [ :source |\x0a\x09\x09aStream\x0a\x09\x09\x09write: { '$pkg.context = '. source. ';' };\x0a\x09\x09\x09lf ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "contextFunctionSource", "write:", "lf"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv(aPackage)._contextFunctionSource();
- if($1 == null || $1.a$nil){
- $1;
- } else {
- var source;
- source=$1;
- $recv(aStream)._write_(["$pkg.context = ",source,";"]);
- $recv(aStream)._lf();
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackageContextOf:on:",{aPackage:aPackage,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addMethod(
- $core.method({
- selector: "exportPackageDefinitionOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackageDefinitionOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09write: { 'var $pkg = $core.addPackage('. aPackage name asJavaScriptSource. ');' };\x0a\x09\x09lf",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["write:", "asJavaScriptSource", "name", "lf"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._write_(["var $pkg = $core.addPackage(",$recv($recv(aPackage)._name())._asJavaScriptSource(),");"]);
- $recv(aStream)._lf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackageDefinitionOf:on:",{aPackage:aPackage,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addMethod(
- $core.method({
- selector: "exportPackageEpilogueOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackageEpilogueOf: aPackage on: aStream\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackageEpilogueOf:on:",{aPackage:aPackage,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addMethod(
- $core.method({
- selector: "exportPackageImportsOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackageImportsOf: aPackage on: aStream\x0a\x09aPackage importsAsJson ifNotEmpty: [ :imports |\x0a\x09\x09aStream\x0a\x09\x09\x09write: { '$pkg.imports = '. imports asJavaScriptSource. ';' };\x0a\x09\x09\x09lf ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotEmpty:", "importsAsJson", "write:", "asJavaScriptSource", "lf"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(aPackage)._importsAsJson())._ifNotEmpty_((function(imports){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(aStream)._write_(["$pkg.imports = ",$recv(imports)._asJavaScriptSource(),";"]);
- return $recv(aStream)._lf();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({imports:imports},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackageImportsOf:on:",{aPackage:aPackage,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addMethod(
- $core.method({
- selector: "exportPackagePrologueOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackagePrologueOf: aPackage on: aStream\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackagePrologueOf:on:",{aPackage:aPackage,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addMethod(
- $core.method({
- selector: "exportPackageTraitCompositionsOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackageTraitCompositionsOf: aPackage on: aStream\x0a\x09aPackage traitCompositions ifNotEmpty: [ :traitCompositions |\x0a\x09\x09traitCompositions keysAndValuesDo: [ :key :value | self exportTraitComposition: value of: key on: aStream ].\x0a\x09\x09aStream lf ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotEmpty:", "traitCompositions", "keysAndValuesDo:", "exportTraitComposition:of:on:", "lf"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(aPackage)._traitCompositions())._ifNotEmpty_((function(traitCompositions){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(traitCompositions)._keysAndValuesDo_((function(key,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._exportTraitComposition_of_on_(value,key,aStream);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({key:key,value:value},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- return $recv(aStream)._lf();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({traitCompositions:traitCompositions},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackageTraitCompositionsOf:on:",{aPackage:aPackage,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addMethod(
- $core.method({
- selector: "exportPackageTransportOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackageTransportOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09write: { '$pkg.transport = '. aPackage transport asJSONString. ';' };\x0a\x09\x09lf",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["write:", "asJSONString", "transport", "lf"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._write_(["$pkg.transport = ",$recv($recv(aPackage)._transport())._asJSONString(),";"]);
- $recv(aStream)._lf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackageTransportOf:on:",{aPackage:aPackage,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addMethod(
- $core.method({
- selector: "exportTraitComposition:of:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aTraitComposition", "aBehavior", "aStream"],
- source: "exportTraitComposition: aTraitComposition of: aBehavior on: aStream\x0a\x09aStream write: {\x0a\x09\x09'$core.setTraitComposition('.\x0a\x09\x09aTraitComposition asJavaScriptSource.\x0a\x09\x09', '.\x0a\x09\x09aBehavior asJavaScriptSource.\x0a\x09\x09');' };\x0a\x09lf",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["write:", "asJavaScriptSource", "lf"]
- }, function ($methodClass){ return function (aTraitComposition,aBehavior,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._write_(["$core.setTraitComposition(",[$recv(aTraitComposition)._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asJavaScriptSource"]=1
- //>>excludeEnd("ctx");
- ][0],", ",$recv(aBehavior)._asJavaScriptSource(),");"]);
- $recv(aStream)._lf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportTraitComposition:of:on:",{aTraitComposition:aTraitComposition,aBehavior:aBehavior,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addMethod(
- $core.method({
- selector: "exportTraitDefinitionOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aStream"],
- source: "exportTraitDefinitionOf: aClass on: aStream\x0a\x09aStream\x0a\x09\x09lf;\x0a\x09\x09write: {\x0a\x09\x09\x09'$core.addTrait('.\x0a\x09\x09\x09aClass name asJavaScriptSource. ', '.\x0a\x09\x09\x09aClass category asJavaScriptSource.\x0a\x09\x09\x09');' }.\x0a\x09aClass comment ifNotEmpty: [\x0a\x09\x09aStream\x0a\x09\x09\x09lf;\x0a\x09\x09\x09write: '//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);'; lf;\x0a\x09\x09\x09write: { aClass asJavaScriptSource. '.comment='. aClass comment crlfSanitized asJavaScriptSource. ';' }; lf;\x0a\x09\x09\x09write: '//>>excludeEnd(\x22ide\x22);' ].\x0a\x09aStream lf",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["lf", "write:", "asJavaScriptSource", "name", "category", "ifNotEmpty:", "comment", "crlfSanitized"]
- }, function ($methodClass){ return function (aClass,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_(["$core.addTrait(",[$recv($recv(aClass)._name())._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asJavaScriptSource"]=1
- //>>excludeEnd("ctx");
- ][0],", ",[$recv($recv(aClass)._category())._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asJavaScriptSource"]=2
- //>>excludeEnd("ctx");
- ][0],");"])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv([$recv(aClass)._comment()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["comment"]=1
- //>>excludeEnd("ctx");
- ][0])._ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_("//>>excludeStart(\x22ide\x22, pragmas.excludeIdeData);")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._write_([[$recv(aClass)._asJavaScriptSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["asJavaScriptSource"]=3
- //>>excludeEnd("ctx");
- ][0],".comment=",$recv($recv($recv(aClass)._comment())._crlfSanitized())._asJavaScriptSource(),";"])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["lf"]=4
- //>>excludeEnd("ctx");
- ][0];
- return $recv(aStream)._write_("//>>excludeEnd(\x22ide\x22);");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv(aStream)._lf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportTraitDefinitionOf:on:",{aClass:aClass,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addMethod(
- $core.method({
- selector: "ownMethodsOfClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- 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*') ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["reject:", "sorted:", "values", "methodDictionary", "<=", "selector", "match:", "protocol"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($recv($recv(aClass)._methodDictionary())._values())._sorted_((function(a,b){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv([$recv(a)._selector()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["selector"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt_eq($recv(b)._selector());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))._reject_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv(each)._protocol())._match_("^\x5c*");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ownMethodsOfClass:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addMethod(
- $core.method({
- selector: "ownMethodsOfMetaClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "ownMethodsOfMetaClass: aClass\x0a\x09\x22Issue #143: sort methods alphabetically\x22\x0a\x0a\x09^ self ownMethodsOfClass: aClass theMetaClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ownMethodsOfClass:", "theMetaClass"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._ownMethodsOfClass_($recv(aClass)._theMetaClass());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ownMethodsOfMetaClass:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Exporter);
- $core.addClass("AmdExporter", $globals.Exporter, "Platform-ImportExport");
- $core.setSlots($globals.AmdExporter, ["namespace"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.AmdExporter.comment="I am used to export Packages in an AMD (Asynchronous Module Definition) JavaScript format.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "amdNamesOfPackages:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anArray"],
- source: "amdNamesOfPackages: anArray\x0a\x09^ (anArray\x0a\x09\x09select: [ :each | (self amdNamespaceOfPackage: each) notNil ])\x0a\x09\x09collect: [ :each | (self amdNamespaceOfPackage: each), '/', each name ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "select:", "notNil", "amdNamespaceOfPackage:", ",", "name"]
- }, function ($methodClass){ return function (anArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv(anArray)._select_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv([$self._amdNamespaceOfPackage_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["amdNamespaceOfPackage:"]=1
- //>>excludeEnd("ctx");
- ][0])._notNil();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv($recv($self._amdNamespaceOfPackage_(each)).__comma("/")).__comma($recv(each)._name())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"amdNamesOfPackages:",{anArray:anArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdExporter);
- $core.addMethod(
- $core.method({
- selector: "amdNamespaceOfPackage:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "amdNamespaceOfPackage: aPackage\x0a\x09^ (aPackage transport type = 'amd')\x0a\x09\x09ifTrue: [ aPackage transport namespace ]\x0a\x09\x09ifFalse: [ nil ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "=", "type", "transport", "namespace"]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv([$recv(aPackage)._transport()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["transport"]=1
- //>>excludeEnd("ctx");
- ][0])._type()).__eq("amd"))){
- return $recv($recv(aPackage)._transport())._namespace();
- } else {
- return nil;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"amdNamespaceOfPackage:",{aPackage:aPackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdExporter);
- $core.addMethod(
- $core.method({
- selector: "exportPackageEpilogueOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackageEpilogueOf: aPackage on: aStream\x0a\x09aStream\x0a\x09\x09write: '});';\x0a\x09\x09lf",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["write:", "lf"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aStream)._write_("});");
- $recv(aStream)._lf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackageEpilogueOf:on:",{aPackage:aPackage,aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdExporter);
- $core.addMethod(
- $core.method({
- selector: "exportPackageImportsOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackageImportsOf: aPackage on: aStream\x0a\x09| importsForOutput pragmaStart pragmaEnd |\x0a\x09pragmaStart := '//>>excludeStart(\x22imports\x22, pragmas.excludeImports);', String lf.\x0a\x09pragmaEnd := '//>>excludeEnd(\x22imports\x22);', String lf.\x0a\x09super exportPackageImportsOf: aPackage on: aStream.\x0a\x09importsForOutput := self importsForOutput: aPackage.\x0a\x09importsForOutput value ifNotEmpty: [ :imports |\x0a\x09\x09| vars |\x0a\x09\x09aStream write: pragmaStart.\x0a\x09\x09vars := importsForOutput key.\x0a\x09\x09vars ifNotEmpty: [ aStream write: { 'var '. ',' join: vars. ';' }; lf ]. \x0a\x09\x09aStream\x0a\x09\x09\x09write: {\x0a\x09\x09\x09\x09'$pkg.isReady = new Promise(function (resolve, reject) { requirejs('.\x0a\x09\x09\x09\x09imports asJavaScriptSource.\x0a\x09\x09\x09\x09', function ('.\x0a\x09\x09\x09\x09',' join: ((1 to: vars size) collect: [ :each | '$', each asString ]).\x0a\x09\x09\x09\x09') {'.\x0a\x09\x09\x09\x09(1 to: vars size) collect: [ :each | (vars at: each), '=$', each asString, '; ' ].\x0a\x09\x09\x09\x09'resolve();}, reject); });' };\x0a\x09\x09\x09lf;\x0a\x09\x09\x09write: pragmaEnd ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "lf", "exportPackageImportsOf:on:", "importsForOutput:", "ifNotEmpty:", "value", "write:", "key", "join:", "asJavaScriptSource", "collect:", "to:", "size", "asString", "at:"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- var importsForOutput,pragmaStart,pragmaEnd;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- pragmaStart=["//>>excludeStart(\x22imports\x22, pragmas.excludeImports);".__comma([$recv($globals.String)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- pragmaEnd=["//>>excludeEnd(\x22imports\x22);".__comma([$recv($globals.String)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0];
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._exportPackageImportsOf_on_.call($self,aPackage,aStream))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- importsForOutput=$self._importsForOutput_(aPackage);
- [$recv($recv(importsForOutput)._value())._ifNotEmpty_((function(imports){
- var vars;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._write_(pragmaStart)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- vars=$recv(importsForOutput)._key();
- $recv(vars)._ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._write_(["var ",[","._join_(vars)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["join:"]=1
- //>>excludeEnd("ctx");
- ][0],";"])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- return [$recv(aStream)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["lf"]=3
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- [$recv(aStream)._write_(["$pkg.isReady = new Promise(function (resolve, reject) { requirejs(",$recv(imports)._asJavaScriptSource(),", function (",","._join_([$recv([(1)._to_([$recv(vars)._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["size"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["to:"]=1
- //>>excludeEnd("ctx");
- ][0])._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return ["$".__comma([$recv(each)._asString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["asString"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,3)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collect:"]=1
- //>>excludeEnd("ctx");
- ][0]),") {",$recv((1)._to_($recv(vars)._size()))._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [$recv([$recv($recv($recv(vars)._at_(each)).__comma("=$")).__comma($recv(each)._asString())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx[","]=5
- //>>excludeEnd("ctx");
- ][0]).__comma("; ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx[","]=4
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,4)});
- //>>excludeEnd("ctx");
- })),"resolve();}, reject); });"])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["write:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._lf();
- return $recv(aStream)._write_(pragmaEnd);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({imports:imports,vars:vars},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["ifNotEmpty:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackageImportsOf:on:",{aPackage:aPackage,aStream:aStream,importsForOutput:importsForOutput,pragmaStart:pragmaStart,pragmaEnd:pragmaEnd})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdExporter);
- $core.addMethod(
- $core.method({
- selector: "exportPackagePrologueOf:on:",
- protocol: "output",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aStream"],
- source: "exportPackagePrologueOf: aPackage on: aStream\x0a\x09| loadDependencies pragmaStart pragmaEnd |\x0a\x09pragmaStart := '//>>excludeStart(\x22imports\x22, pragmas.excludeImports);', String lf.\x0a\x09pragmaEnd := '//>>excludeEnd(\x22imports\x22);', String lf.\x0a\x09loadDependencies := self amdNamesOfPackages: aPackage loadDependencies.\x0a\x09aStream\x0a\x09\x09write: {\x0a\x09\x09\x09'define('.\x0a\x09\x09\x09(#('amber/boot' 'require'), loadDependencies asArray sorted) asJavaScriptSource.\x0a\x09\x09\x09', function($boot,requirejs){\x22use strict\x22;' };\x0a\x09\x09lf.\x0a\x09self exportPackageBodyBlockPrologueOf: aPackage on: aStream",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "lf", "amdNamesOfPackages:", "loadDependencies", "write:", "asJavaScriptSource", "sorted", "asArray", "exportPackageBodyBlockPrologueOf:on:"]
- }, function ($methodClass){ return function (aPackage,aStream){
- var self=this,$self=this;
- var loadDependencies,pragmaStart,pragmaEnd;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- pragmaStart=["//>>excludeStart(\x22imports\x22, pragmas.excludeImports);".__comma([$recv($globals.String)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- pragmaEnd=["//>>excludeEnd(\x22imports\x22);".__comma([$recv($globals.String)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0];
- loadDependencies=$self._amdNamesOfPackages_($recv(aPackage)._loadDependencies());
- $recv(aStream)._write_(["define(",$recv(["amber/boot", "require"].__comma($recv($recv(loadDependencies)._asArray())._sorted()))._asJavaScriptSource(),", function($boot,requirejs){\x22use strict\x22;"]);
- $recv(aStream)._lf();
- $self._exportPackageBodyBlockPrologueOf_on_(aPackage,aStream);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportPackagePrologueOf:on:",{aPackage:aPackage,aStream:aStream,loadDependencies:loadDependencies,pragmaStart:pragmaStart,pragmaEnd:pragmaEnd})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdExporter);
- $core.addMethod(
- $core.method({
- selector: "importsForOutput:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "importsForOutput: aPackage\x0a\x09\x22Returns an association where key is list of import variables\x0a\x09and value is list of external dependencies, with ones imported as variables\x0a\x09put at the beginning with same order as is in key.\x0a\x09\x0a\x09For example imports:{'jQuery'->'jquery'. 'bootstrap'} would yield\x0a\x09#('jQuery') -> #('jquery' 'bootstrap')\x22\x0a\x09| namedImports anonImports importVarNames |\x0a\x09namedImports := #().\x0a\x09anonImports := #().\x0a\x09importVarNames := #().\x0a\x09aPackage imports do: [ :each | each isString\x0a\x09\x09ifTrue: [ anonImports add: each ]\x0a\x09\x09ifFalse: [ namedImports add: each value.\x0a\x09\x09\x09importVarNames add: each key ]].\x0a\x09^ importVarNames -> (namedImports, anonImports)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "imports", "ifTrue:ifFalse:", "isString", "add:", "value", "key", "->", ","]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- var namedImports,anonImports,importVarNames;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- namedImports=[];
- anonImports=[];
- importVarNames=[];
- $recv($recv(aPackage)._imports())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(each)._isString())){
- return [$recv(anonImports)._add_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- [$recv(namedImports)._add_($recv(each)._value())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["add:"]=2
- //>>excludeEnd("ctx");
- ][0];
- return $recv(importVarNames)._add_($recv(each)._key());
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return $recv(importVarNames).__minus_gt($recv(namedImports).__comma(anonImports));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"importsForOutput:",{aPackage:aPackage,namedImports:namedImports,anonImports:anonImports,importVarNames:importVarNames})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdExporter);
- $core.addClass("ChunkParser", $globals.Object, "Platform-ImportExport");
- $core.setSlots($globals.ChunkParser, ["stream", "last"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "last",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "last\x0a\x09^ last",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.last;
- }; }),
- $globals.ChunkParser);
- $core.addMethod(
- $core.method({
- selector: "nextChunk",
- protocol: "reading",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["writeStream", "whileTrue:", "next", "notNil", "ifTrue:", "=", "ifTrue:ifFalse:", "peek", "trimBoth", "contents", "nextPut:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var char,result,chunk;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- result=""._writeStream();
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- char=[$recv($self.stream)._next()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["next"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $recv(char)._notNil();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._whileTrue_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv(char).__eq("!")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])){
- if($core.assert($recv($recv($self.stream)._peek()).__eq("!"))){
- $recv($self.stream)._next();
- } else {
- $self.last=$recv($recv(result)._contents())._trimBoth();
- throw $early=[$self.last];
- }
- }
- return $recv(result)._nextPut_(char);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $self.last=nil;
- return $self.last;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextChunk",{char:char,result:result,chunk:chunk})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkParser);
- $core.addMethod(
- $core.method({
- selector: "stream:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "stream: aStream\x0a\x09stream := aStream",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- $self.stream=aStream;
- return self;
- }; }),
- $globals.ChunkParser);
- $core.addMethod(
- $core.method({
- selector: "on:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "on: aStream\x0a\x09^ self new stream: aStream",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["stream:", "new"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._new())._stream_(aStream);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ChunkParser.a$cls);
- $core.addClass("ClassCommentReader", $globals.Object, "Platform-ImportExport");
- $core.setSlots($globals.ClassCommentReader, ["class"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ClassCommentReader.comment="I provide a mechanism for retrieving class comments stored on a file.\x0a\x0aSee also `ClassCategoryReader`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "class:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "class: aClass\x0a\x09class := aClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- $self.class=aClass;
- return self;
- }; }),
- $globals.ClassCommentReader);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassCommentReader);
- $core.addMethod(
- $core.method({
- selector: "scanFrom:",
- protocol: "fileIn",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aChunkParser"],
- source: "scanFrom: aChunkParser\x0a\x09| chunk |\x0a\x09chunk := aChunkParser nextChunk.\x0a\x09chunk ifNotEmpty: [\x0a\x09\x09self setComment: chunk ].",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextChunk", "ifNotEmpty:", "setComment:"]
- }, function ($methodClass){ return function (aChunkParser){
- var self=this,$self=this;
- var chunk;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- chunk=$recv(aChunkParser)._nextChunk();
- $recv(chunk)._ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._setComment_(chunk);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"scanFrom:",{aChunkParser:aChunkParser,chunk:chunk})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassCommentReader);
- $core.addMethod(
- $core.method({
- selector: "setComment:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "setComment: aString\x0a\x09class comment: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["comment:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.class)._comment_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setComment:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassCommentReader);
- $core.addClass("ClassProtocolReader", $globals.Object, "Platform-ImportExport");
- $core.setSlots($globals.ClassProtocolReader, ["class", "category"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ClassProtocolReader.comment="I provide a mechanism for retrieving class descriptions stored on a file in the Smalltalk chunk format.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "class:category:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "aString"],
- source: "class: aClass category: aString\x0a\x09class := aClass.\x0a\x09category := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aClass,aString){
- var self=this,$self=this;
- $self.class=aClass;
- $self.category=aString;
- return self;
- }; }),
- $globals.ClassProtocolReader);
- $core.addMethod(
- $core.method({
- selector: "compileMethod:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "compileMethod: aString\x0a\x09Compiler new install: aString forClass: class protocol: category",
- referencedClasses: ["Compiler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["install:forClass:protocol:", "new"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv($globals.Compiler)._new())._install_forClass_protocol_(aString,$self.class,$self.category);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"compileMethod:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassProtocolReader);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassProtocolReader);
- $core.addMethod(
- $core.method({
- selector: "scanFrom:",
- protocol: "fileIn",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aChunkParser"],
- source: "scanFrom: aChunkParser\x0a\x09| chunk |\x0a\x09[ chunk := aChunkParser nextChunk.\x0a\x09chunk isEmpty ] whileFalse: [\x0a\x09\x09self compileMethod: chunk ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["whileFalse:", "nextChunk", "isEmpty", "compileMethod:"]
- }, function ($methodClass){ return function (aChunkParser){
- var self=this,$self=this;
- var chunk;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- chunk=$recv(aChunkParser)._nextChunk();
- return $recv(chunk)._isEmpty();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._whileFalse_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._compileMethod_(chunk);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"scanFrom:",{aChunkParser:aChunkParser,chunk:chunk})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassProtocolReader);
- $core.addClass("ExportMethodProtocol", $globals.Object, "Platform-ImportExport");
- $core.setSlots($globals.ExportMethodProtocol, ["name", "theClass"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "methods",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "methods\x0a\x09^ (self theClass methodsInProtocol: self name)\x0a\x09\x09sorted: [ :a :b | a selector <= b selector ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["sorted:", "methodsInProtocol:", "theClass", "name", "<=", "selector"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($self._theClass())._methodsInProtocol_($self._name()))._sorted_((function(a,b){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv([$recv(a)._selector()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["selector"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt_eq($recv(b)._selector());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"methods",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ExportMethodProtocol);
- $core.addMethod(
- $core.method({
- selector: "name",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "name\x0a\x09^ name",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.name;
- }; }),
- $globals.ExportMethodProtocol);
- $core.addMethod(
- $core.method({
- selector: "name:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "name: aString\x0a\x09name := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.name=aString;
- return self;
- }; }),
- $globals.ExportMethodProtocol);
- $core.addMethod(
- $core.method({
- selector: "ownMethods",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "ownMethods\x0a\x09^ (self theClass ownMethodsInProtocol: self name)\x0a\x09\x09sorted: [ :a :b | a selector <= b selector ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["sorted:", "ownMethodsInProtocol:", "theClass", "name", "<=", "selector"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($self._theClass())._ownMethodsInProtocol_($self._name()))._sorted_((function(a,b){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv([$recv(a)._selector()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["selector"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt_eq($recv(b)._selector());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ownMethods",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ExportMethodProtocol);
- $core.addMethod(
- $core.method({
- selector: "theClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theClass\x0a\x09^ theClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.theClass;
- }; }),
- $globals.ExportMethodProtocol);
- $core.addMethod(
- $core.method({
- selector: "theClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "theClass: aClass\x0a\x09theClass := aClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- $self.theClass=aClass;
- return self;
- }; }),
- $globals.ExportMethodProtocol);
- $core.addMethod(
- $core.method({
- selector: "name:theClass:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aClass"],
- source: "name: aString theClass: aClass\x0a\x09^ self new\x0a\x09\x09name: aString;\x0a\x09\x09theClass: aClass;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["name:", "new", "theClass:", "yourself"]
- }, function ($methodClass){ return function (aString,aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._name_(aString);
- $recv($1)._theClass_(aClass);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"name:theClass:",{aString:aString,aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ExportMethodProtocol.a$cls);
- $core.addClass("Importer", $globals.Object, "Platform-ImportExport");
- $core.setSlots($globals.Importer, ["lastSection", "lastChunk"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.Importer.comment="I can import Amber code from a string in the chunk format.\x0a\x0a## API\x0a\x0a Importer new import: aString";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "import:",
- protocol: "fileIn",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "import: aStream\x0a\x09| chunk result parser lastEmpty |\x0a\x09parser := ChunkParser on: aStream.\x0a\x09lastEmpty := false.\x0a\x09lastSection := 'n/a, not started'.\x0a\x09lastChunk := nil.\x0a\x09[\x0a\x09[ chunk := parser nextChunk.\x0a\x09chunk isNil ] whileFalse: [\x0a\x09\x09chunk\x0a\x09\x09\x09ifEmpty: [ lastEmpty := true ]\x0a\x09\x09\x09ifNotEmpty: [\x0a\x09\x09\x09\x09lastSection := chunk.\x0a\x09\x09\x09\x09result := Compiler new evaluateExpression: chunk.\x0a\x09\x09\x09\x09lastEmpty\x0a\x09\x09\x09\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09lastEmpty := false.\x0a\x09\x09\x09\x09\x09\x09\x09\x09\x09result scanFrom: parser ]] ].\x0a\x09lastSection := 'n/a, finished'\x0a\x09] on: Error do: [:e | lastChunk := parser last. e pass ].",
- referencedClasses: ["ChunkParser", "Compiler", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:", "on:do:", "whileFalse:", "nextChunk", "isNil", "ifEmpty:ifNotEmpty:", "evaluateExpression:", "new", "ifTrue:", "scanFrom:", "last", "pass"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- var chunk,result,parser,lastEmpty;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- parser=$recv($globals.ChunkParser)._on_(aStream);
- lastEmpty=false;
- $self.lastSection="n/a, not started";
- $self.lastChunk=nil;
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- chunk=$recv(parser)._nextChunk();
- return $recv(chunk)._isNil();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }))._whileFalse_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(chunk)._ifEmpty_ifNotEmpty_((function(){
- lastEmpty=true;
- return lastEmpty;
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx4) {
- //>>excludeEnd("ctx");
- $self.lastSection=chunk;
- result=$recv($recv($globals.Compiler)._new())._evaluateExpression_(chunk);
- if($core.assert(lastEmpty)){
- lastEmpty=false;
- return $recv(result)._scanFrom_(parser);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx4) {$ctx4.fillBlock({},$ctx3,5)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- $self.lastSection="n/a, finished";
- return $self.lastSection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._on_do_($globals.Error,(function(e){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self.lastChunk=$recv(parser)._last();
- return $recv(e)._pass();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,7)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"import:",{aStream:aStream,chunk:chunk,result:result,parser:parser,lastEmpty:lastEmpty})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Importer);
- $core.addMethod(
- $core.method({
- selector: "lastChunk",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "lastChunk\x0a\x09^ lastChunk",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.lastChunk;
- }; }),
- $globals.Importer);
- $core.addMethod(
- $core.method({
- selector: "lastSection",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "lastSection\x0a\x09^ lastSection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.lastSection;
- }; }),
- $globals.Importer);
- $core.addClass("PackageCommitError", $globals.Error, "Platform-ImportExport");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.PackageCommitError.comment="I get signaled when an attempt to commit a package has failed.";
- //>>excludeEnd("ide");
- $core.addClass("PackageHandler", $globals.Object, "Platform-ImportExport");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "ajaxPutAt:data:onSuccess:onError:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aURL", "aString", "aBlock", "anotherBlock"],
- source: "ajaxPutAt: aURL data: aString onSuccess: aBlock onError: anotherBlock\x0a\x09| xhr |\x0a\x09xhr := Platform newXhr.\x0a\x09xhr open: 'PUT' url: aURL async: true.\x0a\x09xhr onreadystatechange: [\x0a\x09\x09xhr readyState = 4 ifTrue: [\x0a\x09\x09\x09(xhr status >= 200 and: [ xhr status < 300 ])\x0a\x09\x09\x09\x09ifTrue: aBlock\x0a\x09\x09\x09\x09ifFalse: anotherBlock ]].\x0a\x09xhr send: aString",
- referencedClasses: ["Platform"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["newXhr", "open:url:async:", "onreadystatechange:", "ifTrue:", "=", "readyState", "ifTrue:ifFalse:", "and:", ">=", "status", "<", "send:"]
- }, function ($methodClass){ return function (aURL,aString,aBlock,anotherBlock){
- var self=this,$self=this;
- var xhr;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- xhr=$recv($globals.Platform)._newXhr();
- $recv(xhr)._open_url_async_("PUT",aURL,true);
- $recv(xhr)._onreadystatechange_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv(xhr)._readyState()).__eq((4)))){
- if($core.assert($recv([$recv(xhr)._status()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["status"]=1
- //>>excludeEnd("ctx");
- ][0]).__gt_eq((200)))){
- $1=$recv($recv(xhr)._status()).__lt((300));
- } else {
- $1=false;
- }
- return $recv($1)._ifTrue_ifFalse_(aBlock,anotherBlock);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv(xhr)._send_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ajaxPutAt:data:onSuccess:onError:",{aURL:aURL,aString:aString,aBlock:aBlock,anotherBlock:anotherBlock,xhr:xhr})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageHandler);
- $core.addMethod(
- $core.method({
- selector: "chunkContentsFor:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "chunkContentsFor: aPackage\x0a\x09^ String streamContents: [ :str |\x0a\x09\x09self chunkExporter exportPackage: aPackage on: str ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "exportPackage:on:", "chunkExporter"]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(str){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._chunkExporter())._exportPackage_on_(aPackage,str);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"chunkContentsFor:",{aPackage:aPackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageHandler);
- $core.addMethod(
- $core.method({
- selector: "chunkExporter",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "chunkExporter\x0a\x09^ self chunkExporterClass new",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "chunkExporterClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._chunkExporterClass())._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"chunkExporter",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageHandler);
- $core.addMethod(
- $core.method({
- selector: "chunkExporterClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "chunkExporterClass\x0a\x09^ ChunkExporter",
- referencedClasses: ["ChunkExporter"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.ChunkExporter;
- }; }),
- $globals.PackageHandler);
- $core.addMethod(
- $core.method({
- selector: "commit:",
- protocol: "committing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- 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 ]",
- referencedClasses: ["PackageCommitError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["commit:onSuccess:onError:", "messageText:", "new", ",", "responseText", "signal"]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self._commit_onSuccess_onError_(aPackage,(function(){
- }),(function(error){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $1=$recv($globals.PackageCommitError)._new();
- $recv($1)._messageText_([$recv("Commiting failed with reason: \x22".__comma($recv(error)._responseText())).__comma("\x22")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]);
- return $recv($1)._signal();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commit:",{aPackage:aPackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageHandler);
- $core.addMethod(
- $core.method({
- selector: "commit:onSuccess:onError:",
- protocol: "committing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aBlock", "anotherBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["commitJsFileFor:onSuccess:onError:", "commitStFileFor:onSuccess:onError:", "beClean", "value"]
- }, function ($methodClass){ return function (aPackage,aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._commitJsFileFor_onSuccess_onError_(aPackage,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._commitStFileFor_onSuccess_onError_(aPackage,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- $recv(aPackage)._beClean();
- return $recv(aBlock)._value();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }),anotherBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),anotherBlock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commit:onSuccess:onError:",{aPackage:aPackage,aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageHandler);
- $core.addMethod(
- $core.method({
- selector: "commitJsFileFor:onSuccess:onError:",
- protocol: "committing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aBlock", "anotherBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ajaxPutAt:data:onSuccess:onError:", ",", "commitPathJsFor:", "name", "contentsFor:"]
- }, function ($methodClass){ return function (aPackage,aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._ajaxPutAt_data_onSuccess_onError_([$recv([$recv($recv($self._commitPathJsFor_(aPackage)).__comma("/")).__comma($recv(aPackage)._name())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(".js")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0],$self._contentsFor_(aPackage),aBlock,anotherBlock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commitJsFileFor:onSuccess:onError:",{aPackage:aPackage,aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageHandler);
- $core.addMethod(
- $core.method({
- selector: "commitPathJsFor:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "commitPathJsFor: aPackage\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commitPathJsFor:",{aPackage:aPackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageHandler);
- $core.addMethod(
- $core.method({
- selector: "commitPathStFor:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "commitPathStFor: aPackage\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commitPathStFor:",{aPackage:aPackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageHandler);
- $core.addMethod(
- $core.method({
- selector: "commitStFileFor:onSuccess:onError:",
- protocol: "committing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage", "aBlock", "anotherBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ajaxPutAt:data:onSuccess:onError:", ",", "commitPathStFor:", "name", "chunkContentsFor:"]
- }, function ($methodClass){ return function (aPackage,aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._ajaxPutAt_data_onSuccess_onError_([$recv([$recv($recv($self._commitPathStFor_(aPackage)).__comma("/")).__comma($recv(aPackage)._name())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(".st")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0],$self._chunkContentsFor_(aPackage),aBlock,anotherBlock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commitStFileFor:onSuccess:onError:",{aPackage:aPackage,aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageHandler);
- $core.addMethod(
- $core.method({
- selector: "contentsFor:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "contentsFor: aPackage\x0a\x09^ String streamContents: [ :str |\x0a\x09\x09self exporter exportPackage: aPackage on: str ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "exportPackage:on:", "exporter"]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(str){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._exporter())._exportPackage_on_(aPackage,str);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"contentsFor:",{aPackage:aPackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageHandler);
- $core.addMethod(
- $core.method({
- selector: "exporter",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "exporter\x0a\x09^ self exporterClass new",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "exporterClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._exporterClass())._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exporter",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageHandler);
- $core.addMethod(
- $core.method({
- selector: "exporterClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "exporterClass\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exporterClass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageHandler);
- $core.addMethod(
- $core.method({
- selector: "load:",
- protocol: "loading",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "load: aPackage\x0a\x09\x22Should return a TThenable\x22\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"load:",{aPackage:aPackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageHandler);
- $core.addMethod(
- $core.method({
- selector: "onCommitError:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anError"],
- source: "onCommitError: anError\x0a\x09PackageCommitError new\x0a\x09\x09messageText: 'Commiting failed with reason: \x22' , (anError responseText) , '\x22';\x0a\x09\x09signal",
- referencedClasses: ["PackageCommitError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["messageText:", "new", ",", "responseText", "signal"]
- }, function ($methodClass){ return function (anError){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.PackageCommitError)._new();
- $recv($1)._messageText_([$recv("Commiting failed with reason: \x22".__comma($recv(anError)._responseText())).__comma("\x22")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]);
- $recv($1)._signal();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"onCommitError:",{anError:anError})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageHandler);
- $core.addMethod(
- $core.method({
- selector: "setPath:forPackage:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aPackage"],
- source: "setPath: aString forPackage: aPackage\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aString,aPackage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setPath:forPackage:",{aString:aString,aPackage:aPackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageHandler);
- $core.addClass("AmdPackageHandler", $globals.PackageHandler, "Platform-ImportExport");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "commitPathJsFor:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "commitPathJsFor: aPackage\x0a\x09^ self toUrl: (self namespaceFor: aPackage)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["toUrl:", "namespaceFor:"]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._toUrl_($self._namespaceFor_(aPackage));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commitPathJsFor:",{aPackage:aPackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdPackageHandler);
- $core.addMethod(
- $core.method({
- selector: "commitPathStFor:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["toUrl:", ",", "namespaceFor:", "commitPathJsFor:", "ifTrue:ifFalse:", "="]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- var path,pathWithout;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- path=$self._toUrl_([$recv($self._namespaceFor_(aPackage)).__comma("/_source")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]);
- pathWithout=$self._commitPathJsFor_(aPackage);
- if($core.assert($recv(path).__eq($recv(pathWithout).__comma("/_source")))){
- return pathWithout;
- } else {
- return path;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commitPathStFor:",{aPackage:aPackage,path:path,pathWithout:pathWithout})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdPackageHandler);
- $core.addMethod(
- $core.method({
- selector: "exporterClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "exporterClass\x0a\x09^ AmdExporter",
- referencedClasses: ["AmdExporter"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.AmdExporter;
- }; }),
- $globals.AmdPackageHandler);
- $core.addMethod(
- $core.method({
- selector: "load:",
- protocol: "loading",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "load: aPackage\x0a\x09^ Promise new: [ :model |\x0a\x09\x09Smalltalk amdRequire\x0a\x09\x09\x09ifNil: [ self error: 'AMD loader not present' ]\x0a\x09\x09\x09ifNotNil: [ :require |\x0a\x09\x09\x09\x09require\x0a\x09\x09\x09\x09\x09value: { (self namespaceFor: aPackage), '/', aPackage name }\x0a\x09\x09\x09\x09\x09value: [ :result | model value: result ]\x0a\x09\x09\x09\x09\x09value: [ :error | model signal: error ] ] ]",
- referencedClasses: ["Promise", "Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new:", "ifNil:ifNotNil:", "amdRequire", "error:", "value:value:value:", ",", "namespaceFor:", "name", "value:", "signal:"]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- return $recv($globals.Promise)._new_((function(model){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $1=$recv($globals.Smalltalk)._amdRequire();
- if($1 == null || $1.a$nil){
- return $self._error_("AMD loader not present");
- } else {
- var require;
- require=$1;
- return $recv(require)._value_value_value_([[$recv($recv($self._namespaceFor_(aPackage)).__comma("/")).__comma($recv(aPackage)._name())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]],(function(result){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(model)._value_(result);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({result:result},$ctx2,4)});
- //>>excludeEnd("ctx");
- }),(function(error){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(model)._signal_(error);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({error:error},$ctx2,5)});
- //>>excludeEnd("ctx");
- }));
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({model:model},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"load:",{aPackage:aPackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdPackageHandler);
- $core.addMethod(
- $core.method({
- selector: "namespaceFor:",
- protocol: "committing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "namespaceFor: aPackage\x0a\x09^ aPackage transport namespace",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["namespace", "transport"]
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv(aPackage)._transport())._namespace();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"namespaceFor:",{aPackage:aPackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdPackageHandler);
- $core.addMethod(
- $core.method({
- selector: "setPath:forPackage:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aPackage"],
- source: "setPath: aString forPackage: aPackage\x0a\x09\x22Set the path the the package's `namespace`\x22\x0a\x09\x0a\x09\x22Smalltalk amdRequire\x0a\x09\x09ifNil: [ self error: 'AMD loader not present' ]\x0a\x09\x09ifNotNil: [ :require |\x22\x0a\x09\x09\x09require provided config: #{\x0a\x09\x09\x09\x09'paths' -> #{\x0a\x09\x09\x09\x09\x09(self namespaceFor: aPackage) -> aString\x0a\x09\x09\x09\x09}\x0a\x09\x09\x09}\x0a\x09\x09\x22]\x22",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["config:", "provided", "namespaceFor:"]
- }, function ($methodClass){ return function (aString,aPackage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(require)._provided())._config_($globals.HashedCollection._newFromPairs_(["paths",$globals.HashedCollection._newFromPairs_([$self._namespaceFor_(aPackage),aString])]));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setPath:forPackage:",{aString:aString,aPackage:aPackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdPackageHandler);
- $core.addMethod(
- $core.method({
- selector: "toUrl:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "toUrl: aString\x0a\x09^ Smalltalk amdRequire\x0a\x09\x09ifNil: [ self error: 'AMD loader not present' ]\x0a\x09\x09ifNotNil: [ :require | require provided toUrl: aString ]",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:ifNotNil:", "amdRequire", "error:", "toUrl:", "provided"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.Smalltalk)._amdRequire();
- if($1 == null || $1.a$nil){
- return $self._error_("AMD loader not present");
- } else {
- var require;
- require=$1;
- return $recv($recv(require)._provided())._toUrl_(aString);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"toUrl:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdPackageHandler);
- $core.addMethod(
- $core.method({
- selector: "defaultNamespace",
- protocol: "commit paths",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "defaultNamespace\x0a\x09^ Smalltalk defaultAmdNamespace",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["defaultAmdNamespace"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Smalltalk)._defaultAmdNamespace();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"defaultNamespace",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdPackageHandler.a$cls);
- $core.addMethod(
- $core.method({
- selector: "defaultNamespace:",
- protocol: "commit paths",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "defaultNamespace: aString\x0a\x09Smalltalk defaultAmdNamespace: aString",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["defaultAmdNamespace:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.Smalltalk)._defaultAmdNamespace_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"defaultNamespace:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdPackageHandler.a$cls);
- $core.addClass("PackageTransport", $globals.Object, "Platform-ImportExport");
- $core.setSlots($globals.PackageTransport, ["package"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptObject",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptObject\x0a\x09^ #{ 'type' -> self type }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["type"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $globals.HashedCollection._newFromPairs_(["type",$self._type()]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptObject",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageTransport);
- $core.addMethod(
- $core.method({
- selector: "commit",
- protocol: "committing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "commit\x0a\x09self commitHandler commit: self package",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["commit:", "commitHandler", "package"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._commitHandler())._commit_($self._package());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commit",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageTransport);
- $core.addMethod(
- $core.method({
- selector: "commitHandler",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "commitHandler\x0a\x09^ self commitHandlerClass new",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "commitHandlerClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._commitHandlerClass())._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commitHandler",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageTransport);
- $core.addMethod(
- $core.method({
- selector: "commitHandlerClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "commitHandlerClass\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commitHandlerClass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageTransport);
- $core.addMethod(
- $core.method({
- selector: "commitOnSuccess:onError:",
- protocol: "committing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anotherBlock"],
- source: "commitOnSuccess: aBlock onError: anotherBlock\x0a\x09self commitHandler \x0a\x09\x09commit: self package\x0a\x09\x09onSuccess: aBlock\x0a\x09\x09onError: anotherBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["commit:onSuccess:onError:", "commitHandler", "package"]
- }, function ($methodClass){ return function (aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._commitHandler())._commit_onSuccess_onError_($self._package(),aBlock,anotherBlock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commitOnSuccess:onError:",{aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageTransport);
- $core.addMethod(
- $core.method({
- selector: "definition",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "definition\x0a\x09^ ''",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "";
- }; }),
- $globals.PackageTransport);
- $core.addMethod(
- $core.method({
- selector: "load",
- protocol: "loading",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "load\x0a\x09^ ((self commitHandler load: self package)\x0a\x09\x09then: [ Smalltalk postLoad ])\x0a\x09\x09catch: [ :e | Smalltalk postFailedLoad: self package. e pass ]",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["catch:", "then:", "load:", "commitHandler", "package", "postLoad", "postFailedLoad:", "pass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($recv($self._commitHandler())._load_([$self._package()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["package"]=1
- //>>excludeEnd("ctx");
- ][0]))._then_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.Smalltalk)._postLoad();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))._catch_((function(e){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv($globals.Smalltalk)._postFailedLoad_($self._package());
- return $recv(e)._pass();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({e:e},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"load",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageTransport);
- $core.addMethod(
- $core.method({
- selector: "package",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "package\x0a\x09^ package",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.package;
- }; }),
- $globals.PackageTransport);
- $core.addMethod(
- $core.method({
- selector: "package:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "package: aPackage\x0a\x09package := aPackage",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- $self.package=aPackage;
- return self;
- }; }),
- $globals.PackageTransport);
- $core.addMethod(
- $core.method({
- selector: "setPath:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "setPath: aString\x0a\x09\x22Set the commit path for the package\x22\x0a\x0a\x09self commitHandler setPath: aString forPackage: package",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["setPath:forPackage:", "commitHandler"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._commitHandler())._setPath_forPackage_(aString,$self.package);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setPath:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageTransport);
- $core.addMethod(
- $core.method({
- selector: "setupFromJson:",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "setupFromJson: anObject\x0a\x09\x22no op. override if needed in subclasses\x22",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.PackageTransport);
- $core.addMethod(
- $core.method({
- selector: "type",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "type\x0a\x09^ self class type",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["type", "class"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._class())._type();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"type",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageTransport);
- $core.setSlots($globals.PackageTransport.a$cls, ["registry"]);
- $core.addMethod(
- $core.method({
- selector: "classRegisteredFor:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "classRegisteredFor: aString\x0a\x09^ registry at: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.registry)._at_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"classRegisteredFor:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageTransport.a$cls);
- $core.addMethod(
- $core.method({
- selector: "defaultType",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "defaultType\x0a\x09^ AmdPackageTransport type",
- referencedClasses: ["AmdPackageTransport"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["type"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.AmdPackageTransport)._type();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"defaultType",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageTransport.a$cls);
- $core.addMethod(
- $core.method({
- selector: "for:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "for: aString\x0a\x09^ (self classRegisteredFor: aString) new",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "classRegisteredFor:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._classRegisteredFor_(aString))._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"for:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageTransport.a$cls);
- $core.addMethod(
- $core.method({
- selector: "fromJson:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "for:", "defaultType", "setupFromJson:", "type", "yourself"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- if(anObject == null || anObject.a$nil){
- return [$self._for_($self._defaultType())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["for:"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- anObject;
- }
- $1=$self._for_($recv(anObject)._type());
- $recv($1)._setupFromJson_(anObject);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fromJson:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageTransport.a$cls);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x09self == PackageTransport\x0a\x09\x09ifTrue: [ registry := #{} ]\x0a\x09\x09ifFalse: [ self register ]",
- referencedClasses: ["PackageTransport"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "ifTrue:ifFalse:", "==", "register"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert($self.__eq_eq($globals.PackageTransport))){
- $self.registry=$globals.HashedCollection._newFromPairs_([]);
- $self.registry;
- } else {
- $self._register();
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageTransport.a$cls);
- $core.addMethod(
- $core.method({
- selector: "register",
- protocol: "registration",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "register\x0a\x09PackageTransport register: self",
- referencedClasses: ["PackageTransport"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["register:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.PackageTransport)._register_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"register",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageTransport.a$cls);
- $core.addMethod(
- $core.method({
- selector: "register:",
- protocol: "registration",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "register: aClass\x0a\x09aClass type ifNotNil: [\x0a\x09\x09registry at: aClass type put: aClass ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "type", "at:put:"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[$recv(aClass)._type()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["type"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $recv($self.registry)._at_put_($recv(aClass)._type(),aClass);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"register:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PackageTransport.a$cls);
- $core.addMethod(
- $core.method({
- selector: "type",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "type\x0a\x09\x22Override in subclasses\x22\x0a\x09^ nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return nil;
- }; }),
- $globals.PackageTransport.a$cls);
- $core.addClass("AmdPackageTransport", $globals.PackageTransport, "Platform-ImportExport");
- $core.setSlots($globals.AmdPackageTransport, ["namespace"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.AmdPackageTransport.comment="I am the default transport for committing packages.\x0a\x0aSee `AmdExporter` and `AmdPackageHandler`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "asJavaScriptObject",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asJavaScriptObject\x0a\x09^ super asJavaScriptObject\x0a\x09\x09at: 'amdNamespace' put: self namespace;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "asJavaScriptObject", "namespace", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._asJavaScriptObject.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._at_put_("amdNamespace",$self._namespace());
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asJavaScriptObject",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdPackageTransport);
- $core.addMethod(
- $core.method({
- selector: "commitHandlerClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "commitHandlerClass\x0a\x09^ AmdPackageHandler",
- referencedClasses: ["AmdPackageHandler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.AmdPackageHandler;
- }; }),
- $globals.AmdPackageTransport);
- $core.addMethod(
- $core.method({
- selector: "defaultNamespace",
- protocol: "defaults",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "defaultNamespace\x0a\x09^ Smalltalk defaultAmdNamespace",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["defaultAmdNamespace"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Smalltalk)._defaultAmdNamespace();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"defaultNamespace",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdPackageTransport);
- $core.addMethod(
- $core.method({
- selector: "definition",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "definition\x0a\x09^ String streamContents: [ :stream | stream \x0a\x09\x09write: { self class name. ' namespace: ' }; print: self namespace ]",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "write:", "name", "class", "print:", "namespace"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.String)._streamContents_((function(stream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(stream)._write_([$recv($self._class())._name()," namespace: "]);
- return $recv(stream)._print_($self._namespace());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({stream:stream},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"definition",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdPackageTransport);
- $core.addMethod(
- $core.method({
- selector: "namespace",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "namespace\x0a\x09^ namespace ifNil: [ self defaultNamespace ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "defaultNamespace"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.namespace;
- if($1 == null || $1.a$nil){
- return $self._defaultNamespace();
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"namespace",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdPackageTransport);
- $core.addMethod(
- $core.method({
- selector: "namespace:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "namespace: aString\x0a\x09namespace := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.namespace=aString;
- return self;
- }; }),
- $globals.AmdPackageTransport);
- $core.addMethod(
- $core.method({
- selector: "printOn:",
- protocol: "printing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "printOn: aStream\x0a\x09super printOn: aStream.\x0a\x09aStream\x0a\x09\x09nextPutAll: ' (AMD Namespace: ';\x0a\x09\x09nextPutAll: self namespace;\x0a\x09\x09nextPutAll: ')'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["printOn:", "nextPutAll:", "namespace"]
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._printOn_.call($self,aStream))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._nextPutAll_(" (AMD Namespace: ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aStream)._nextPutAll_($self._namespace())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._nextPutAll_(")");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printOn:",{aStream:aStream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdPackageTransport);
- $core.addMethod(
- $core.method({
- selector: "setupFromJson:",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "setupFromJson: anObject\x0a\x09self namespace: (anObject at: 'amdNamespace')",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["namespace:", "at:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._namespace_($recv(anObject)._at_("amdNamespace"));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setupFromJson:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdPackageTransport);
- $core.addMethod(
- $core.method({
- selector: "namespace:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "namespace: aString\x0a\x09^ self new\x0a\x09\x09namespace: aString;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["namespace:", "new", "yourself"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._namespace_(aString);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"namespace:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmdPackageTransport.a$cls);
- $core.addMethod(
- $core.method({
- selector: "type",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "type\x0a\x09^ 'amd'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "amd";
- }; }),
- $globals.AmdPackageTransport.a$cls);
- $core.addMethod(
- $core.method({
- selector: "exportBehaviorDefinitionTo:using:",
- protocol: "*Platform-ImportExport",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream", "anExporter"],
- source: "exportBehaviorDefinitionTo: aStream using: anExporter\x0a\x09anExporter exportDefinitionOf: self on: aStream",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["exportDefinitionOf:on:"]
- }, function ($methodClass){ return function (aStream,anExporter){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(anExporter)._exportDefinitionOf_on_(self,aStream);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportBehaviorDefinitionTo:using:",{aStream:aStream,anExporter:anExporter})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Class);
- $core.addMethod(
- $core.method({
- selector: "exportBehaviorDefinitionTo:using:",
- protocol: "*Platform-ImportExport",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream", "anExporter"],
- source: "exportBehaviorDefinitionTo: aStream using: anExporter\x0a\x09anExporter exportMetaDefinitionOf: self instanceClass on: aStream",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["exportMetaDefinitionOf:on:", "instanceClass"]
- }, function ($methodClass){ return function (aStream,anExporter){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(anExporter)._exportMetaDefinitionOf_on_($self._instanceClass(),aStream);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportBehaviorDefinitionTo:using:",{aStream:aStream,anExporter:anExporter})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Metaclass);
- $core.addMethod(
- $core.method({
- selector: "commit",
- protocol: "*Platform-ImportExport",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "commit\x0a\x09^ self transport commit",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["commit", "transport"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._transport())._commit();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commit",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "load",
- protocol: "*Platform-ImportExport",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "load\x0a\x09^ self transport load",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["load", "transport"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._transport())._load();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"load",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "loadFromNamespace:",
- protocol: "*Platform-ImportExport",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "loadFromNamespace: aString\x0a\x09^ self transport\x0a\x09\x09namespace: aString;\x0a\x09\x09load",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["namespace:", "transport", "load"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._transport();
- $recv($1)._namespace_(aString);
- return $recv($1)._load();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"loadFromNamespace:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "load:",
- protocol: "*Platform-ImportExport",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackageName"],
- source: "load: aPackageName\x0a\x09^ (self named: aPackageName) load",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["load", "named:"]
- }, function ($methodClass){ return function (aPackageName){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._named_(aPackageName))._load();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"load:",{aPackageName:aPackageName})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package.a$cls);
- $core.addMethod(
- $core.method({
- selector: "load:fromNamespace:",
- protocol: "*Platform-ImportExport",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackageName", "aString"],
- source: "load: aPackageName fromNamespace: aString\x0a\x09^ (self named: aPackageName) loadFromNamespace: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["loadFromNamespace:", "named:"]
- }, function ($methodClass){ return function (aPackageName,aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._named_(aPackageName))._loadFromNamespace_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"load:fromNamespace:",{aPackageName:aPackageName,aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package.a$cls);
- $core.addMethod(
- $core.method({
- selector: "methodsFor:",
- protocol: "*Platform-ImportExport",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "methodsFor: aString\x0a\x09^ ClassProtocolReader new\x0a\x09\x09class: self category: aString;\x0a\x09\x09yourself",
- referencedClasses: ["ClassProtocolReader"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["class:category:", "new", "yourself"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.ClassProtocolReader)._new();
- $recv($1)._class_category_(self,aString);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"methodsFor:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "methodsFor:stamp:",
- protocol: "*Platform-ImportExport",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aStamp"],
- source: "methodsFor: aString stamp: aStamp\x0a\x09\x22Added for file-in compatibility, ignores stamp.\x22\x0a\x09^ self methodsFor: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["methodsFor:"]
- }, function ($methodClass){ return function (aString,aStamp){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._methodsFor_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"methodsFor:stamp:",{aString:aString,aStamp:aStamp})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TBehaviorProvider);
- $core.addMethod(
- $core.method({
- selector: "commentStamp",
- protocol: "*Platform-ImportExport",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "commentStamp\x0a\x09^ ClassCommentReader new\x0a\x09class: self;\x0a\x09yourself",
- referencedClasses: ["ClassCommentReader"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["class:", "new", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.ClassCommentReader)._new();
- $recv($1)._class_(self);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commentStamp",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMasterBehavior);
- $core.addMethod(
- $core.method({
- selector: "commentStamp:prior:",
- protocol: "*Platform-ImportExport",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStamp", "prior"],
- source: "commentStamp: aStamp prior: prior\x0a\x09\x09^ self commentStamp",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["commentStamp"]
- }, function ($methodClass){ return function (aStamp,prior){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._commentStamp();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commentStamp:prior:",{aStamp:aStamp,prior:prior})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TMasterBehavior);
- $core.addMethod(
- $core.method({
- selector: "exportBehaviorDefinitionTo:using:",
- protocol: "*Platform-ImportExport",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream", "anExporter"],
- source: "exportBehaviorDefinitionTo: aStream using: anExporter\x0a\x09anExporter exportTraitDefinitionOf: self on: aStream",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["exportTraitDefinitionOf:on:"]
- }, function ($methodClass){ return function (aStream,anExporter){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(anExporter)._exportTraitDefinitionOf_on_(self,aStream);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"exportBehaviorDefinitionTo:using:",{aStream:aStream,anExporter:anExporter})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Trait);
- });
- define('amber/core/Compiler-Core',["amber/boot", "require", "amber/core/Kernel-Collections", "amber/core/Kernel-Exceptions", "amber/core/Kernel-Infrastructure", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Compiler-Core");
- $pkg.context = function () { return {smalltalkParser:smalltalkParser}; };
- $pkg.imports = ["smalltalkParser=amber/parser"];
- //>>excludeStart("imports", pragmas.excludeImports);
- var smalltalkParser;
- $pkg.isReady = new Promise(function (resolve, reject) { requirejs(["amber/parser"], function ($1) {smalltalkParser=$1; resolve();}, reject); });
- //>>excludeEnd("imports");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("AbstractCodeGenerator", $globals.Object, "Compiler-Core");
- $core.setSlots($globals.AbstractCodeGenerator, ["currentClass", "currentPackage", "source"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.AbstractCodeGenerator.comment="I am the abstract super class of all code generators and provide their common API.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "compileNode:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "compileNode: aNode\x0a\x09^ self transformers\x0a\x09\x09inject: aNode\x0a\x09\x09into: [ :input :transformer | transformer value: input ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["inject:into:", "transformers", "value:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._transformers())._inject_into_(aNode,(function(input,transformer){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(transformer)._value_(input);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({input:input,transformer:transformer},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGenerator);
- $core.addMethod(
- $core.method({
- selector: "currentClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "currentClass\x0a\x09^ currentClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.currentClass;
- }; }),
- $globals.AbstractCodeGenerator);
- $core.addMethod(
- $core.method({
- selector: "currentClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "currentClass: aClass\x0a\x09currentClass := aClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- $self.currentClass=aClass;
- return self;
- }; }),
- $globals.AbstractCodeGenerator);
- $core.addMethod(
- $core.method({
- selector: "currentPackage",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "currentPackage\x0a\x09^ currentPackage",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.currentPackage;
- }; }),
- $globals.AbstractCodeGenerator);
- $core.addMethod(
- $core.method({
- selector: "currentPackage:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "currentPackage: anObject\x0a\x09currentPackage := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.currentPackage=anObject;
- return self;
- }; }),
- $globals.AbstractCodeGenerator);
- $core.addMethod(
- $core.method({
- selector: "pseudoVariables",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "pseudoVariables\x0a\x09^ Smalltalk pseudoVariableNames",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["pseudoVariableNames"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Smalltalk)._pseudoVariableNames();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"pseudoVariables",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGenerator);
- $core.addMethod(
- $core.method({
- selector: "source",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "source\x0a\x09^ source ifNil: [ '' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.source;
- if($1 == null || $1.a$nil){
- return "";
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"source",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGenerator);
- $core.addMethod(
- $core.method({
- selector: "source:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "source: aString\x0a\x09source := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.source=aString;
- return self;
- }; }),
- $globals.AbstractCodeGenerator);
- $core.addMethod(
- $core.method({
- selector: "transformers",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "transformers\x0a\x09| dict |\x0a\x09dict := self transformersDictionary.\x0a\x09^ dict keys asArray sort collect: [ :each | dict at: each ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["transformersDictionary", "collect:", "sort", "asArray", "keys", "at:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var dict;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- dict=$self._transformersDictionary();
- return $recv($recv($recv($recv(dict)._keys())._asArray())._sort())._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(dict)._at_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"transformers",{dict:dict})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGenerator);
- $core.addMethod(
- $core.method({
- selector: "transformersDictionary",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "transformersDictionary\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"transformersDictionary",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGenerator);
- $core.addClass("AstGenerator", $globals.AbstractCodeGenerator, "Compiler-Core");
- $core.setSlots($globals.AstGenerator, ["transformersDictionary"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.AstGenerator.comment="I am a very basic code generator.\x0aI generate semantically augmented abstract syntax tree,\x0aSome initial pragmas (eg. #inlineJS:) are applied to transform the tree.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "semanticAnalyzer",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "semanticAnalyzer\x0a\x09^ (SemanticAnalyzer on: self currentClass)\x0a\x09\x09thePackage: self currentPackage;\x0a\x09\x09yourself",
- referencedClasses: ["SemanticAnalyzer"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["thePackage:", "on:", "currentClass", "currentPackage", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.SemanticAnalyzer)._on_($self._currentClass());
- $recv($1)._thePackage_($self._currentPackage());
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"semanticAnalyzer",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AstGenerator);
- $core.addMethod(
- $core.method({
- selector: "semanticAstPragmator",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "semanticAstPragmator\x0a\x09^ AstSemanticPragmator new",
- referencedClasses: ["AstSemanticPragmator"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.AstSemanticPragmator)._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"semanticAstPragmator",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AstGenerator);
- $core.addMethod(
- $core.method({
- selector: "transformersDictionary",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "transformersDictionary\x0a\x09^ transformersDictionary ifNil: [ transformersDictionary := Dictionary new\x0a\x09\x09at: '2000-semantic' put: self semanticAnalyzer;\x0a\x09\x09at: '2500-semanticPragmas' put: self semanticAstPragmator;\x0a\x09\x09yourself ]",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "at:put:", "new", "semanticAnalyzer", "semanticAstPragmator", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=$self.transformersDictionary;
- if($1 == null || $1.a$nil){
- $2=$recv($globals.Dictionary)._new();
- [$recv($2)._at_put_("2000-semantic",$self._semanticAnalyzer())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._at_put_("2500-semanticPragmas",$self._semanticAstPragmator());
- $self.transformersDictionary=$recv($2)._yourself();
- return $self.transformersDictionary;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"transformersDictionary",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AstGenerator);
- $core.addClass("CodeGenerator", $globals.AstGenerator, "Compiler-Core");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.CodeGenerator.comment="I am a basic code generator. I generate a valid JavaScript output, but do not perform any inlining.\x0aSee `InliningCodeGenerator` for an optimized JavaScript code generation.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "irTranslator",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "irTranslator\x0a\x09^ self irTranslatorClass new\x0a\x09\x09currentClass: self currentClass;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["currentClass:", "new", "irTranslatorClass", "currentClass", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($self._irTranslatorClass())._new();
- $recv($1)._currentClass_($self._currentClass());
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"irTranslator",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CodeGenerator);
- $core.addMethod(
- $core.method({
- selector: "irTranslatorClass",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "irTranslatorClass\x0a\x09^ IRJSTranslator",
- referencedClasses: ["IRJSTranslator"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.IRJSTranslator;
- }; }),
- $globals.CodeGenerator);
- $core.addMethod(
- $core.method({
- selector: "lateIRPragmator",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "lateIRPragmator\x0a\x09^ IRLatePragmator new",
- referencedClasses: ["IRLatePragmator"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.IRLatePragmator)._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"lateIRPragmator",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CodeGenerator);
- $core.addMethod(
- $core.method({
- selector: "transformersDictionary",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "transformersDictionary\x0a\x09^ transformersDictionary ifNil: [ transformersDictionary := super transformersDictionary\x0a\x09\x09at: '5000-astToIr' put: self translator;\x0a\x09\x09at: '7000-irLatePragmas' put: self lateIRPragmator;\x0a\x09\x09at: '8000-irToJs' put: self irTranslator;\x0a\x09\x09yourself ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "at:put:", "transformersDictionary", "translator", "lateIRPragmator", "irTranslator", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=$self.transformersDictionary;
- if($1 == null || $1.a$nil){
- $2=[(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._transformersDictionary.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._at_put_("5000-astToIr",$self._translator())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._at_put_("7000-irLatePragmas",$self._lateIRPragmator())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._at_put_("8000-irToJs",$self._irTranslator());
- $self.transformersDictionary=$recv($2)._yourself();
- return $self.transformersDictionary;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"transformersDictionary",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CodeGenerator);
- $core.addMethod(
- $core.method({
- selector: "translator",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "translator\x0a\x09^ IRASTTranslator new\x0a\x09\x09source: self source;\x0a\x09\x09theClass: self currentClass;\x0a\x09\x09yourself",
- referencedClasses: ["IRASTTranslator"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["source:", "new", "source", "theClass:", "currentClass", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.IRASTTranslator)._new();
- $recv($1)._source_($self._source());
- $recv($1)._theClass_($self._currentClass());
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"translator",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CodeGenerator);
- $core.addClass("Compiler", $globals.Object, "Compiler-Core");
- $core.setSlots($globals.Compiler, ["currentPackage", "codeGeneratorClass", "codeGenerator"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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`";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "ast:forClass:protocol:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aClass", "anotherString"],
- source: "ast: aString forClass: aClass protocol: anotherString\x0a\x09^ self\x0a\x09\x09codeGeneratorClass: AstGenerator;\x0a\x09\x09start: aString forClass: aClass protocol: anotherString;\x0a\x09\x09compileNode: (self parse: aString)",
- referencedClasses: ["AstGenerator"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["codeGeneratorClass:", "start:forClass:protocol:", "compileNode:", "parse:"]
- }, function ($methodClass){ return function (aString,aClass,anotherString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._codeGeneratorClass_($globals.AstGenerator);
- $self._start_forClass_protocol_(aString,aClass,anotherString);
- return $self._compileNode_($self._parse_(aString));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ast:forClass:protocol:",{aString:aString,aClass:aClass,anotherString:anotherString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "basicParse:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "basicParse: aString\x0a\x09^ smalltalkParser parse: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(smalltalkParser)._parse_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicParse:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "cleanCodeGenerator",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "cleanCodeGenerator\x0a\x09codeGenerator := nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- $self.codeGenerator=nil;
- return self;
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "codeGenerator",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "codeGenerator\x0a\x09^ codeGenerator",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.codeGenerator;
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "codeGenerator:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "codeGenerator: anObject\x0a\x09codeGenerator := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.codeGenerator=anObject;
- return self;
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "codeGeneratorClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "codeGeneratorClass\x0a\x09^ codeGeneratorClass ifNil: [ InliningCodeGenerator ]",
- referencedClasses: ["InliningCodeGenerator"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.codeGeneratorClass;
- if($1 == null || $1.a$nil){
- return $globals.InliningCodeGenerator;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "codeGeneratorClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "codeGeneratorClass: aClass\x0a\x09codeGeneratorClass := aClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- $self.codeGeneratorClass=aClass;
- return self;
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "compile:forClass:protocol:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aClass", "anotherString"],
- source: "compile: aString forClass: aClass protocol: anotherString\x0a\x09| sanitizedSource compilationResult result pragmas closureFactory |\x0a\x09sanitizedSource := aString crlfSanitized.\x0a\x09compilationResult := self\x0a\x09\x09start: sanitizedSource forClass: aClass protocol: anotherString;\x0a\x09\x09compileNode: (self parse: sanitizedSource).\x0a\x09closureFactory := self\x0a\x09\x09eval: (self wrappedSourceOf: compilationResult)\x0a\x09\x09forPackage: self currentPackage.\x0a\x09result := Smalltalk core method: #{\x0a\x09\x09#selector -> compilationResult selector.\x0a\x09\x09#protocol -> anotherString.\x0a\x09\x09#source -> sanitizedSource.\x0a\x09\x09#messageSends -> compilationResult messageSends asArray.\x0a\x09\x09#args -> compilationResult arguments.\x0a\x09\x09#referencedClasses -> compilationResult classReferences asArray.\x0a\x09} withFactory: closureFactory.\x0a\x09result pragmas: compilationResult pragmas.\x0a\x09^ result",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["crlfSanitized", "start:forClass:protocol:", "compileNode:", "parse:", "eval:forPackage:", "wrappedSourceOf:", "currentPackage", "method:withFactory:", "core", "selector", "asArray", "messageSends", "arguments", "classReferences", "pragmas:", "pragmas"]
- }, function ($methodClass){ return function (aString,aClass,anotherString){
- var self=this,$self=this;
- var sanitizedSource,compilationResult,result,pragmas,closureFactory;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- sanitizedSource=$recv(aString)._crlfSanitized();
- $self._start_forClass_protocol_(sanitizedSource,aClass,anotherString);
- compilationResult=$self._compileNode_($self._parse_(sanitizedSource));
- closureFactory=$self._eval_forPackage_($self._wrappedSourceOf_(compilationResult),$self._currentPackage());
- result=$recv($recv($globals.Smalltalk)._core())._method_withFactory_($globals.HashedCollection._newFromPairs_(["selector",$recv(compilationResult)._selector(),"protocol",anotherString,"source",sanitizedSource,"messageSends",[$recv($recv(compilationResult)._messageSends())._asArray()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asArray"]=1
- //>>excludeEnd("ctx");
- ][0],"args",$recv(compilationResult)._arguments(),"referencedClasses",$recv($recv(compilationResult)._classReferences())._asArray()]),closureFactory);
- $recv(result)._pragmas_($recv(compilationResult)._pragmas());
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"compile:forClass:protocol:",{aString:aString,aClass:aClass,anotherString:anotherString,sanitizedSource:sanitizedSource,compilationResult:compilationResult,result:result,pragmas:pragmas,closureFactory:closureFactory})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "compileNode:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "compileNode: aNode\x0a | result |\x0a\x09result := self codeGenerator compileNode: aNode.\x0a\x09self cleanCodeGenerator.\x0a\x09^ result",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["compileNode:", "codeGenerator", "cleanCodeGenerator"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- result=$recv($self._codeGenerator())._compileNode_(aNode);
- $self._cleanCodeGenerator();
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"compileNode:",{aNode:aNode,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "currentPackage",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "currentPackage\x0a\x09^ currentPackage",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.currentPackage;
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "currentPackage:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "currentPackage: anObject\x0a\x09currentPackage := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.currentPackage=anObject;
- return self;
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "error:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "error: aString\x0a\x09CompilerError signal: aString",
- referencedClasses: ["CompilerError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["signal:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.CompilerError)._signal_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"error:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "eval:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "eval: aString\x0a\x09<inlineJS: 'return eval(aString)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return eval(aString)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return eval(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "eval:forPackage:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aPackage"],
- source: "eval: aString forPackage: aPackage\x0a\x09^ aPackage\x0a\x09\x09ifNil: [ self eval: aString ]\x0a\x09\x09ifNotNil: [ aPackage eval: aString ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:ifNotNil:", "eval:"]
- }, function ($methodClass){ return function (aString,aPackage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(aPackage == null || aPackage.a$nil){
- return [$self._eval_(aString)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["eval:"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- return $recv(aPackage)._eval_(aString);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"eval:forPackage:",{aString:aString,aPackage:aPackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "evaluateExpression:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- 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",
- referencedClasses: ["DoIt"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["evaluateExpression:on:", "new"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._evaluateExpression_on_(aString,$recv($globals.DoIt)._new());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"evaluateExpression:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "evaluateExpression:on:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "evaluateExpression: aString on: anObject\x0a\x09\x22Unlike #eval: evaluate a Smalltalk expression with anObject as the receiver and answer the returned object\x22\x0a\x09| result method |\x0a\x09method := self\x0a\x09\x09install: (self sourceForExpression: aString)\x0a\x09\x09forClass: anObject class\x0a\x09\x09protocol: '**xxxDoIt'.\x0a\x09result := anObject xxxDoIt.\x0a\x09anObject class removeCompiledMethod: method.\x0a\x09^ result",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["install:forClass:protocol:", "sourceForExpression:", "class", "xxxDoIt", "removeCompiledMethod:"]
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- var result,method;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- method=$self._install_forClass_protocol_($self._sourceForExpression_(aString),[$recv(anObject)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0],"**xxxDoIt");
- result=$recv(anObject)._xxxDoIt();
- $recv($recv(anObject)._class())._removeCompiledMethod_(method);
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"evaluateExpression:on:",{aString:aString,anObject:anObject,result:result,method:method})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "install:forClass:protocol:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aBehavior", "anotherString"],
- source: "install: aString forClass: aBehavior protocol: anotherString\x0a\x09| compiledMethod |\x0a\x09compiledMethod := self compile: aString forClass: aBehavior protocol: anotherString.\x0a\x09aBehavior addCompiledMethod: compiledMethod.\x0a\x09^ compiledMethod",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["compile:forClass:protocol:", "addCompiledMethod:"]
- }, function ($methodClass){ return function (aString,aBehavior,anotherString){
- var self=this,$self=this;
- var compiledMethod;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- compiledMethod=$self._compile_forClass_protocol_(aString,aBehavior,anotherString);
- $recv(aBehavior)._addCompiledMethod_(compiledMethod);
- return compiledMethod;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"install:forClass:protocol:",{aString:aString,aBehavior:aBehavior,anotherString:anotherString,compiledMethod:compiledMethod})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "parse:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["tryCatch:", "basicParse:", "signal", "parseError:parsing:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- var result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- result=$self._basicParse_(aString);
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._tryCatch_((function(ex){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._parseError_parsing_(ex,aString))._signal();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "parseError:parsing:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anException", "aString"],
- source: "parseError: anException parsing: aString\x0a\x09(anException basicAt: 'location')\x0a\x09\x09ifNil: [ ^ anException pass ]\x0a\x09\x09ifNotNil: [ :loc |\x0a\x09\x09\x09^ ParseError new \x0a\x09\x09\x09\x09messageText: \x0a\x09\x09\x09\x09\x09'Parse error on line ', loc start line asString,\x0a\x09\x09\x09\x09\x09' column ' , loc start column asString,\x0a\x09\x09\x09\x09\x09' : Unexpected character ', (anException basicAt: 'found');\x0a\x09\x09\x09\x09yourself ]",
- referencedClasses: ["ParseError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:ifNotNil:", "basicAt:", "pass", "messageText:", "new", ",", "asString", "line", "start", "column", "yourself"]
- }, function ($methodClass){ return function (anException,aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=[$recv(anException)._basicAt_("location")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["basicAt:"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- return $recv(anException)._pass();
- } else {
- var loc;
- loc=$1;
- $2=$recv($globals.ParseError)._new();
- $recv($2)._messageText_([$recv([$recv([$recv([$recv("Parse error on line ".__comma([$recv($recv([$recv(loc)._start()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["start"]=1
- //>>excludeEnd("ctx");
- ][0])._line())._asString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asString"]=1
- //>>excludeEnd("ctx");
- ][0])).__comma(" column ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=4
- //>>excludeEnd("ctx");
- ][0]).__comma($recv($recv($recv(loc)._start())._column())._asString())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0]).__comma(" : Unexpected character ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma($recv(anException)._basicAt_("found"))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]);
- return $recv($2)._yourself();
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"parseError:parsing:",{anException:anException,aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "parseExpression:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "parseExpression: aString\x0a\x09^ self parse: (self sourceForExpression: aString)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "sourceForExpression:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._parse_($self._sourceForExpression_(aString));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"parseExpression:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "recompile:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "recompile: aClass\x0a\x09aClass includingPossibleMetaDo: [ :eachSide |\x0a\x09\x09eachSide methodDictionary values\x0a\x09\x09\x09do: [ :each | each origin = eachSide ifTrue: [ \x0a\x09\x09\x09\x09self \x0a\x09\x09\x09\x09\x09install: each source \x0a\x09\x09\x09\x09\x09forClass: eachSide \x0a\x09\x09\x09\x09\x09protocol: each protocol ] ]\x0a\x09\x09\x09displayingProgress: 'Recompiling ', eachSide name ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["includingPossibleMetaDo:", "do:displayingProgress:", "values", "methodDictionary", "ifTrue:", "=", "origin", "install:forClass:protocol:", "source", "protocol", ",", "name"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aClass)._includingPossibleMetaDo_((function(eachSide){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv($recv(eachSide)._methodDictionary())._values())._do_displayingProgress_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv(each)._origin()).__eq(eachSide))){
- return $self._install_forClass_protocol_($recv(each)._source(),eachSide,$recv(each)._protocol());
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
- //>>excludeEnd("ctx");
- }),"Recompiling ".__comma($recv(eachSide)._name()));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({eachSide:eachSide},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"recompile:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "recompileAll",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "recompileAll\x0a\x09Smalltalk classes \x0a\x09\x09do: [ :each | self recompile: each ]\x0a\x09\x09displayingProgress: 'Compiling all classes...'",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:displayingProgress:", "classes", "recompile:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv($globals.Smalltalk)._classes())._do_displayingProgress_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._recompile_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),"Compiling all classes...");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"recompileAll",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "sourceForExpression:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "sourceForExpression: aString\x0a\x09^ 'xxxDoIt ^ [ ', aString, ' ] value'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [","]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return [$recv("xxxDoIt ^ [ ".__comma(aString)).__comma(" ] value")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sourceForExpression:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "start:forClass:protocol:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aClass", "anotherString"],
- source: "start: aString forClass: aClass protocol: anotherString\x0a\x09| package |\x0a\x09package := aClass packageOfProtocol: anotherString.\x0a\x09self\x0a\x09\x09currentPackage: package;\x0a\x09\x09codeGenerator: (self codeGeneratorClass new\x0a\x09\x09\x09source: aString;\x0a\x09\x09\x09currentClass: aClass;\x0a\x09\x09\x09currentPackage: package;\x0a\x09\x09\x09yourself)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["packageOfProtocol:", "currentPackage:", "codeGenerator:", "source:", "new", "codeGeneratorClass", "currentClass:", "yourself"]
- }, function ($methodClass){ return function (aString,aClass,anotherString){
- var self=this,$self=this;
- var package_;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- package_=$recv(aClass)._packageOfProtocol_(anotherString);
- [$self._currentPackage_(package_)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["currentPackage:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $1=$recv($self._codeGeneratorClass())._new();
- $recv($1)._source_(aString);
- $recv($1)._currentClass_(aClass);
- $recv($1)._currentPackage_(package_);
- $self._codeGenerator_($recv($1)._yourself());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"start:forClass:protocol:",{aString:aString,aClass:aClass,anotherString:anotherString,package_:package_})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "transformerAt:put:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "transformerAt: aString put: anObject\x0a\x09self codeGenerator transformersDictionary at: aString put: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "transformersDictionary", "codeGenerator"]
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv($self._codeGenerator())._transformersDictionary())._at_put_(aString,anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"transformerAt:put:",{aString:aString,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "wrappedSourceOf:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRMethod"],
- source: "wrappedSourceOf: anIRMethod\x0a\x09^ anIRMethod attachments\x0a\x09\x09ifEmpty: [\x0a\x09\x09\x09'(function ($methodClass){ return ',\x0a\x09\x09\x09anIRMethod compiledSource,\x0a\x09\x09\x09'; })' ]\x0a\x09\x09ifNotEmpty: [ :attachments |\x0a\x09\x09\x09'(function ($methodClass){ return Object.defineProperty(',\x0a\x09\x09\x09anIRMethod compiledSource,\x0a\x09\x09\x09',\x22a$atx\x22,{enumerable:false,configurable:true,writable:true,value:',\x0a\x09\x09\x09attachments asJavaScriptSource,\x0a\x09\x09\x09'}); })' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifEmpty:ifNotEmpty:", "attachments", ",", "compiledSource", "asJavaScriptSource"]
- }, function ($methodClass){ return function (anIRMethod){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv(anIRMethod)._attachments())._ifEmpty_ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(["(function ($methodClass){ return ".__comma([$recv(anIRMethod)._compiledSource()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["compiledSource"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma("; })")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(attachments){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv([$recv([$recv("(function ($methodClass){ return Object.defineProperty(".__comma($recv(anIRMethod)._compiledSource())).__comma(",\x22a$atx\x22,{enumerable:false,configurable:true,writable:true,value:")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=5
- //>>excludeEnd("ctx");
- ][0]).__comma($recv(attachments)._asJavaScriptSource())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=4
- //>>excludeEnd("ctx");
- ][0]).__comma("}); })")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({attachments:attachments},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"wrappedSourceOf:",{anIRMethod:anIRMethod})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler);
- $core.addMethod(
- $core.method({
- selector: "eval:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "eval: aString\x0a\x09^ self new eval: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["eval:", "new"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._new())._eval_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler.a$cls);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09\x22TODO remove, backward compat\x22\x0a\x09Smalltalk globals at: #SmalltalkParser put: smalltalkParser",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "globals"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv($globals.Smalltalk)._globals())._at_put_("SmalltalkParser",smalltalkParser);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler.a$cls);
- $core.addMethod(
- $core.method({
- selector: "parse:",
- protocol: "parsing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "parse: aString\x0a\x09^ self new parse: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "new"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._new())._parse_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"parse:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler.a$cls);
- $core.addMethod(
- $core.method({
- selector: "pseudoVariableNames",
- protocol: "parsing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "pseudoVariableNames\x0a\x09^ PseudoVar dictionary keys asArray",
- referencedClasses: ["PseudoVar"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["asArray", "keys", "dictionary"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($recv($globals.PseudoVar)._dictionary())._keys())._asArray();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"pseudoVariableNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler.a$cls);
- $core.addMethod(
- $core.method({
- selector: "recompile:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "recompile: aClass\x0a\x09self new recompile: aClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["recompile:", "new"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._new())._recompile_(aClass);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"recompile:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler.a$cls);
- $core.addMethod(
- $core.method({
- selector: "recompileAll",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "recompileAll\x0a\x09Smalltalk classes do: [ :each |\x0a\x09\x09self recompile: each ]",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "classes", "recompile:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv($globals.Smalltalk)._classes())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._recompile_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"recompileAll",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Compiler.a$cls);
- $core.addClass("DoIt", $globals.Object, "Compiler-Core");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.DoIt.comment="`DoIt` is the class used to compile and evaluate expressions. See `Compiler >> evaluateExpression:`.";
- //>>excludeEnd("ide");
- $core.addClass("Evaluator", $globals.Object, "Compiler-Core");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.Evaluator.comment="I evaluate code against a receiver, dispatching #evaluate:on: to the receiver.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "evaluate:for:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "evaluate: aString for: anObject\x0a\x09^ anObject evaluate: aString on: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["evaluate:on:"]
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(anObject)._evaluate_on_(aString,self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"evaluate:for:",{aString:aString,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Evaluator);
- $core.addMethod(
- $core.method({
- selector: "evaluate:receiver:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "evaluate: aString receiver: anObject\x0a\x09| compiler |\x0a\x09\x0a\x09compiler := Compiler new.\x0a\x09[ compiler parseExpression: aString ] \x0a\x09\x09on: Error \x0a\x09\x09do: [ :ex | ^ Terminal alert: ex messageText ].\x0a\x0a\x09^ compiler evaluateExpression: aString on: anObject",
- referencedClasses: ["Compiler", "Error", "Terminal"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "on:do:", "parseExpression:", "alert:", "messageText", "evaluateExpression:on:"]
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- var compiler;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- compiler=$recv($globals.Compiler)._new();
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(compiler)._parseExpression_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._on_do_($globals.Error,(function(ex){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- throw $early=[$recv($globals.Terminal)._alert_($recv(ex)._messageText())];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return $recv(compiler)._evaluateExpression_on_(aString,anObject);
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"evaluate:receiver:",{aString:aString,anObject:anObject,compiler:compiler})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Evaluator);
- $core.addMethod(
- $core.method({
- selector: "evaluate:for:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "evaluate: aString for: anObject\x0a\x09^ self new evaluate: aString for: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["evaluate:for:", "new"]
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._new())._evaluate_for_(aString,anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"evaluate:for:",{aString:aString,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Evaluator.a$cls);
- $core.addClass("ParseError", $globals.Error, "Compiler-Core");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ParseError.comment="Instance of ParseError are signaled on any parsing error.\x0aSee `Compiler >> #parse:`";
- //>>excludeEnd("ide");
- $core.addTrait("TPragmator", "Compiler-Core");
- $core.addMethod(
- $core.method({
- selector: "canProcessPragma:",
- protocol: "pragma processing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMessage"],
- source: "canProcessPragma: aMessage\x0a\x09^ self class includesSelector: aMessage selector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["includesSelector:", "class", "selector"]
- }, function ($methodClass){ return function (aMessage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._class())._includesSelector_($recv(aMessage)._selector());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"canProcessPragma:",{aMessage:aMessage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TPragmator);
- $core.addMethod(
- $core.method({
- selector: "processPragma:",
- protocol: "pragma processing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMessage"],
- source: "processPragma: aMessage\x0a\x09(self canProcessPragma: aMessage) ifTrue: [\x0a\x09\x09^ aMessage sendTo: self ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "canProcessPragma:", "sendTo:"]
- }, function ($methodClass){ return function (aMessage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._canProcessPragma_(aMessage))){
- return $recv(aMessage)._sendTo_(self);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"processPragma:",{aMessage:aMessage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TPragmator);
- $core.addMethod(
- $core.method({
- selector: "processPragmas:",
- protocol: "pragma processing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "processPragmas: aCollection\x0a\x09aCollection do: [ :each | self processPragma: each ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "processPragma:"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aCollection)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._processPragma_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"processPragmas:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TPragmator);
- $core.addMethod(
- $core.method({
- selector: "eval:",
- protocol: "*Compiler-Core",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "eval: aString\x0a\x09^ self context\x0a\x09\x09ifEmpty: [ Compiler eval: aString ]\x0a\x09\x09ifNotEmpty: [ :context |\x0a\x09\x09\x09| wrapperSource |\x0a\x09\x09\x09wrapperSource :=\x0a\x09\x09\x09\x09'(function(', (',' join: context keys), '){return(', aString, ');})'.\x0a\x09\x09\x09(Compiler eval: wrapperSource)\x0a\x09\x09\x09\x09valueWithPossibleArguments: context values ]",
- referencedClasses: ["Compiler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifEmpty:ifNotEmpty:", "context", "eval:", ",", "join:", "keys", "valueWithPossibleArguments:", "values"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._context())._ifEmpty_ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv($globals.Compiler)._eval_(aString)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["eval:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(context){
- var wrapperSource;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- wrapperSource=[$recv([$recv([$recv("(function(".__comma(","._join_($recv(context)._keys()))).__comma("){return(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0]).__comma(aString)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(");})")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- return $recv($recv($globals.Compiler)._eval_(wrapperSource))._valueWithPossibleArguments_($recv(context)._values());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({context:context,wrapperSource:wrapperSource},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "asVariableName",
- protocol: "*Compiler-Core",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asVariableName\x0a\x09^ (Smalltalk reservedWords includes: self)\x0a\x09\x09ifTrue: [ self, '_' ]\x0a\x09\x09ifFalse: [ self ]",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "includes:", "reservedWords", ","]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv($globals.Smalltalk)._reservedWords())._includes_(self))){
- return $self.__comma("_");
- } else {
- return self;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asVariableName",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- });
- define('amber/core/Compiler-AST',["amber/boot", "require", "amber/core/Compiler-Core", "amber/core/Kernel-Dag", "amber/core/Kernel-Exceptions", "amber/core/Kernel-Methods", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Compiler-AST");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("ASTNode", $globals.DagParentNode, "Compiler-AST");
- $core.setSlots($globals.ASTNode, ["parent", "position", "source"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ASTNode.comment="I am the abstract root class of the abstract syntax tree.\x0a\x0aConcrete classes should implement `#accept:` to allow visiting.\x0a\x0a`position` holds a point containing line and column number of the symbol location in the original source file.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "inPosition:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint"],
- source: "inPosition: aPoint\x0a\x09^ (self positionStart <= aPoint and: [\x0a\x09\x09self positionEnd >= aPoint ])",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "<=", "positionStart", ">=", "positionEnd"]
- }, function ($methodClass){ return function (aPoint){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($self._positionStart()).__lt_eq(aPoint))){
- return $recv($self._positionEnd()).__gt_eq(aPoint);
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inPosition:",{aPoint:aPoint})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTNode);
- $core.addMethod(
- $core.method({
- selector: "isNavigationNode",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isNavigationNode\x0a\x09\x22Answer true if the node can be navigated to\x22\x0a\x09\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.ASTNode);
- $core.addMethod(
- $core.method({
- selector: "isReturnNode",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isReturnNode\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.ASTNode);
- $core.addMethod(
- $core.method({
- selector: "location:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aLocation"],
- source: "location: aLocation\x0a\x09self position: aLocation start line @ aLocation start column",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["position:", "@", "line", "start", "column"]
- }, function ($methodClass){ return function (aLocation){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._position_($recv($recv([$recv(aLocation)._start()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["start"]=1
- //>>excludeEnd("ctx");
- ][0])._line()).__at($recv($recv(aLocation)._start())._column()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"location:",{aLocation:aLocation})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTNode);
- $core.addMethod(
- $core.method({
- selector: "navigationNodeAt:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPoint", "aBlock"],
- source: "navigationNodeAt: aPoint ifAbsent: aBlock\x0a\x09\x22Answer the navigation node in the receiver's tree at aPoint \x0a\x09or nil if no navigation node was found.\x0a\x09\x0a\x09See `node >> isNaviationNode`\x22\x0a\x09\x0a\x09| children |\x0a\x09\x0a\x09children := self allDagChildren select: [ :each | \x0a\x09\x09each isNavigationNode and: [ each inPosition: aPoint ] ].\x0a\x09\x0a\x09children ifEmpty: [ ^ aBlock value ].\x0a\x09\x0a\x09^ (children asArray sort: [ :a :b | \x0a\x09\x09(a positionStart dist: aPoint) <= \x0a\x09\x09(b positionStart dist: aPoint) ]) first",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["select:", "allDagChildren", "and:", "isNavigationNode", "inPosition:", "ifEmpty:", "value", "first", "sort:", "asArray", "<=", "dist:", "positionStart"]
- }, function ($methodClass){ return function (aPoint,aBlock){
- var self=this,$self=this;
- var children;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- children=$recv($self._allDagChildren())._select_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(each)._isNavigationNode())){
- return $recv(each)._inPosition_(aPoint);
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv(children)._ifEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- throw $early=[$recv(aBlock)._value()];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return $recv($recv($recv(children)._asArray())._sort_((function(a,b){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv([$recv([$recv(a)._positionStart()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["positionStart"]=1
- //>>excludeEnd("ctx");
- ][0])._dist_(aPoint)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["dist:"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt_eq($recv($recv(b)._positionStart())._dist_(aPoint));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,4)});
- //>>excludeEnd("ctx");
- })))._first();
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"navigationNodeAt:ifAbsent:",{aPoint:aPoint,aBlock:aBlock,children:children})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTNode);
- $core.addMethod(
- $core.method({
- selector: "parent",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "parent\x0a\x09^ parent",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.parent;
- }; }),
- $globals.ASTNode);
- $core.addMethod(
- $core.method({
- selector: "parent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "parent: aNode\x0a\x09parent := aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- $self.parent=aNode;
- return self;
- }; }),
- $globals.ASTNode);
- $core.addMethod(
- $core.method({
- selector: "position",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "ifNotNil:", "parent", "position"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=$self.position;
- if($1 == null || $1.a$nil){
- $2=$self._parent();
- if($2 == null || $2.a$nil){
- return $2;
- } else {
- var node;
- node=$2;
- return $recv(node)._position();
- }
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"position",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTNode);
- $core.addMethod(
- $core.method({
- selector: "position:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPosition"],
- source: "position: aPosition\x0a\x09position := aPosition",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aPosition){
- var self=this,$self=this;
- $self.position=aPosition;
- return self;
- }; }),
- $globals.ASTNode);
- $core.addMethod(
- $core.method({
- selector: "positionEnd",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "positionEnd\x0a\x09^ self positionStart + ((self source lines size - 1) @ (self source lines last size - 1))",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["+", "positionStart", "@", "-", "size", "lines", "source", "last"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._positionStart()).__plus($recv([$recv([$recv([$recv([$self._source()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["source"]=1
- //>>excludeEnd("ctx");
- ][0])._lines()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lines"]=1
- //>>excludeEnd("ctx");
- ][0])._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=1
- //>>excludeEnd("ctx");
- ][0]).__minus((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["-"]=1
- //>>excludeEnd("ctx");
- ][0]).__at($recv($recv($recv($recv($self._source())._lines())._last())._size()).__minus((1))));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"positionEnd",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTNode);
- $core.addMethod(
- $core.method({
- selector: "positionStart",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "positionStart\x0a\x09^ self position",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["position"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._position();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"positionStart",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTNode);
- $core.addMethod(
- $core.method({
- selector: "size",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "size\x0a\x09^ self source size",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["size", "source"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._source())._size();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"size",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTNode);
- $core.addMethod(
- $core.method({
- selector: "source",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "source\x0a\x09^ source ifNil: [ '' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.source;
- if($1 == null || $1.a$nil){
- return "";
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"source",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTNode);
- $core.addMethod(
- $core.method({
- selector: "source:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "source: aString\x0a\x09source := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.source=aString;
- return self;
- }; }),
- $globals.ASTNode);
- $core.addClass("ExpressionNode", $globals.ASTNode, "Compiler-AST");
- $core.setSlots($globals.ExpressionNode, ["shouldBeAliased"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ExpressionNode.comment="I am the abstract root class for expression nodes.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "isIdempotent",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isIdempotent\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.ExpressionNode);
- $core.addMethod(
- $core.method({
- selector: "isImmutable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isImmutable\x0a\x09self deprecatedAPI: 'Use #isIdempotent instead.'.\x0a\x09^ self isIdempotent",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deprecatedAPI:", "isIdempotent"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deprecatedAPI_("Use #isIdempotent instead.");
- return $self._isIdempotent();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isImmutable",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ExpressionNode);
- $core.addMethod(
- $core.method({
- selector: "isSuper",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSuper\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.ExpressionNode);
- $core.addMethod(
- $core.method({
- selector: "shouldBeAliased",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "shouldBeAliased\x0a\x09^ shouldBeAliased ifNil: [ false ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.shouldBeAliased;
- if($1 == null || $1.a$nil){
- return false;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shouldBeAliased",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ExpressionNode);
- $core.addMethod(
- $core.method({
- selector: "shouldBeAliased:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBoolean"],
- source: "shouldBeAliased: aBoolean\x0a\x09shouldBeAliased := aBoolean",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aBoolean){
- var self=this,$self=this;
- $self.shouldBeAliased=aBoolean;
- return self;
- }; }),
- $globals.ExpressionNode);
- $core.addMethod(
- $core.method({
- selector: "withTail:",
- protocol: "building",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "withTail: aCollection\x0a\x09^ aCollection inject: self into: [\x0a\x09\x09:receiver :send | SendNode new\x0a\x09\x09\x09position: send position;\x0a\x09\x09\x09source: send source;\x0a\x09\x09\x09receiver: receiver;\x0a\x09\x09\x09selector: send selector;\x0a\x09\x09\x09arguments: send arguments;\x0a\x09\x09\x09yourself ]",
- referencedClasses: ["SendNode"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["inject:into:", "position:", "new", "position", "source:", "source", "receiver:", "selector:", "selector", "arguments:", "arguments", "yourself"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- return $recv(aCollection)._inject_into_(self,(function(receiver,send){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $1=$recv($globals.SendNode)._new();
- $recv($1)._position_($recv(send)._position());
- $recv($1)._source_($recv(send)._source());
- $recv($1)._receiver_(receiver);
- $recv($1)._selector_($recv(send)._selector());
- $recv($1)._arguments_($recv(send)._arguments());
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({receiver:receiver,send:send},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"withTail:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ExpressionNode);
- $core.addClass("AssignmentNode", $globals.ExpressionNode, "Compiler-AST");
- $core.setSlots($globals.AssignmentNode, ["left", "right"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.AssignmentNode.comment="I represent an assignment node.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitAssignmentNode: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitAssignmentNode:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitAssignmentNode_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssignmentNode);
- $core.addMethod(
- $core.method({
- selector: "dagChildren",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "dagChildren\x0a\x09^ { self left. self right }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["left", "right"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return [$self._left(),$self._right()];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dagChildren",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssignmentNode);
- $core.addMethod(
- $core.method({
- selector: "left",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "left\x0a\x09^ left",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.left;
- }; }),
- $globals.AssignmentNode);
- $core.addMethod(
- $core.method({
- selector: "left:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "left: aNode\x0a\x09left := aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- $self.left=aNode;
- return self;
- }; }),
- $globals.AssignmentNode);
- $core.addMethod(
- $core.method({
- selector: "right",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "right\x0a\x09^ right",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.right;
- }; }),
- $globals.AssignmentNode);
- $core.addMethod(
- $core.method({
- selector: "right:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "right: aNode\x0a\x09right := aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- $self.right=aNode;
- return self;
- }; }),
- $globals.AssignmentNode);
- $core.addClass("BlockNode", $globals.ExpressionNode, "Compiler-AST");
- $core.setSlots($globals.BlockNode, ["parameters", "scope", "sequenceNode"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.BlockNode.comment="I represent an block closure node.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitBlockNode: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitBlockNode:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitBlockNode_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockNode);
- $core.addMethod(
- $core.method({
- selector: "dagChild",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "dagChild\x0a\x09^ self sequenceNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["sequenceNode"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._sequenceNode();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dagChild",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockNode);
- $core.addMethod(
- $core.method({
- selector: "parameters",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "parameters\x0a\x09^ parameters ifNil: [ parameters := Array new ]",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.parameters;
- if($1 == null || $1.a$nil){
- $self.parameters=$recv($globals.Array)._new();
- return $self.parameters;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"parameters",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockNode);
- $core.addMethod(
- $core.method({
- selector: "parameters:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "parameters: aCollection\x0a\x09parameters := aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- $self.parameters=aCollection;
- return self;
- }; }),
- $globals.BlockNode);
- $core.addMethod(
- $core.method({
- selector: "scope",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "scope\x0a\x09^ scope",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.scope;
- }; }),
- $globals.BlockNode);
- $core.addMethod(
- $core.method({
- selector: "scope:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aLexicalScope"],
- source: "scope: aLexicalScope\x0a\x09scope := aLexicalScope",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aLexicalScope){
- var self=this,$self=this;
- $self.scope=aLexicalScope;
- return self;
- }; }),
- $globals.BlockNode);
- $core.addMethod(
- $core.method({
- selector: "sequenceNode",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sequenceNode\x0a\x09^ sequenceNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.sequenceNode;
- }; }),
- $globals.BlockNode);
- $core.addMethod(
- $core.method({
- selector: "sequenceNode:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "sequenceNode: anObject\x0a\x09sequenceNode := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.sequenceNode=anObject;
- return self;
- }; }),
- $globals.BlockNode);
- $core.addClass("CascadeNode", $globals.ExpressionNode, "Compiler-AST");
- $core.setSlots($globals.CascadeNode, ["receiver"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.CascadeNode.comment="I represent an cascade node.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitCascadeNode: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitCascadeNode:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitCascadeNode_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CascadeNode);
- $core.addMethod(
- $core.method({
- selector: "receiver",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "receiver\x0a\x09^ receiver",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.receiver;
- }; }),
- $globals.CascadeNode);
- $core.addMethod(
- $core.method({
- selector: "receiver:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "receiver: aNode\x0a\x09receiver := aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- $self.receiver=aNode;
- return self;
- }; }),
- $globals.CascadeNode);
- $core.addClass("DynamicArrayNode", $globals.ExpressionNode, "Compiler-AST");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.DynamicArrayNode.comment="I represent an dynamic array node.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitDynamicArrayNode: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDynamicArrayNode:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitDynamicArrayNode_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DynamicArrayNode);
- $core.addClass("DynamicDictionaryNode", $globals.ExpressionNode, "Compiler-AST");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.DynamicDictionaryNode.comment="I represent an dynamic dictionary node.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitDynamicDictionaryNode: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDynamicDictionaryNode:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitDynamicDictionaryNode_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DynamicDictionaryNode);
- $core.addClass("SendNode", $globals.ExpressionNode, "Compiler-AST");
- $core.setSlots($globals.SendNode, ["selector", "arguments", "receiver", "index", "javaScriptSelector", "argumentSwitcher", "isSideEffect"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.SendNode.comment="I represent an message send node.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitSendNode: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitSendNode:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitSendNode_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "argumentSwitcher",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "argumentSwitcher\x0a\x09^ argumentSwitcher",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.argumentSwitcher;
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "argumentSwitcher:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aJSFunction"],
- source: "argumentSwitcher: aJSFunction\x0a\x09argumentSwitcher := aJSFunction",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aJSFunction){
- var self=this,$self=this;
- $self.argumentSwitcher=aJSFunction;
- return self;
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "arguments",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "arguments\x0a\x09^ arguments ifNil: [ arguments := #() ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.arguments;
- if($1 == null || $1.a$nil){
- $self.arguments=[];
- return $self.arguments;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"arguments",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "arguments:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "arguments: aCollection\x0a\x09arguments := aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- $self.arguments=aCollection;
- return self;
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "beSideEffect",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "beSideEffect\x0a\x09isSideEffect := true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- $self.isSideEffect=true;
- return self;
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "dagChildren",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "dagChildren\x0a\x09self receiver ifNil: [ ^ self arguments copy ].\x0a\x09\x0a\x09^ self arguments copyWithFirst: self receiver",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "receiver", "copy", "arguments", "copyWithFirst:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[$self._receiver()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["receiver"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- return $recv([$self._arguments()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["arguments"]=1
- //>>excludeEnd("ctx");
- ][0])._copy();
- } else {
- $1;
- }
- return $recv($self._arguments())._copyWithFirst_($self._receiver());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dagChildren",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "index",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "index\x0a\x09^ index",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.index;
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "index:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- source: "index: anInteger\x0a\x09index := anInteger",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- $self.index=anInteger;
- return self;
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "isNavigationNode",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isNavigationNode\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "isSideEffect",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSideEffect\x0a\x09^ isSideEffect ifNil: [ false ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.isSideEffect;
- if($1 == null || $1.a$nil){
- return false;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isSideEffect",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "javaScriptSelector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "javaScriptSelector\x0a\x09^ javaScriptSelector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.javaScriptSelector;
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "javaScriptSelector:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "javaScriptSelector: aString\x0a\x09javaScriptSelector := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.javaScriptSelector=aString;
- return self;
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "navigationLink",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "navigationLink\x0a\x09^ self selector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["selector"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._selector();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"navigationLink",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "receiver",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "receiver\x0a\x09^ receiver",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.receiver;
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "receiver:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "receiver: aNode\x0a\x09receiver := aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- $self.receiver=aNode;
- return self;
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "selector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "selector\x0a\x09^ selector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.selector;
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "selector:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "selector: aString\x0a\x09selector := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.selector=aString;
- return self;
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "superSend",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "superSend\x0a\x09^ self receiver ifNil: [ false ] ifNotNil: [ :recv | recv isSuper ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:ifNotNil:", "receiver", "isSuper"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._receiver();
- if($1 == null || $1.a$nil){
- return false;
- } else {
- var recv;
- recv=$1;
- return $recv(recv)._isSuper();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"superSend",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SendNode);
- $core.addClass("ValueNode", $globals.ExpressionNode, "Compiler-AST");
- $core.setSlots($globals.ValueNode, ["value"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ValueNode.comment="I represent a value node.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitValueNode: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitValueNode:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitValueNode_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ValueNode);
- $core.addMethod(
- $core.method({
- selector: "isIdempotent",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isIdempotent\x0a\x09^ self value isImmutable",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["isImmutable", "value"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._value())._isImmutable();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isIdempotent",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ValueNode);
- $core.addMethod(
- $core.method({
- selector: "value",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "value\x0a\x09^ value",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.value;
- }; }),
- $globals.ValueNode);
- $core.addMethod(
- $core.method({
- selector: "value:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "value: anObject\x0a\x09value := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.value=anObject;
- return self;
- }; }),
- $globals.ValueNode);
- $core.addClass("VariableNode", $globals.ExpressionNode, "Compiler-AST");
- $core.setSlots($globals.VariableNode, ["identifier", "assigned", "binding"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.VariableNode.comment="I represent an variable node.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitVariableNode: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitVariableNode:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitVariableNode_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.VariableNode);
- $core.addMethod(
- $core.method({
- selector: "alias",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "alias\x0a\x09^ self binding alias",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["alias", "binding"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._binding())._alias();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"alias",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.VariableNode);
- $core.addMethod(
- $core.method({
- selector: "assigned",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "assigned\x0a\x09^ assigned ifNil: [ false ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.assigned;
- if($1 == null || $1.a$nil){
- return false;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"assigned",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.VariableNode);
- $core.addMethod(
- $core.method({
- selector: "assigned:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBoolean"],
- source: "assigned: aBoolean\x0a\x09assigned := aBoolean",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aBoolean){
- var self=this,$self=this;
- $self.assigned=aBoolean;
- return self;
- }; }),
- $globals.VariableNode);
- $core.addMethod(
- $core.method({
- selector: "binding",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "binding\x0a\x09^ binding",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.binding;
- }; }),
- $globals.VariableNode);
- $core.addMethod(
- $core.method({
- selector: "binding:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aScopeVar"],
- source: "binding: aScopeVar\x0a\x09binding := aScopeVar",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aScopeVar){
- var self=this,$self=this;
- $self.binding=aScopeVar;
- return self;
- }; }),
- $globals.VariableNode);
- $core.addMethod(
- $core.method({
- selector: "identifier",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "identifier\x0a\x09^ identifier",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.identifier;
- }; }),
- $globals.VariableNode);
- $core.addMethod(
- $core.method({
- selector: "identifier:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "identifier: anObject\x0a\x09identifier := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.identifier=anObject;
- return self;
- }; }),
- $globals.VariableNode);
- $core.addMethod(
- $core.method({
- selector: "isAssignable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isAssignable\x0a\x09^ self binding isAssignable",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["isAssignable", "binding"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._binding())._isAssignable();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isAssignable",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.VariableNode);
- $core.addMethod(
- $core.method({
- selector: "isIdempotent",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isIdempotent\x0a\x09^ self binding isIdempotent",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["isIdempotent", "binding"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._binding())._isIdempotent();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isIdempotent",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.VariableNode);
- $core.addMethod(
- $core.method({
- selector: "isImmutable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isImmutable\x0a\x09self deprecatedAPI: 'Use #isIdempotent / #isAssignable not instead.'.\x0a\x09^ self isIdempotent \x22to be consistent with super\x22",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deprecatedAPI:", "isIdempotent"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deprecatedAPI_("Use #isIdempotent / #isAssignable not instead.");
- return $self._isIdempotent();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isImmutable",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.VariableNode);
- $core.addMethod(
- $core.method({
- selector: "isNavigationNode",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isNavigationNode\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.VariableNode);
- $core.addMethod(
- $core.method({
- selector: "isSuper",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSuper\x0a\x09^ self binding isSuper",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["isSuper", "binding"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._binding())._isSuper();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isSuper",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.VariableNode);
- $core.addMethod(
- $core.method({
- selector: "navigationLink",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "navigationLink\x0a\x09^ self identifier",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["identifier"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._identifier();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"navigationLink",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.VariableNode);
- $core.addMethod(
- $core.method({
- selector: "value",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "value\x0a\x09self deprecatedAPI: 'Use #identifier instead.'.\x0a\x09^ self identifier",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deprecatedAPI:", "identifier"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deprecatedAPI_("Use #identifier instead.");
- return $self._identifier();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.VariableNode);
- $core.addMethod(
- $core.method({
- selector: "value:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "value: anObject\x0a\x09self deprecatedAPI: 'Use #identifier: instead.'.\x0a\x09self identifier: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deprecatedAPI:", "identifier:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deprecatedAPI_("Use #identifier: instead.");
- $self._identifier_(anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.VariableNode);
- $core.addClass("JSStatementNode", $globals.ASTNode, "Compiler-AST");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.JSStatementNode.comment="I represent an JavaScript statement node.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitJSStatementNode: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitJSStatementNode:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitJSStatementNode_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStatementNode);
- $core.addClass("MethodNode", $globals.ASTNode, "Compiler-AST");
- $core.setSlots($globals.MethodNode, ["selector", "arguments", "pragmas", "scope", "classReferences", "sendIndexes", "sequenceNode"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.MethodNode.comment="I represent an method node.\x0a\x0aA method node must be the root and only method node of a valid AST.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitMethodNode: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitMethodNode:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitMethodNode_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "arguments",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "arguments\x0a\x09^ arguments ifNil: [ #() ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.arguments;
- if($1 == null || $1.a$nil){
- return [];
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"arguments",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "arguments:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "arguments: aCollection\x0a\x09arguments := aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- $self.arguments=aCollection;
- return self;
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "classReferences",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classReferences\x0a\x09^ classReferences",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.classReferences;
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "classReferences:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "classReferences: aCollection\x0a\x09classReferences := aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- $self.classReferences=aCollection;
- return self;
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "dagChild",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "dagChild\x0a\x09^ self sequenceNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["sequenceNode"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._sequenceNode();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dagChild",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "messageSends",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "messageSends\x0a\x09^ self sendIndexes keys",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["keys", "sendIndexes"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._sendIndexes())._keys();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"messageSends",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "method",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "method\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "pragmas",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "pragmas\x0a\x09^ pragmas ifNil: [ #() ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.pragmas;
- if($1 == null || $1.a$nil){
- return [];
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"pragmas",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "pragmas:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "pragmas: aCollection\x0a\x09pragmas := aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- $self.pragmas=aCollection;
- return self;
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "scope",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "scope\x0a\x09^ scope",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.scope;
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "scope:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethodScope"],
- source: "scope: aMethodScope\x0a\x09scope := aMethodScope",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aMethodScope){
- var self=this,$self=this;
- $self.scope=aMethodScope;
- return self;
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "selector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "selector\x0a\x09^ selector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.selector;
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "selector:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "selector: aString\x0a\x09selector := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.selector=aString;
- return self;
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "sendIndexes",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sendIndexes\x0a\x09^ sendIndexes",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.sendIndexes;
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "sendIndexes:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDictionary"],
- source: "sendIndexes: aDictionary\x0a\x09sendIndexes := aDictionary",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aDictionary){
- var self=this,$self=this;
- $self.sendIndexes=aDictionary;
- return self;
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "sequenceNode",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sequenceNode\x0a\x09^ sequenceNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.sequenceNode;
- }; }),
- $globals.MethodNode);
- $core.addMethod(
- $core.method({
- selector: "sequenceNode:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aSequenceNode"],
- source: "sequenceNode: aSequenceNode\x0a\x09sequenceNode := aSequenceNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aSequenceNode){
- var self=this,$self=this;
- $self.sequenceNode=aSequenceNode;
- return self;
- }; }),
- $globals.MethodNode);
- $core.addClass("ReturnNode", $globals.ASTNode, "Compiler-AST");
- $core.setSlots($globals.ReturnNode, ["scope", "expression"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ReturnNode.comment="I represent an return node. At the AST level, there is not difference between a local return or non-local return.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitReturnNode: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitReturnNode:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitReturnNode_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ReturnNode);
- $core.addMethod(
- $core.method({
- selector: "dagChild",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "dagChild\x0a\x09^ self expression",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["expression"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._expression();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dagChild",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ReturnNode);
- $core.addMethod(
- $core.method({
- selector: "expression",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "expression\x0a\x09^ expression ifNil: [ nodes first ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "first"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.expression;
- if($1 == null || $1.a$nil){
- return $recv($self.nodes)._first();
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"expression",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ReturnNode);
- $core.addMethod(
- $core.method({
- selector: "expression:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "expression: anObject\x0a\x09expression := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.expression=anObject;
- return self;
- }; }),
- $globals.ReturnNode);
- $core.addMethod(
- $core.method({
- selector: "isReturnNode",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isReturnNode\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.ReturnNode);
- $core.addMethod(
- $core.method({
- selector: "nonLocalReturn",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "nonLocalReturn\x0a\x09^ self scope isMethodScope not",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["not", "isMethodScope", "scope"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($self._scope())._isMethodScope())._not();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nonLocalReturn",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ReturnNode);
- $core.addMethod(
- $core.method({
- selector: "scope",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "scope\x0a\x09^ scope",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.scope;
- }; }),
- $globals.ReturnNode);
- $core.addMethod(
- $core.method({
- selector: "scope:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aLexicalScope"],
- source: "scope: aLexicalScope\x0a\x09scope := aLexicalScope",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aLexicalScope){
- var self=this,$self=this;
- $self.scope=aLexicalScope;
- return self;
- }; }),
- $globals.ReturnNode);
- $core.addClass("SequenceNode", $globals.ASTNode, "Compiler-AST");
- $core.setSlots($globals.SequenceNode, ["temps"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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).";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitSequenceNode: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitSequenceNode:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitSequenceNode_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceNode);
- $core.addMethod(
- $core.method({
- selector: "temps",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "temps\x0a\x09^ temps ifNil: [ #() ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.temps;
- if($1 == null || $1.a$nil){
- return [];
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"temps",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceNode);
- $core.addMethod(
- $core.method({
- selector: "temps:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "temps: aCollection\x0a\x09temps := aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- $self.temps=aCollection;
- return self;
- }; }),
- $globals.SequenceNode);
- $core.addClass("BlockSequenceNode", $globals.SequenceNode, "Compiler-AST");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.BlockSequenceNode.comment="I represent an special sequence node for block scopes.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitBlockSequenceNode: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitBlockSequenceNode:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitBlockSequenceNode_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockSequenceNode);
- $core.addClass("AstPragmator", $globals.Object, "Compiler-AST");
- $core.setSlots($globals.AstPragmator, ["methodNode"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.AstPragmator.comment="I am abstract superclass for pragma-processing transformer.\x0a\x0aMy subclasses should implement messages for each pragma\x0athey process. Pragma processing checks if a message is known\x0ato a class but not to its superclass. IOW, each and only those\x0apragmas are processed which are defined as methods in the subclass.\x0a\x0aThese messages can access sequence node in which\x0aa pragma occurred and its containing method node\x0aas `self sequenceNode` and `self methodNode`.\x0a\x0aSee `EarlyPragmator` for an example.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "methodNode",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "methodNode\x0a\x09^ methodNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.methodNode;
- }; }),
- $globals.AstPragmator);
- $core.addMethod(
- $core.method({
- selector: "methodNode:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "methodNode: anObject\x0a\x09methodNode := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.methodNode=anObject;
- return self;
- }; }),
- $globals.AstPragmator);
- $core.addMethod(
- $core.method({
- selector: "value:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethodNode"],
- source: "value: aMethodNode\x0a\x09self methodNode: aMethodNode.\x0a\x09self processPragmas: aMethodNode pragmas.\x0a\x09^ aMethodNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["methodNode:", "processPragmas:", "pragmas"]
- }, function ($methodClass){ return function (aMethodNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._methodNode_(aMethodNode);
- $self._processPragmas_($recv(aMethodNode)._pragmas());
- return aMethodNode;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:",{aMethodNode:aMethodNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AstPragmator);
- $core.addClass("AstSemanticPragmator", $globals.AstPragmator, "Compiler-AST");
- $core.addMethod(
- $core.method({
- selector: "inlineJS:",
- protocol: "pragmas",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "inlineJS: aString\x0a\x09self methodNode sequenceNode dagChildren ifNotEmpty: [\x0a\x09\x09CompilerError signal: 'There must be no other code or code generator pragma than a lone inlineJS:' ].\x0a\x09self methodNode sequenceNode addDagChild: (\x0a\x09\x09JSStatementNode new\x0a\x09\x09\x09source: aString;\x0a\x09\x09\x09yourself)",
- referencedClasses: ["CompilerError", "JSStatementNode"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotEmpty:", "dagChildren", "sequenceNode", "methodNode", "signal:", "addDagChild:", "source:", "new", "yourself"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $recv($recv([$recv([$self._methodNode()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["methodNode"]=1
- //>>excludeEnd("ctx");
- ][0])._sequenceNode()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sequenceNode"]=1
- //>>excludeEnd("ctx");
- ][0])._dagChildren())._ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.CompilerError)._signal_("There must be no other code or code generator pragma than a lone inlineJS:");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $1=$recv($self._methodNode())._sequenceNode();
- $2=$recv($globals.JSStatementNode)._new();
- $recv($2)._source_(aString);
- $recv($1)._addDagChild_($recv($2)._yourself());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inlineJS:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AstSemanticPragmator);
- $core.addClass("CompilerError", $globals.Error, "Compiler-AST");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.CompilerError.comment="I am the common superclass of all compiling errors.";
- //>>excludeEnd("ide");
- $core.addClass("ParentFakingPathDagVisitor", $globals.PathDagVisitor, "Compiler-AST");
- $core.setSlots($globals.ParentFakingPathDagVisitor, ["setParentSelector"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ParentFakingPathDagVisitor.comment="I am base class of `DagNode` visitor.\x0a\x0aI hold the path of ancestors up to actual node\x0ain `self path`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "visit:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visit: aNode\x0a\x09self path ifNotEmpty: [ :p | aNode parent: p last ].\x0a\x09^ super visit: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotEmpty:", "path", "parent:", "last", "visit:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._path())._ifNotEmpty_((function(p){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aNode)._parent_($recv(p)._last());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({p:p},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visit_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ParentFakingPathDagVisitor);
- $core.addClass("NodeVisitor", $globals.ParentFakingPathDagVisitor, "Compiler-AST");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.NodeVisitor.comment="I am the abstract super class of all AST node visitors.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "visitAssignmentNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitAssignmentNode: aNode\x0a\x09^ self visitDagNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(aNode);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitBlockNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitBlockNode: aNode\x0a\x09^ self visitDagNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(aNode);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitBlockSequenceNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitBlockSequenceNode: aNode\x0a\x09^ self visitSequenceNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitSequenceNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitSequenceNode_(aNode);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitCascadeNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitCascadeNode: aNode\x0a\x09^ self visitDagNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(aNode);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitDagNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitDagNode: aNode\x0a\x09^ self visitDagNodeVariantSimple: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNodeVariantSimple:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNodeVariantSimple_(aNode);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitDagNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitDynamicArrayNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitDynamicArrayNode: aNode\x0a\x09^ self visitDagNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(aNode);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitDynamicDictionaryNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitDynamicDictionaryNode: aNode\x0a\x09^ self visitDagNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(aNode);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitJSStatementNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitJSStatementNode: aNode\x0a\x09^ self visitDagNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(aNode);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitMethodNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitMethodNode: aNode\x0a\x09^ self visitDagNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(aNode);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitReturnNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitReturnNode: aNode\x0a\x09^ self visitDagNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(aNode);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitSendNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitSendNode: aNode\x0a\x09^ self visitDagNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(aNode);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitSequenceNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitSequenceNode: aNode\x0a\x09^ self visitDagNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(aNode);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitValueNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitValueNode: aNode\x0a\x09^ self visitDagNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(aNode);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitVariableNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitVariableNode: aNode\x0a\x09^ self visitDagNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(aNode);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodeVisitor);
- $core.setTraitComposition([{trait: $globals.TDerivedDagChildren}], $globals.AssignmentNode);
- $core.setTraitComposition([{trait: $globals.TSingleDagChild}], $globals.BlockNode);
- $core.setTraitComposition([{trait: $globals.TDerivedDagChildren}], $globals.SendNode);
- $core.setTraitComposition([{trait: $globals.TDagSink}], $globals.ValueNode);
- $core.setTraitComposition([{trait: $globals.TDagSink}], $globals.VariableNode);
- $core.setTraitComposition([{trait: $globals.TDagSink}], $globals.JSStatementNode);
- $core.setTraitComposition([{trait: $globals.TSingleDagChild}], $globals.MethodNode);
- $core.setTraitComposition([{trait: $globals.TSingleDagChild}], $globals.ReturnNode);
- $core.setTraitComposition([{trait: $globals.TPragmator}], $globals.AstPragmator);
- $core.addMethod(
- $core.method({
- selector: "ast",
- protocol: "*Compiler-AST",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "ast\x0a\x09self source ifEmpty: [ CompilerError signal: 'Method source is empty' ].\x0a\x09\x0a\x09^ Compiler new\x0a\x09\x09ast: self source\x0a\x09\x09forClass: self origin\x0a\x09\x09protocol: self protocol",
- referencedClasses: ["CompilerError", "Compiler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifEmpty:", "source", "signal:", "ast:forClass:protocol:", "new", "origin", "protocol"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv([$self._source()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["source"]=1
- //>>excludeEnd("ctx");
- ][0])._ifEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.CompilerError)._signal_("Method source is empty");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return $recv($recv($globals.Compiler)._new())._ast_forClass_protocol_($self._source(),$self._origin(),$self._protocol());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ast",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CompiledMethod);
- });
- define('amber/core/Compiler-Semantic',["amber/boot", "require", "amber/core/Compiler-AST", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Compiler-Semantic");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("JSSuperSendVisitor", $globals.NodeVisitor, "Compiler-Semantic");
- $core.setSlots($globals.JSSuperSendVisitor, ["selector", "arguments", "property", "args"]);
- $core.addMethod(
- $core.method({
- selector: "args",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "args\x0a\x09^ args",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.args;
- }; }),
- $globals.JSSuperSendVisitor);
- $core.addMethod(
- $core.method({
- selector: "args:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "args: aCollection\x0a\x09args := aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- $self.args=aCollection;
- return self;
- }; }),
- $globals.JSSuperSendVisitor);
- $core.addMethod(
- $core.method({
- selector: "arguments",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "arguments\x0a\x09^ arguments",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.arguments;
- }; }),
- $globals.JSSuperSendVisitor);
- $core.addMethod(
- $core.method({
- selector: "arguments:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "arguments: aCollection\x0a\x09arguments := aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- $self.arguments=aCollection;
- return self;
- }; }),
- $globals.JSSuperSendVisitor);
- $core.addMethod(
- $core.method({
- selector: "property",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "property\x0a\x09^ property",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.property;
- }; }),
- $globals.JSSuperSendVisitor);
- $core.addMethod(
- $core.method({
- selector: "property:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "property: anObject\x0a\x09property := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.property=anObject;
- return self;
- }; }),
- $globals.JSSuperSendVisitor);
- $core.addMethod(
- $core.method({
- selector: "selector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "selector\x0a\x09^ selector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.selector;
- }; }),
- $globals.JSSuperSendVisitor);
- $core.addMethod(
- $core.method({
- selector: "selector:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "selector: anObject\x0a\x09selector := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.selector=anObject;
- return self;
- }; }),
- $globals.JSSuperSendVisitor);
- $core.addMethod(
- $core.method({
- selector: "switcherFrom:to:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection", "anotherCollection"],
- source: "switcherFrom: aCollection to: anotherCollection\x0a\x09^ NativeFunction\x0a\x09\x09constructorNamed: #Function\x0a\x09\x09value: (',' join: aCollection)\x0a\x09\x09value: 'return [', (',' join: anotherCollection), ']'",
- referencedClasses: ["NativeFunction"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["constructorNamed:value:value:", "join:", ","]
- }, function ($methodClass){ return function (aCollection,anotherCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.NativeFunction)._constructorNamed_value_value_("Function",[","._join_(aCollection)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["join:"]=1
- //>>excludeEnd("ctx");
- ][0],[$recv("return [".__comma(","._join_(anotherCollection))).__comma("]")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"switcherFrom:to:",{aCollection:aCollection,anotherCollection:anotherCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSSuperSendVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitMethodNode:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitMethodNode: aNode\x0a\x09self selector: aNode selector.\x0a\x09self arguments: aNode arguments.\x0a\x09^ super visitMethodNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["selector:", "selector", "arguments:", "arguments", "visitMethodNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._selector_($recv(aNode)._selector());
- $self._arguments_($recv(aNode)._arguments());
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitMethodNode_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSSuperSendVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitSendNode:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitSendNode: aNode\x0a\x09| receiver |\x0a\x09receiver := aNode receiver.\x0a\x09receiver isSuper ifTrue: [\x0a\x09\x09aNode selector = self selector ifTrue: [\x0a\x09\x09\x09| old |\x0a\x09\x09\x09old := receiver binding.\x0a\x09\x09\x09receiver binding: (\x0a\x09\x09\x09\x09JavaScriptSuperVar new\x0a\x09\x09\x09\x09\x09scope: old scope;\x0a\x09\x09\x09\x09\x09name: old name;\x0a\x09\x09\x09\x09\x09yourself ).\x0a\x09\x09\x09self args ifNotNil: [ :myArgs |\x0a\x09\x09\x09\x09myArgs = self arguments ifFalse: [\x0a\x09\x09\x09\x09\x09aNode argumentSwitcher:\x0a\x09\x09\x09\x09\x09\x09(self switcherFrom: self arguments to: myArgs) ] ].\x0a\x09\x09\x09aNode javaScriptSelector: self property ] ].\x0a\x09^ super visitSendNode: aNode",
- referencedClasses: ["JavaScriptSuperVar"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["receiver", "ifTrue:", "isSuper", "=", "selector", "binding", "binding:", "scope:", "new", "scope", "name:", "name", "yourself", "ifNotNil:", "args", "ifFalse:", "arguments", "argumentSwitcher:", "switcherFrom:to:", "javaScriptSelector:", "property", "visitSendNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var receiver;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3;
- receiver=$recv(aNode)._receiver();
- if($core.assert($recv(receiver)._isSuper())){
- if($core.assert([$recv([$recv(aNode)._selector()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["selector"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($self._selector())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])){
- var old;
- old=$recv(receiver)._binding();
- $1=receiver;
- $2=$recv($globals.JavaScriptSuperVar)._new();
- $recv($2)._scope_($recv(old)._scope());
- $recv($2)._name_($recv(old)._name());
- $recv($1)._binding_($recv($2)._yourself());
- $3=$self._args();
- if($3 == null || $3.a$nil){
- $3;
- } else {
- var myArgs;
- myArgs=$3;
- if(!$core.assert($recv(myArgs).__eq([$self._arguments()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["arguments"]=1
- //>>excludeEnd("ctx");
- ][0]))){
- $recv(aNode)._argumentSwitcher_($self._switcherFrom_to_($self._arguments(),myArgs));
- }
- }
- $recv(aNode)._javaScriptSelector_($self._property());
- }
- }
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitSendNode_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode,receiver:receiver})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSSuperSendVisitor);
- $core.addClass("LexicalScope", $globals.Object, "Compiler-Semantic");
- $core.setSlots($globals.LexicalScope, ["node", "instruction", "temps", "args", "outerScope", "blockIndex"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "addArg:",
- protocol: "adding",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "addArg: aString\x0a\x09self args at: aString put: (ArgVar on: aString).\x0a\x09(self args at: aString) scope: self",
- referencedClasses: ["ArgVar"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "args", "on:", "scope:", "at:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv([$self._args()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["args"]=1
- //>>excludeEnd("ctx");
- ][0])._at_put_(aString,$recv($globals.ArgVar)._on_(aString));
- $recv($recv($self._args())._at_(aString))._scope_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addArg:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "addTemp:",
- protocol: "adding",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "addTemp: aString\x0a\x09self temps at: aString put: (TempVar on: aString).\x0a\x09(self temps at: aString) scope: self",
- referencedClasses: ["TempVar"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "temps", "on:", "scope:", "at:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv([$self._temps()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["temps"]=1
- //>>excludeEnd("ctx");
- ][0])._at_put_(aString,$recv($globals.TempVar)._on_(aString));
- $recv($recv($self._temps())._at_(aString))._scope_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addTemp:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "alias",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "alias\x0a\x09^ '$ctx', self scopeLevel asString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "asString", "scopeLevel"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return "$ctx".__comma($recv($self._scopeLevel())._asString());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"alias",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "allVariableNames",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "allVariableNames\x0a\x09^ self args keys, self temps keys",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "keys", "args", "temps"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv([$recv($self._args())._keys()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["keys"]=1
- //>>excludeEnd("ctx");
- ][0]).__comma($recv($self._temps())._keys());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"allVariableNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "args",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "args\x0a\x09^ args ifNil: [ args := Dictionary new ]",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.args;
- if($1 == null || $1.a$nil){
- $self.args=$recv($globals.Dictionary)._new();
- return $self.args;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"args",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "bindingFor:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "bindingFor: aString\x0a\x09^ self pseudoVars at: aString ifAbsent: [\x0a\x09\x09self args at: aString ifAbsent: [\x0a\x09\x09\x09self temps at: aString ifAbsent: [ nil ]]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:", "pseudoVars", "args", "temps"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return [$recv($self._pseudoVars())._at_ifAbsent_(aString,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv($self._args())._at_ifAbsent_(aString,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self._temps())._at_ifAbsent_(aString,(function(){
- return nil;
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["at:ifAbsent:"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:ifAbsent:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"bindingFor:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "blockIndex",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "blockIndex\x0a\x09^ blockIndex ifNil: [ 0 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.blockIndex;
- if($1 == null || $1.a$nil){
- return (0);
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"blockIndex",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "blockIndex:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- source: "blockIndex: anInteger \x0a\x09blockIndex := anInteger",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- $self.blockIndex=anInteger;
- return self;
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "canFlattenNonLocalReturns",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "canFlattenNonLocalReturns\x0a\x09^ self isInlined and: [ self outerScope canFlattenNonLocalReturns ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "isInlined", "canFlattenNonLocalReturns", "outerScope"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._isInlined())){
- return $recv($self._outerScope())._canFlattenNonLocalReturns();
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"canFlattenNonLocalReturns",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "instruction",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "instruction\x0a\x09^ instruction",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.instruction;
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "instruction:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction"],
- source: "instruction: anIRInstruction\x0a\x09instruction := anIRInstruction",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anIRInstruction){
- var self=this,$self=this;
- $self.instruction=anIRInstruction;
- return self;
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "isBlockScope",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isBlockScope\x0a\x09^ self isMethodScope not",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["not", "isMethodScope"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._isMethodScope())._not();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isBlockScope",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "isInlined",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isInlined\x0a\x09^ self instruction ifNil: [ false ] ifNotNil: [ :instr | instr isInlined ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:ifNotNil:", "instruction", "isInlined"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._instruction();
- if($1 == null || $1.a$nil){
- return false;
- } else {
- var instr;
- instr=$1;
- return $recv(instr)._isInlined();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isInlined",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "isMethodScope",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isMethodScope\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "lookupVariable:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "lookupVariable: aString\x0a\x09| lookup |\x0a\x09lookup := (self bindingFor: aString).\x0a\x09lookup ifNil: [\x0a\x09\x09lookup := self outerScope ifNotNil: [\x0a\x09\x09\x09(self outerScope lookupVariable: aString) ]].\x0a\x09^ lookup",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["bindingFor:", "ifNil:", "ifNotNil:", "outerScope", "lookupVariable:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- var lookup;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- lookup=$self._bindingFor_(aString);
- $1=lookup;
- if($1 == null || $1.a$nil){
- $2=[$self._outerScope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["outerScope"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($2 == null || $2.a$nil){
- lookup=$2;
- } else {
- lookup=$recv($self._outerScope())._lookupVariable_(aString);
- }
- lookup;
- } else {
- $1;
- }
- return lookup;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"lookupVariable:",{aString:aString,lookup:lookup})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "methodScope",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "methodScope\x0a\x09^ self outerScope ifNotNil: [\x0a\x09\x09self outerScope methodScope ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "outerScope", "methodScope"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[$self._outerScope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["outerScope"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- return $1;
- } else {
- return $recv($self._outerScope())._methodScope();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"methodScope",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "node",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "node\x0a\x09\x22Answer the node in which I am defined\x22\x0a\x09\x0a\x09^ node",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.node;
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "node:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "node: aNode\x0a\x09node := aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- $self.node=aNode;
- return self;
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "outerScope",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "outerScope\x0a\x09^ outerScope",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.outerScope;
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "outerScope:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aLexicalScope"],
- source: "outerScope: aLexicalScope\x0a\x09outerScope := aLexicalScope",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aLexicalScope){
- var self=this,$self=this;
- $self.outerScope=aLexicalScope;
- return self;
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "pseudoVars",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "pseudoVars\x0a\x09^ self methodScope pseudoVars",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["pseudoVars", "methodScope"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._methodScope())._pseudoVars();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"pseudoVars",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "scopeLevel",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "scopeLevel\x0a\x09self outerScope ifNil: [ ^ 1 ].\x0a\x09self isInlined ifTrue: [ ^ self outerScope scopeLevel ].\x0a\x09\x0a\x09^ self outerScope scopeLevel + 1",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "outerScope", "ifTrue:", "isInlined", "scopeLevel", "+"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[$self._outerScope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["outerScope"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- return (1);
- } else {
- $1;
- }
- if($core.assert($self._isInlined())){
- return [$recv([$self._outerScope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["outerScope"]=2
- //>>excludeEnd("ctx");
- ][0])._scopeLevel()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scopeLevel"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- return $recv($recv($self._outerScope())._scopeLevel()).__plus((1));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"scopeLevel",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.LexicalScope);
- $core.addMethod(
- $core.method({
- selector: "temps",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "temps\x0a\x09^ temps ifNil: [ temps := Dictionary new ]",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.temps;
- if($1 == null || $1.a$nil){
- $self.temps=$recv($globals.Dictionary)._new();
- return $self.temps;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"temps",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.LexicalScope);
- $core.addClass("MethodLexicalScope", $globals.LexicalScope, "Compiler-Semantic");
- $core.setSlots($globals.MethodLexicalScope, ["slotVars", "pseudoVars", "localReturn", "nonLocalReturns"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.MethodLexicalScope.comment="I represent a method scope.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "addNonLocalReturn:",
- protocol: "adding",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aScope"],
- source: "addNonLocalReturn: aScope\x0a\x09self nonLocalReturns add: aScope",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "nonLocalReturns"]
- }, function ($methodClass){ return function (aScope){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._nonLocalReturns())._add_(aScope);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addNonLocalReturn:",{aScope:aScope})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodLexicalScope);
- $core.addMethod(
- $core.method({
- selector: "addSlotVar:",
- protocol: "adding",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "addSlotVar: aString\x0a\x09self slotVars at: aString put: (SlotVar on: aString).\x0a\x09(self slotVars at: aString) scope: self",
- referencedClasses: ["SlotVar"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "slotVars", "on:", "scope:", "at:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv([$self._slotVars()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["slotVars"]=1
- //>>excludeEnd("ctx");
- ][0])._at_put_(aString,$recv($globals.SlotVar)._on_(aString));
- $recv($recv($self._slotVars())._at_(aString))._scope_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addSlotVar:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodLexicalScope);
- $core.addMethod(
- $core.method({
- selector: "allVariableNames",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "allVariableNames\x0a\x09^ super allVariableNames, self slotVars keys",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "allVariableNames", "keys", "slotVars"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv([(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._allVariableNames.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0]).__comma($recv($self._slotVars())._keys());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"allVariableNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodLexicalScope);
- $core.addMethod(
- $core.method({
- selector: "bindingFor:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "bindingFor: aString\x0a\x09^ (super bindingFor: aString) ifNil: [\x0a\x09\x09self slotVars at: aString ifAbsent: [ nil ]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "bindingFor:", "at:ifAbsent:", "slotVars"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._bindingFor_.call($self,aString))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- return $recv($self._slotVars())._at_ifAbsent_(aString,(function(){
- return nil;
- }));
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"bindingFor:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodLexicalScope);
- $core.addMethod(
- $core.method({
- selector: "canFlattenNonLocalReturns",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "canFlattenNonLocalReturns\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.MethodLexicalScope);
- $core.addMethod(
- $core.method({
- selector: "hasLocalReturn",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "hasLocalReturn\x0a\x09^ self localReturn",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["localReturn"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._localReturn();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"hasLocalReturn",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodLexicalScope);
- $core.addMethod(
- $core.method({
- selector: "hasNonLocalReturn",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "hasNonLocalReturn\x0a\x09^ self nonLocalReturns notEmpty",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["notEmpty", "nonLocalReturns"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._nonLocalReturns())._notEmpty();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"hasNonLocalReturn",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodLexicalScope);
- $core.addMethod(
- $core.method({
- selector: "isMethodScope",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isMethodScope\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.MethodLexicalScope);
- $core.addMethod(
- $core.method({
- selector: "localReturn",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "localReturn\x0a\x09^ localReturn ifNil: [ false ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.localReturn;
- if($1 == null || $1.a$nil){
- return false;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"localReturn",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodLexicalScope);
- $core.addMethod(
- $core.method({
- selector: "localReturn:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBoolean"],
- source: "localReturn: aBoolean\x0a\x09localReturn := aBoolean",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aBoolean){
- var self=this,$self=this;
- $self.localReturn=aBoolean;
- return self;
- }; }),
- $globals.MethodLexicalScope);
- $core.addMethod(
- $core.method({
- selector: "methodScope",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "methodScope\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.MethodLexicalScope);
- $core.addMethod(
- $core.method({
- selector: "nonLocalReturns",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "nonLocalReturns\x0a\x09^ nonLocalReturns ifNil: [ nonLocalReturns := OrderedCollection new ]",
- referencedClasses: ["OrderedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.nonLocalReturns;
- if($1 == null || $1.a$nil){
- $self.nonLocalReturns=$recv($globals.OrderedCollection)._new();
- return $self.nonLocalReturns;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nonLocalReturns",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodLexicalScope);
- $core.addMethod(
- $core.method({
- selector: "pseudoVars",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "pseudoVars\x0a\x09pseudoVars ifNil: [\x0a\x09\x09pseudoVars := Dictionary new.\x0a\x09\x09PseudoVar dictionary keysAndValuesDo: [ :each :impl |\x0a\x09\x09\x09pseudoVars at: each put: ((impl on: each)\x0a\x09\x09\x09\x09scope: self methodScope;\x0a\x09\x09\x09\x09yourself) ] ].\x0a\x09^ pseudoVars",
- referencedClasses: ["Dictionary", "PseudoVar"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new", "keysAndValuesDo:", "dictionary", "at:put:", "scope:", "on:", "methodScope", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3;
- $1=$self.pseudoVars;
- if($1 == null || $1.a$nil){
- $self.pseudoVars=$recv($globals.Dictionary)._new();
- $recv($recv($globals.PseudoVar)._dictionary())._keysAndValuesDo_((function(each,impl){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $2=$self.pseudoVars;
- $3=$recv(impl)._on_(each);
- $recv($3)._scope_($self._methodScope());
- return $recv($2)._at_put_(each,$recv($3)._yourself());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each,impl:impl},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- } else {
- $1;
- }
- return $self.pseudoVars;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"pseudoVars",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodLexicalScope);
- $core.addMethod(
- $core.method({
- selector: "removeNonLocalReturn:",
- protocol: "adding",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aScope"],
- source: "removeNonLocalReturn: aScope\x0a\x09self nonLocalReturns remove: aScope ifAbsent: []",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["remove:ifAbsent:", "nonLocalReturns"]
- }, function ($methodClass){ return function (aScope){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._nonLocalReturns())._remove_ifAbsent_(aScope,(function(){
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"removeNonLocalReturn:",{aScope:aScope})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodLexicalScope);
- $core.addMethod(
- $core.method({
- selector: "slotVars",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "slotVars\x0a\x09^ slotVars ifNil: [ slotVars := Dictionary new ]",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.slotVars;
- if($1 == null || $1.a$nil){
- $self.slotVars=$recv($globals.Dictionary)._new();
- return $self.slotVars;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"slotVars",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodLexicalScope);
- $core.addClass("ScopeVar", $globals.Object, "Compiler-Semantic");
- $core.setSlots($globals.ScopeVar, ["scope", "name"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "alias",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "alias\x0a\x09^ self name asVariableName",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["asVariableName", "name"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._name())._asVariableName();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"alias",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ScopeVar);
- $core.addMethod(
- $core.method({
- selector: "isAssignable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isAssignable\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.ScopeVar);
- $core.addMethod(
- $core.method({
- selector: "isIdempotent",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isIdempotent\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.ScopeVar);
- $core.addMethod(
- $core.method({
- selector: "isImmutable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isImmutable\x0a\x09self deprecatedAPI: 'Use #isIdempotent / #isAssignable not instead.'.\x0a\x09^ self isIdempotent",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deprecatedAPI:", "isIdempotent"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deprecatedAPI_("Use #isIdempotent / #isAssignable not instead.");
- return $self._isIdempotent();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isImmutable",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ScopeVar);
- $core.addMethod(
- $core.method({
- selector: "isSuper",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSuper\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.ScopeVar);
- $core.addMethod(
- $core.method({
- selector: "name",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "name\x0a\x09^ name",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.name;
- }; }),
- $globals.ScopeVar);
- $core.addMethod(
- $core.method({
- selector: "name:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "name: aString\x0a\x09name := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.name=aString;
- return self;
- }; }),
- $globals.ScopeVar);
- $core.addMethod(
- $core.method({
- selector: "scope",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "scope\x0a\x09^ scope",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.scope;
- }; }),
- $globals.ScopeVar);
- $core.addMethod(
- $core.method({
- selector: "scope:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aScope"],
- source: "scope: aScope\x0a\x09scope := aScope",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aScope){
- var self=this,$self=this;
- $self.scope=aScope;
- return self;
- }; }),
- $globals.ScopeVar);
- $core.addMethod(
- $core.method({
- selector: "on:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "on: aString\x0a\x09^ self new\x0a\x09\x09name: aString;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["name:", "new", "yourself"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._name_(aString);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ScopeVar.a$cls);
- $core.addClass("AliasVar", $globals.ScopeVar, "Compiler-Semantic");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.AliasVar.comment="I am an internally defined variable by the compiler";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "isAssignable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isAssignable\x0a\x09self error: 'Alias variable is internal, it should never appear in normal variable context.'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("Alias variable is internal, it should never appear in normal variable context.");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isAssignable",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AliasVar);
- $core.addMethod(
- $core.method({
- selector: "isIdempotent",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isIdempotent\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.AliasVar);
- $core.addClass("ArgVar", $globals.ScopeVar, "Compiler-Semantic");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ArgVar.comment="I am an argument of a method or block.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "isIdempotent",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isIdempotent\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.ArgVar);
- $core.addClass("ClassRefVar", $globals.ScopeVar, "Compiler-Semantic");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ClassRefVar.comment="I am an class reference variable";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "alias",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "alias\x0a\x09^ '$globals.', self name",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "name"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return "$globals.".__comma($self._name());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"alias",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassRefVar);
- $core.addClass("ExternallyKnownVar", $globals.ScopeVar, "Compiler-Semantic");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ExternallyKnownVar.comment="I am a variable known externally (not in method scope).";
- //>>excludeEnd("ide");
- $core.addClass("PseudoVar", $globals.ScopeVar, "Compiler-Semantic");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.PseudoVar.comment="I am an pseudo variable.\x0a\x0aThe five Smalltalk pseudo variables are: 'self', 'super', 'nil', 'true' and 'false'";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "alias",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "alias\x0a\x09^ self name",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["name"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._name();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"alias",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PseudoVar);
- $core.addMethod(
- $core.method({
- selector: "isIdempotent",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isIdempotent\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.PseudoVar);
- $core.setSlots($globals.PseudoVar.a$cls, ["dictionary", "receiverNames"]);
- $core.addMethod(
- $core.method({
- selector: "dictionary",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "dictionary\x0a\x09^ dictionary ifNil: [ dictionary := Dictionary new\x0a\x09\x09at: #self put: PseudoVar;\x0a\x09\x09at: #super put: SuperVar;\x0a\x09\x09at: #nil put: PseudoVar;\x0a\x09\x09at: #false put: PseudoVar;\x0a\x09\x09at: #true put: PseudoVar;\x0a\x09\x09at: #thisContext put: ThisContextVar;\x0a\x09\x09yourself ]",
- referencedClasses: ["Dictionary", "PseudoVar", "SuperVar", "ThisContextVar"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "at:put:", "new", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=$self.dictionary;
- if($1 == null || $1.a$nil){
- $2=$recv($globals.Dictionary)._new();
- [$recv($2)._at_put_("self",$globals.PseudoVar)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._at_put_("super",$globals.SuperVar)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._at_put_("nil",$globals.PseudoVar)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._at_put_("false",$globals.PseudoVar)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._at_put_("true",$globals.PseudoVar)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._at_put_("thisContext",$globals.ThisContextVar);
- $self.dictionary=$recv($2)._yourself();
- return $self.dictionary;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dictionary",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PseudoVar.a$cls);
- $core.addMethod(
- $core.method({
- selector: "receiverNames",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "receiverNames\x0a\x09^ receiverNames ifNil: [ receiverNames := Dictionary new\x0a\x09\x09at: #self put: '$self';\x0a\x09\x09at: #super put: '$self';\x0a\x09\x09at: #nil put: '$nil';\x0a\x09\x09yourself ]",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "at:put:", "new", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=$self.receiverNames;
- if($1 == null || $1.a$nil){
- $2=$recv($globals.Dictionary)._new();
- [$recv($2)._at_put_("self","$self")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._at_put_("super","$self")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._at_put_("nil","$nil");
- $self.receiverNames=$recv($2)._yourself();
- return $self.receiverNames;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"receiverNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PseudoVar.a$cls);
- $core.addClass("SuperVar", $globals.PseudoVar, "Compiler-Semantic");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.SuperVar.comment="I am a 'super' pseudo variable.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "isSuper",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSuper\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.SuperVar);
- $core.addMethod(
- $core.method({
- selector: "lookupAsJavaScriptSource",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "lookupAsJavaScriptSource\x0a\x09^ '($methodClass.superclass||$boot.nilAsClass).fn.prototype'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "($methodClass.superclass||$boot.nilAsClass).fn.prototype";
- }; }),
- $globals.SuperVar);
- $core.addClass("JavaScriptSuperVar", $globals.SuperVar, "Compiler-Semantic");
- $core.addMethod(
- $core.method({
- selector: "lookupAsJavaScriptSource",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "lookupAsJavaScriptSource\x0a\x09^ 'Object.getPrototypeOf($methodClass.fn.prototype)'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "Object.getPrototypeOf($methodClass.fn.prototype)";
- }; }),
- $globals.JavaScriptSuperVar);
- $core.addClass("ThisContextVar", $globals.PseudoVar, "Compiler-Semantic");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ThisContextVar.comment="I am a 'thisContext' pseudo variable.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "alias",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "alias\x0a\x09^ '$core.getThisContext()'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "$core.getThisContext()";
- }; }),
- $globals.ThisContextVar);
- $core.addClass("SlotVar", $globals.ScopeVar, "Compiler-Semantic");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.SlotVar.comment="I am a slot variable of a method's class.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "alias",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "alias\x0a\x09^ '$self.', self name",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "name"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return "$self.".__comma($self._name());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"alias",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SlotVar);
- $core.addMethod(
- $core.method({
- selector: "isAssignable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isAssignable\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.SlotVar);
- $core.addClass("TempVar", $globals.ScopeVar, "Compiler-Semantic");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.TempVar.comment="I am an temporary variable of a method or block.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "isAssignable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isAssignable\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.TempVar);
- $core.addClass("SemanticAnalyzer", $globals.NodeVisitor, "Compiler-Semantic");
- $core.setSlots($globals.SemanticAnalyzer, ["currentScope", "blockIndex", "thePackage", "theClass", "classReferences", "messageSends"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.SemanticAnalyzer.comment="I semantically analyze the abstract syntax tree and annotate it with informations such as non local returns and variable scopes.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "bindUnscopedVariable:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "bindUnscopedVariable: aString\x0a\x09aString isCapitalized ifTrue: [ \x22Capital letter variables might be globals.\x22\x0a\x09\x09self classReferences add: aString.\x0a\x09\x09^ ClassRefVar new name: aString; yourself ].\x0a\x0a\x09\x22Throw an error if the variable is undeclared in the global JS scope (i.e. window).\x0a\x09We allow all variables listed by Smalltalk>>#globalJsVariables.\x0a\x09This list includes: `window`, `document`, `process` and `global`\x0a\x09for nodejs and browser environments.\x0a\x09\x0a\x09This is only to make sure compilation works on both browser-based and nodejs environments.\x0a\x09The ideal solution would be to use a pragma instead\x22\x0a\x0a\x09((Smalltalk globalJsVariables includes: aString)\x0a\x09\x09or: [ self isVariableKnown: aString inPackage: self thePackage ]) ifTrue: [\x0a\x09\x09\x09^ ExternallyKnownVar new name: aString; yourself ].\x0a\x0a\x09self errorUnknownVariable: aString",
- referencedClasses: ["ClassRefVar", "Smalltalk", "ExternallyKnownVar"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "isCapitalized", "add:", "classReferences", "name:", "new", "yourself", "or:", "includes:", "globalJsVariables", "isVariableKnown:inPackage:", "thePackage", "errorUnknownVariable:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3;
- if($core.assert($recv(aString)._isCapitalized())){
- $recv($self._classReferences())._add_(aString);
- $1=[$recv($globals.ClassRefVar)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._name_(aString)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["name:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return [$recv($1)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- if($core.assert($recv($recv($globals.Smalltalk)._globalJsVariables())._includes_(aString))){
- $2=true;
- } else {
- $2=$self._isVariableKnown_inPackage_(aString,$self._thePackage());
- }
- if($core.assert($2)){
- $3=$recv($globals.ExternallyKnownVar)._new();
- $recv($3)._name_(aString);
- return $recv($3)._yourself();
- }
- $self._errorUnknownVariable_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"bindUnscopedVariable:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "classReferences",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classReferences\x0a\x09^ classReferences ifNil: [ classReferences := Set new ]",
- referencedClasses: ["Set"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.classReferences;
- if($1 == null || $1.a$nil){
- $self.classReferences=$recv($globals.Set)._new();
- return $self.classReferences;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"classReferences",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "errorInvalidAssignment:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "errorInvalidAssignment: aString\x0a\x09InvalidAssignmentError new\x0a\x09\x09variableName: aString;\x0a\x09\x09signal",
- referencedClasses: ["InvalidAssignmentError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["variableName:", "new", "signal"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.InvalidAssignmentError)._new();
- $recv($1)._variableName_(aString);
- $recv($1)._signal();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"errorInvalidAssignment:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "errorShadowingVariable:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "errorShadowingVariable: aString\x0a\x09ShadowingVariableError new\x0a\x09\x09variableName: aString;\x0a\x09\x09signal",
- referencedClasses: ["ShadowingVariableError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["variableName:", "new", "signal"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.ShadowingVariableError)._new();
- $recv($1)._variableName_(aString);
- $recv($1)._signal();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"errorShadowingVariable:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "errorUnknownVariable:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "errorUnknownVariable: aString\x0a\x09UnknownVariableError new\x0a\x09\x09variableName: aString;\x0a\x09\x09signal",
- referencedClasses: ["UnknownVariableError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["variableName:", "new", "signal"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.UnknownVariableError)._new();
- $recv($1)._variableName_(aString);
- $recv($1)._signal();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"errorUnknownVariable:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "isVariableKnown:inPackage:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aPackage"],
- source: "isVariableKnown: aString inPackage: aPackage\x0a\x09aPackage ifNotNil: [\x0a\x09\x09| packageKnownVars |\x0a\x09\x09packageKnownVars := (aPackage imports reject: #isString) collect: #key.\x0a\x09\x09(packageKnownVars includes: aString) ifTrue: [ ^ true ] ].\x0a\x09^ Compiler new\x0a\x09\x09eval: 'typeof(', aString, ')!== \x22undefined\x22||(function(){try{return(', aString, ',true)}catch(_){return false}})()'\x0a\x09\x09forPackage: aPackage",
- referencedClasses: ["Compiler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "collect:", "reject:", "imports", "ifTrue:", "includes:", "eval:forPackage:", "new", ","]
- }, function ($methodClass){ return function (aString,aPackage){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(aPackage == null || aPackage.a$nil){
- aPackage;
- } else {
- var packageKnownVars;
- packageKnownVars=$recv($recv($recv(aPackage)._imports())._reject_("isString"))._collect_("key");
- if($core.assert($recv(packageKnownVars)._includes_(aString))){
- return true;
- }
- }
- return $recv($recv($globals.Compiler)._new())._eval_forPackage_([$recv([$recv([$recv("typeof(".__comma(aString)).__comma(")!== \x22undefined\x22||(function(){try{return(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0]).__comma(aString)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(",true)}catch(_){return false}})()")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0],aPackage);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isVariableKnown:inPackage:",{aString:aString,aPackage:aPackage})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "messageSends",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "messageSends\x0a\x09^ messageSends ifNil: [ messageSends := Dictionary new ]",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.messageSends;
- if($1 == null || $1.a$nil){
- $self.messageSends=$recv($globals.Dictionary)._new();
- return $self.messageSends;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"messageSends",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "newBlockScope",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "newBlockScope\x0a\x09^ self newScopeOfClass: LexicalScope",
- referencedClasses: ["LexicalScope"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["newScopeOfClass:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._newScopeOfClass_($globals.LexicalScope);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newBlockScope",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "newMethodScope",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "newMethodScope\x0a\x09^ self newScopeOfClass: MethodLexicalScope",
- referencedClasses: ["MethodLexicalScope"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["newScopeOfClass:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._newScopeOfClass_($globals.MethodLexicalScope);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newMethodScope",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "newScopeOfClass:",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aLexicalScopeClass"],
- source: "newScopeOfClass: aLexicalScopeClass\x0a\x09^ aLexicalScopeClass new\x0a\x09\x09outerScope: currentScope;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["outerScope:", "new", "yourself"]
- }, function ($methodClass){ return function (aLexicalScopeClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv(aLexicalScopeClass)._new();
- $recv($1)._outerScope_($self.currentScope);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newScopeOfClass:",{aLexicalScopeClass:aLexicalScopeClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "nextBlockIndex",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "nextBlockIndex\x0a\x09blockIndex ifNil: [ blockIndex := 0 ].\x0a\x09\x0a\x09blockIndex := blockIndex + 1.\x0a\x09^ blockIndex",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "+"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.blockIndex;
- if($1 == null || $1.a$nil){
- $self.blockIndex=(0);
- $self.blockIndex;
- } else {
- $1;
- }
- $self.blockIndex=$recv($self.blockIndex).__plus((1));
- return $self.blockIndex;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextBlockIndex",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "popScope",
- protocol: "scope",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "popScope\x0a\x09currentScope ifNotNil: [\x0a\x09\x09currentScope := currentScope outerScope ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "outerScope"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.currentScope;
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $self.currentScope=$recv($self.currentScope)._outerScope();
- $self.currentScope;
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"popScope",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "pushScope:",
- protocol: "scope",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aScope"],
- source: "pushScope: aScope\x0a\x09aScope outerScope: currentScope.\x0a\x09currentScope := aScope",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["outerScope:"]
- }, function ($methodClass){ return function (aScope){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aScope)._outerScope_($self.currentScope);
- $self.currentScope=aScope;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"pushScope:",{aScope:aScope})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "theClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theClass\x0a\x09^ theClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.theClass;
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "theClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "theClass: aClass\x0a\x09theClass := aClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- $self.theClass=aClass;
- return self;
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "thePackage",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "thePackage\x0a\x09^ thePackage",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.thePackage;
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "thePackage:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPackage"],
- source: "thePackage: aPackage\x0a\x09thePackage := aPackage",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aPackage){
- var self=this,$self=this;
- $self.thePackage=aPackage;
- return self;
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "validateVariableScope:",
- protocol: "scope",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "lookupVariable:", "errorShadowingVariable:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($self.currentScope)._lookupVariable_(aString);
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $self._errorShadowingVariable_(aString);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"validateVariableScope:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "visitAssignmentNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitAssignmentNode: aNode\x0a\x09| lhs |\x0a\x09super visitAssignmentNode: aNode.\x0a\x09lhs := aNode left.\x0a\x09lhs isAssignable ifFalse: [ self errorInvalidAssignment: lhs identifier ].\x0a\x09lhs assigned: true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitAssignmentNode:", "left", "ifFalse:", "isAssignable", "errorInvalidAssignment:", "identifier", "assigned:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var lhs;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitAssignmentNode_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- lhs=$recv(aNode)._left();
- if(!$core.assert($recv(lhs)._isAssignable())){
- $self._errorInvalidAssignment_($recv(lhs)._identifier());
- }
- $recv(lhs)._assigned_(true);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode,lhs:lhs})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "visitBlockNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["pushScope:", "newBlockScope", "scope:", "node:", "blockIndex:", "nextBlockIndex", "do:", "parameters", "validateVariableScope:", "addArg:", "visitBlockNode:", "popScope"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._pushScope_($self._newBlockScope());
- $recv(aNode)._scope_($self.currentScope);
- $recv($self.currentScope)._node_(aNode);
- $recv($self.currentScope)._blockIndex_($self._nextBlockIndex());
- $recv($recv(aNode)._parameters())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self._validateVariableScope_(each);
- return $recv($self.currentScope)._addArg_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitBlockNode_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self._popScope();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "visitCascadeNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitCascadeNode: aNode\x0a\x09aNode receiver: aNode dagChildren first receiver.\x0a\x09aNode dagChildren allButLast do: [ :each | each beSideEffect ].\x0a\x09super visitCascadeNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["receiver:", "receiver", "first", "dagChildren", "do:", "allButLast", "beSideEffect", "visitCascadeNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aNode)._receiver_($recv($recv([$recv(aNode)._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=1
- //>>excludeEnd("ctx");
- ][0])._first())._receiver());
- $recv($recv($recv(aNode)._dagChildren())._allButLast())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._beSideEffect();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitCascadeNode_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "visitMethodNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitMethodNode: aNode\x0a\x09self pushScope: self newMethodScope.\x0a\x09aNode scope: currentScope.\x0a\x09currentScope node: aNode.\x0a\x0a\x09self theClass allSlotNames do: [ :each |\x0a\x09\x09currentScope addSlotVar: each ].\x0a\x09aNode arguments do: [ :each |\x0a\x09\x09self validateVariableScope: each.\x0a\x09\x09currentScope addArg: each ].\x0a\x0a\x09super visitMethodNode: aNode.\x0a\x0a\x09aNode\x0a\x09\x09classReferences: self classReferences;\x0a\x09\x09sendIndexes: self messageSends.\x0a\x09self popScope.\x0a\x09^ aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["pushScope:", "newMethodScope", "scope:", "node:", "do:", "allSlotNames", "theClass", "addSlotVar:", "arguments", "validateVariableScope:", "addArg:", "visitMethodNode:", "classReferences:", "classReferences", "sendIndexes:", "messageSends", "popScope"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._pushScope_($self._newMethodScope());
- $recv(aNode)._scope_($self.currentScope);
- $recv($self.currentScope)._node_(aNode);
- [$recv($recv($self._theClass())._allSlotNames())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self.currentScope)._addSlotVar_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($recv(aNode)._arguments())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self._validateVariableScope_(each);
- return $recv($self.currentScope)._addArg_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitMethodNode_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $recv(aNode)._classReferences_($self._classReferences());
- $recv(aNode)._sendIndexes_($self._messageSends());
- $self._popScope();
- return aNode;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "visitReturnNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["scope:", "ifTrue:ifFalse:", "isMethodScope", "localReturn:", "addNonLocalReturn:", "methodScope", "visitReturnNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aNode)._scope_($self.currentScope);
- if($core.assert($recv($self.currentScope)._isMethodScope())){
- $recv($self.currentScope)._localReturn_(true);
- } else {
- $recv($recv($self.currentScope)._methodScope())._addNonLocalReturn_($self.currentScope);
- }
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitReturnNode_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "visitSendNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitSendNode: aNode\x0a\x0a\x09| sends |\x0a\x09sends := self messageSends at: aNode selector ifAbsentPut: [ OrderedCollection new ].\x0a\x09sends add: aNode.\x0a\x0a\x09aNode index: sends size.\x0a\x0a\x09super visitSendNode: aNode",
- referencedClasses: ["OrderedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsentPut:", "messageSends", "selector", "new", "add:", "index:", "size", "visitSendNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var sends;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- sends=$recv($self._messageSends())._at_ifAbsentPut_($recv(aNode)._selector(),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.OrderedCollection)._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv(sends)._add_(aNode);
- $recv(aNode)._index_($recv(sends)._size());
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitSendNode_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode,sends:sends})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "visitSequenceNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitSequenceNode: aNode\x0a\x09aNode temps do: [ :each |\x0a\x09\x09self validateVariableScope: each.\x0a\x09\x09currentScope addTemp: each ].\x0a\x0a\x09super visitSequenceNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "temps", "validateVariableScope:", "addTemp:", "visitSequenceNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(aNode)._temps())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self._validateVariableScope_(each);
- return $recv($self.currentScope)._addTemp_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitSequenceNode_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "visitVariableNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitVariableNode: aNode\x0a\x09\x22Bind a ScopeVar to aNode by doing a lookup in the current scope.\x0a\x09If no var is found in scope, represent an externally known variable or throw an error.\x22\x0a\x0a\x09aNode binding:\x0a\x09\x09((currentScope lookupVariable: aNode identifier) ifNil: [ self bindUnscopedVariable: aNode identifier ])",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["binding:", "ifNil:", "lookupVariable:", "identifier", "bindUnscopedVariable:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=$recv($self.currentScope)._lookupVariable_([$recv(aNode)._identifier()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["identifier"]=1
- //>>excludeEnd("ctx");
- ][0]);
- if($1 == null || $1.a$nil){
- $2=$self._bindUnscopedVariable_($recv(aNode)._identifier());
- } else {
- $2=$1;
- }
- $recv(aNode)._binding_($2);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "on:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "on: aClass\x0a\x09^ self new\x0a\x09\x09theClass: aClass;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["theClass:", "new", "yourself"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._theClass_(aClass);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzer.a$cls);
- $core.addClass("SemanticError", $globals.CompilerError, "Compiler-Semantic");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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";
- //>>excludeEnd("ide");
- $core.addClass("InvalidAssignmentError", $globals.SemanticError, "Compiler-Semantic");
- $core.setSlots($globals.InvalidAssignmentError, ["variableName"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.InvalidAssignmentError.comment="I get signaled when a pseudo variable gets assigned.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "messageText",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "messageText\x0a\x09^ ' Invalid assignment to variable: ', self variableName",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "variableName"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return " Invalid assignment to variable: ".__comma($self._variableName());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"messageText",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.InvalidAssignmentError);
- $core.addMethod(
- $core.method({
- selector: "variableName",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "variableName\x0a\x09^ variableName",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.variableName;
- }; }),
- $globals.InvalidAssignmentError);
- $core.addMethod(
- $core.method({
- selector: "variableName:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "variableName: aString\x0a\x09variableName := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.variableName=aString;
- return self;
- }; }),
- $globals.InvalidAssignmentError);
- $core.addClass("ShadowingVariableError", $globals.SemanticError, "Compiler-Semantic");
- $core.setSlots($globals.ShadowingVariableError, ["variableName"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "messageText",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "messageText\x0a\x09^ 'Variable shadowing error: ', self variableName, ' is already defined'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "variableName"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return [$recv("Variable shadowing error: ".__comma($self._variableName())).__comma(" is already defined")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"messageText",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ShadowingVariableError);
- $core.addMethod(
- $core.method({
- selector: "variableName",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "variableName\x0a\x09^ variableName",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.variableName;
- }; }),
- $globals.ShadowingVariableError);
- $core.addMethod(
- $core.method({
- selector: "variableName:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "variableName: aString\x0a\x09variableName := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.variableName=aString;
- return self;
- }; }),
- $globals.ShadowingVariableError);
- $core.addClass("UnknownVariableError", $globals.SemanticError, "Compiler-Semantic");
- $core.setSlots($globals.UnknownVariableError, ["variableName"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "messageText",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "messageText\x0a\x09^ 'Unknown Variable error: ', self variableName, ' is not defined'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "variableName"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return [$recv("Unknown Variable error: ".__comma($self._variableName())).__comma(" is not defined")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"messageText",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.UnknownVariableError);
- $core.addMethod(
- $core.method({
- selector: "variableName",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "variableName\x0a\x09^ variableName",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.variableName;
- }; }),
- $globals.UnknownVariableError);
- $core.addMethod(
- $core.method({
- selector: "variableName:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "variableName: aString\x0a\x09variableName := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.variableName=aString;
- return self;
- }; }),
- $globals.UnknownVariableError);
- $core.addMethod(
- $core.method({
- selector: "jsOverride:",
- protocol: "*Compiler-Semantic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "jsOverride: aString\x0a\x09(JSSuperSendVisitor new property: aString; yourself)\x0a\x09\x09visit: self methodNode",
- referencedClasses: ["JSSuperSendVisitor"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visit:", "property:", "new", "yourself", "methodNode"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.JSSuperSendVisitor)._new();
- $recv($1)._property_(aString);
- $recv($recv($1)._yourself())._visit_($self._methodNode());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"jsOverride:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AstSemanticPragmator);
- $core.addMethod(
- $core.method({
- selector: "jsOverride:args:",
- protocol: "*Compiler-Semantic",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aCollection"],
- source: "jsOverride: aString args: aCollection\x0a\x09(JSSuperSendVisitor new property: aString; args: aCollection; yourself)\x0a\x09\x09visit: self methodNode",
- referencedClasses: ["JSSuperSendVisitor"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visit:", "property:", "new", "args:", "yourself", "methodNode"]
- }, function ($methodClass){ return function (aString,aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.JSSuperSendVisitor)._new();
- $recv($1)._property_(aString);
- $recv($1)._args_(aCollection);
- $recv($recv($1)._yourself())._visit_($self._methodNode());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"jsOverride:args:",{aString:aString,aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AstSemanticPragmator);
- });
- define('amber/core/Compiler-IR',["amber/boot", "require", "amber/core/Compiler-AST", "amber/core/Compiler-Core", "amber/core/Compiler-Semantic", "amber/core/Kernel-Dag", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Compiler-IR");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("IRASTTranslator", $globals.NodeVisitor, "Compiler-IR");
- $core.setSlots($globals.IRASTTranslator, ["source", "theClass", "method", "sequence"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRASTTranslator.comment="I am the AST (abstract syntax tree) visitor responsible for building the intermediate representation graph.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "addToSequence:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInstruction"],
- source: "addToSequence: anInstruction\x0a\x09anInstruction ifNotNil: [\x0a\x09\x09anInstruction isVariable ifFalse: [\x0a\x09\x09\x09self sequence add: anInstruction ] ].\x0a\x09^ anInstruction",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "ifFalse:", "isVariable", "add:", "sequence"]
- }, function ($methodClass){ return function (anInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(anInstruction == null || anInstruction.a$nil){
- anInstruction;
- } else {
- if(!$core.assert($recv(anInstruction)._isVariable())){
- $recv($self._sequence())._add_(anInstruction);
- }
- }
- return anInstruction;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addToSequence:",{anInstruction:anInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "alias:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anExpressionNode"],
- source: "alias: anExpressionNode\x0a\x09| assignment |\x0a\x0a\x09anExpressionNode isIdempotent ifTrue: [ ^ self visit: anExpressionNode ].\x0a\x0a\x09assignment := self method newAliasingOf: (self visit: anExpressionNode).\x0a\x09self addToSequence: assignment.\x0a\x0a\x09^ assignment left",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "isIdempotent", "visit:", "newAliasingOf:", "method", "addToSequence:", "left"]
- }, function ($methodClass){ return function (anExpressionNode){
- var self=this,$self=this;
- var assignment;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(anExpressionNode)._isIdempotent())){
- return [$self._visit_(anExpressionNode)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["visit:"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- assignment=$recv($self._method())._newAliasingOf_($self._visit_(anExpressionNode));
- $self._addToSequence_(assignment);
- return $recv(assignment)._left();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"alias:",{anExpressionNode:anExpressionNode,assignment:assignment})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "aliasTemporally:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "aliasTemporally: aCollection\x0a\x09\x22https://lolg.it/amber/amber/issues/296\x0a\x09\x0a\x09If a node is aliased, all preceding ones are aliased as well.\x0a\x09The tree is iterated twice. First we get the aliasing dependency,\x0a\x09then the aliasing itself is done\x22\x0a\x0a\x09| threshold shouldAlias |\x0a\x09shouldAlias := false.\x0a\x09threshold := aCollection reversed\x0a\x09\x09detect: [ :each |\x0a\x09\x09\x09shouldAlias or: [\x0a\x09\x09\x09\x09each shouldBeAliased or: [\x0a\x09\x09\x09\x09\x09(each hasOpeningStatements or: [ each subtreeNeedsAliasing ]) ifTrue: [ shouldAlias := true ].\x0a\x09\x09\x09\x09\x09false ] ] ]\x0a\x09\x09ifNone: [ nil ].\x0a\x09threshold ifNil: [ ^ self visitAll: aCollection ].\x0a\x0a\x09shouldAlias := true.\x0a\x09^ aCollection collect: [ :each |\x0a\x09\x09shouldAlias\x0a\x09\x09\x09ifTrue: [ each == threshold ifTrue: [ shouldAlias := false ]. self alias: each ]\x0a\x09\x09\x09ifFalse: [ self visit: each ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["detect:ifNone:", "reversed", "or:", "shouldBeAliased", "ifTrue:", "hasOpeningStatements", "subtreeNeedsAliasing", "ifNil:", "visitAll:", "collect:", "ifTrue:ifFalse:", "==", "alias:", "visit:"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- var threshold,shouldAlias;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- shouldAlias=false;
- threshold=$recv($recv(aCollection)._reversed())._detect_ifNone_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert(shouldAlias)){
- return true;
- } else {
- if($core.assert($recv(each)._shouldBeAliased())){
- return true;
- } else {
- if($core.assert($recv(each)._hasOpeningStatements())){
- $1=true;
- } else {
- $1=$recv(each)._subtreeNeedsAliasing();
- }
- if($core.assert($1)){
- shouldAlias=true;
- shouldAlias;
- }
- return false;
- }
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- return nil;
- }));
- $2=threshold;
- if($2 == null || $2.a$nil){
- return $self._visitAll_(aCollection);
- } else {
- $2;
- }
- shouldAlias=true;
- return $recv(aCollection)._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert(shouldAlias)){
- if($core.assert($recv(each).__eq_eq(threshold))){
- shouldAlias=false;
- shouldAlias;
- }
- return $self._alias_(each);
- } else {
- return $self._visit_(each);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,8)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"aliasTemporally:",{aCollection:aCollection,threshold:threshold,shouldAlias:shouldAlias})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "method",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "method\x0a\x09^ method",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.method;
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "method:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRMethod"],
- source: "method: anIRMethod\x0a\x09method := anIRMethod",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anIRMethod){
- var self=this,$self=this;
- $self.method=anIRMethod;
- return self;
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "sequence",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sequence\x0a\x09^ sequence",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.sequence;
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "sequence:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRSequence"],
- source: "sequence: anIRSequence\x0a\x09sequence := anIRSequence",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anIRSequence){
- var self=this,$self=this;
- $self.sequence=anIRSequence;
- return self;
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "source",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "source\x0a\x09^ source",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.source;
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "source:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "source: aString\x0a\x09source := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.source=aString;
- return self;
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "theClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theClass\x0a\x09^ theClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.theClass;
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "theClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "theClass: aClass\x0a\x09theClass := aClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- $self.theClass=aClass;
- return self;
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitAssignmentNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitAssignmentNode: aNode\x0a\x09| left right assignment |\x0a\x09right := self visit: aNode right.\x0a\x09left := self visit: aNode left.\x0a\x09self addToSequence: (IRAssignment new\x0a\x09\x09add: left;\x0a\x09\x09add: right;\x0a\x09\x09yourself).\x0a\x09^ left",
- referencedClasses: ["IRAssignment"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visit:", "right", "left", "addToSequence:", "add:", "new", "yourself"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var left,right,assignment;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- right=[$self._visit_($recv(aNode)._right())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["visit:"]=1
- //>>excludeEnd("ctx");
- ][0];
- left=$self._visit_($recv(aNode)._left());
- $1=$recv($globals.IRAssignment)._new();
- [$recv($1)._add_(left)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._add_(right);
- $self._addToSequence_($recv($1)._yourself());
- return left;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode,left:left,right:right,assignment:assignment})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitBlockNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitBlockNode: aNode\x0a\x09| closure |\x0a\x09closure := IRClosure new\x0a\x09\x09arguments: aNode parameters;\x0a\x09\x09requiresSmalltalkContext: aNode requiresSmalltalkContext;\x0a\x09\x09scope: aNode scope;\x0a\x09\x09yourself.\x0a\x09aNode scope temps do: [ :each |\x0a\x09\x09closure add: (IRTempDeclaration new\x0a\x09\x09\x09name: each name;\x0a\x09\x09\x09scope: aNode scope;\x0a\x09\x09\x09yourself) ].\x0a\x09closure add: (self visit: aNode sequenceNode).\x0a\x09^ closure",
- referencedClasses: ["IRClosure", "IRTempDeclaration"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["arguments:", "new", "parameters", "requiresSmalltalkContext:", "requiresSmalltalkContext", "scope:", "scope", "yourself", "do:", "temps", "add:", "name:", "name", "visit:", "sequenceNode"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var closure;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3;
- $1=[$recv($globals.IRClosure)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._arguments_($recv(aNode)._parameters());
- $recv($1)._requiresSmalltalkContext_($recv(aNode)._requiresSmalltalkContext());
- [$recv($1)._scope_([$recv(aNode)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope:"]=1
- //>>excludeEnd("ctx");
- ][0];
- closure=[$recv($1)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($recv([$recv(aNode)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=2
- //>>excludeEnd("ctx");
- ][0])._temps())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $2=closure;
- $3=$recv($globals.IRTempDeclaration)._new();
- $recv($3)._name_($recv(each)._name());
- $recv($3)._scope_($recv(aNode)._scope());
- return [$recv($2)._add_($recv($3)._yourself())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv(closure)._add_($self._visit_($recv(aNode)._sequenceNode()));
- return closure;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode,closure:closure})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitBlockSequenceNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitBlockSequenceNode: aNode\x0a\x09^ self\x0a\x09\x09withSequence: IRBlockSequence new\x0a\x09\x09do: [\x0a\x09\x09\x09aNode dagChildren ifNotEmpty: [\x0a\x09\x09\x09\x09aNode dagChildren allButLast do: [ :each |\x0a\x09\x09\x09\x09\x09self addToSequence: (self visit: each) ].\x0a\x09\x09\x09\x09aNode dagChildren last isReturnNode\x0a\x09\x09\x09\x09\x09ifFalse: [ self addToSequence: (IRBlockReturn new add: (self visit: aNode dagChildren last); yourself) ]\x0a\x09\x09\x09\x09\x09ifTrue: [ self addToSequence: (self visit: aNode dagChildren last) ] ]]",
- referencedClasses: ["IRBlockSequence", "IRBlockReturn"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["withSequence:do:", "new", "ifNotEmpty:", "dagChildren", "do:", "allButLast", "addToSequence:", "visit:", "ifFalse:ifTrue:", "isReturnNode", "last", "add:", "yourself"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- return $self._withSequence_do_([$recv($globals.IRBlockSequence)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0],(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv([$recv(aNode)._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["dagChildren"]=1
- //>>excludeEnd("ctx");
- ][0])._ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- $recv($recv([$recv(aNode)._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["dagChildren"]=2
- //>>excludeEnd("ctx");
- ][0])._allButLast())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx4) {
- //>>excludeEnd("ctx");
- return [$self._addToSequence_([$self._visit_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx4.sendIdx["visit:"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx4.sendIdx["addToSequence:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx4) {$ctx4.fillBlock({each:each},$ctx3,3)});
- //>>excludeEnd("ctx");
- }));
- if($core.assert($recv([$recv([$recv(aNode)._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["dagChildren"]=3
- //>>excludeEnd("ctx");
- ][0])._last()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["last"]=1
- //>>excludeEnd("ctx");
- ][0])._isReturnNode())){
- return $self._addToSequence_($self._visit_($recv($recv(aNode)._dagChildren())._last()));
- } else {
- $1=$recv($globals.IRBlockReturn)._new();
- $recv($1)._add_([$self._visit_([$recv([$recv(aNode)._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["dagChildren"]=4
- //>>excludeEnd("ctx");
- ][0])._last()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["last"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["visit:"]=2
- //>>excludeEnd("ctx");
- ][0]);
- return [$self._addToSequence_($recv($1)._yourself())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["addToSequence:"]=2
- //>>excludeEnd("ctx");
- ][0];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitCascadeNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitCascadeNode: aNode\x0a\x09| receiver |\x0a\x09receiver := aNode receiver.\x0a\x09receiver isIdempotent ifFalse: [\x0a\x09\x09| alias |\x0a\x09\x09alias := self alias: receiver.\x0a\x09\x09receiver := VariableNode new binding: alias variable ].\x0a\x09aNode dagChildren do: [ :each | each receiver: receiver ].\x0a\x0a\x09aNode dagChildren allButLast do: [ :each |\x0a\x09\x09self addToSequence: (self visit: each) ].\x0a\x0a\x09^ self visit: aNode dagChildren last",
- referencedClasses: ["VariableNode"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["receiver", "ifFalse:", "isIdempotent", "alias:", "binding:", "new", "variable", "do:", "dagChildren", "receiver:", "allButLast", "addToSequence:", "visit:", "last"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var receiver;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- receiver=$recv(aNode)._receiver();
- if(!$core.assert($recv(receiver)._isIdempotent())){
- var alias;
- alias=$self._alias_(receiver);
- receiver=$recv($recv($globals.VariableNode)._new())._binding_($recv(alias)._variable());
- receiver;
- }
- [$recv([$recv(aNode)._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=1
- //>>excludeEnd("ctx");
- ][0])._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._receiver_(receiver);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($recv([$recv(aNode)._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=2
- //>>excludeEnd("ctx");
- ][0])._allButLast())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._addToSequence_([$self._visit_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["visit:"]=1
- //>>excludeEnd("ctx");
- ][0]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return $self._visit_($recv($recv(aNode)._dagChildren())._last());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitCascadeNode:",{aNode:aNode,receiver:receiver})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitDynamicArrayNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitDynamicArrayNode: aNode\x0a\x09| array |\x0a\x09array := IRDynamicArray new.\x0a\x09(self aliasTemporally: aNode dagChildren) do: [ :each | array add: each ].\x0a\x09^ array",
- referencedClasses: ["IRDynamicArray"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "do:", "aliasTemporally:", "dagChildren", "add:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var array;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- array=$recv($globals.IRDynamicArray)._new();
- $recv($self._aliasTemporally_($recv(aNode)._dagChildren()))._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(array)._add_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return array;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode,array:array})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitDynamicDictionaryNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitDynamicDictionaryNode: aNode\x0a\x09| dictionary |\x0a\x09dictionary := IRDynamicDictionary new.\x0a\x09(self aliasTemporally: aNode dagChildren) do: [ :each | dictionary add: each ].\x0a\x09^ dictionary",
- referencedClasses: ["IRDynamicDictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "do:", "aliasTemporally:", "dagChildren", "add:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var dictionary;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- dictionary=$recv($globals.IRDynamicDictionary)._new();
- $recv($self._aliasTemporally_($recv(aNode)._dagChildren()))._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(dictionary)._add_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return dictionary;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode,dictionary:dictionary})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitJSStatementNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitJSStatementNode: aNode\x0a\x09^ IRVerbatim new\x0a\x09\x09source: aNode source crlfSanitized;\x0a\x09\x09yourself",
- referencedClasses: ["IRVerbatim"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["source:", "new", "crlfSanitized", "source", "yourself"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.IRVerbatim)._new();
- $recv($1)._source_($recv($recv(aNode)._source())._crlfSanitized());
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitMethodNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitMethodNode: aNode\x0a\x09| irSequence |\x0a\x0a\x09self method: (IRMethod new\x0a\x09\x09source: self source;\x0a\x09\x09pragmas: (aNode pragmas collect: [ :each |\x0a\x09\x09\x09Message\x0a\x09\x09\x09\x09selector: each selector\x0a\x09\x09\x09\x09arguments: (each arguments collect: [ :eachArg |\x0a\x09\x09\x09\x09\x09eachArg isString ifTrue: [ eachArg crlfSanitized ] ifFalse: [ eachArg ]])]);\x0a\x09\x09theClass: self theClass;\x0a\x09\x09arguments: aNode arguments;\x0a\x09\x09selector: aNode selector;\x0a\x09\x09sendIndexes: aNode sendIndexes;\x0a\x09\x09requiresSmalltalkContext: aNode requiresSmalltalkContext;\x0a\x09\x09classReferences: aNode classReferences;\x0a\x09\x09scope: aNode scope;\x0a\x09\x09yourself).\x0a\x0a\x09aNode scope temps do: [ :each |\x0a\x09\x09self method add: (IRTempDeclaration new\x0a\x09\x09\x09name: each name;\x0a\x09\x09\x09scope: aNode scope;\x0a\x09\x09\x09yourself) ].\x0a\x0a\x09self method add: (irSequence := self visit: aNode sequenceNode).\x0a\x0a\x09aNode scope hasLocalReturn ifFalse: [ irSequence\x0a\x09\x09add: (IRReturn new\x0a\x09\x09\x09add: (IRVariable new\x0a\x09\x09\x09\x09variable: (aNode scope pseudoVars at: 'self');\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself) ].\x0a\x0a\x09^ self method",
- referencedClasses: ["IRMethod", "Message", "IRTempDeclaration", "IRReturn", "IRVariable"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["method:", "source:", "new", "source", "pragmas:", "collect:", "pragmas", "selector:arguments:", "selector", "arguments", "ifTrue:ifFalse:", "isString", "crlfSanitized", "theClass:", "theClass", "arguments:", "selector:", "sendIndexes:", "sendIndexes", "requiresSmalltalkContext:", "requiresSmalltalkContext", "classReferences:", "classReferences", "scope:", "scope", "yourself", "do:", "temps", "add:", "method", "name:", "name", "visit:", "sequenceNode", "ifFalse:", "hasLocalReturn", "variable:", "at:", "pseudoVars"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var irSequence;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3,$4,$5,$6,$7;
- $1=[$recv($globals.IRMethod)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._source_($self._source());
- $recv($1)._pragmas_([$recv($recv(aNode)._pragmas())._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.Message)._selector_arguments_([$recv(each)._selector()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["selector"]=1
- //>>excludeEnd("ctx");
- ][0],$recv([$recv(each)._arguments()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["arguments"]=1
- //>>excludeEnd("ctx");
- ][0])._collect_((function(eachArg){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(eachArg)._isString())){
- return $recv(eachArg)._crlfSanitized();
- } else {
- return eachArg;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({eachArg:eachArg},$ctx2,2)});
- //>>excludeEnd("ctx");
- })));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collect:"]=1
- //>>excludeEnd("ctx");
- ][0]);
- $recv($1)._theClass_($self._theClass());
- $recv($1)._arguments_($recv(aNode)._arguments());
- $recv($1)._selector_($recv(aNode)._selector());
- $recv($1)._sendIndexes_($recv(aNode)._sendIndexes());
- $recv($1)._requiresSmalltalkContext_($recv(aNode)._requiresSmalltalkContext());
- $recv($1)._classReferences_($recv(aNode)._classReferences());
- [$recv($1)._scope_([$recv(aNode)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._method_([$recv($1)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0]);
- $recv($recv([$recv(aNode)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=2
- //>>excludeEnd("ctx");
- ][0])._temps())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $2=[$self._method()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["method"]=1
- //>>excludeEnd("ctx");
- ][0];
- $3=[$recv($globals.IRTempDeclaration)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($3)._name_($recv(each)._name());
- $recv($3)._scope_([$recv(aNode)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["scope"]=3
- //>>excludeEnd("ctx");
- ][0]);
- return [$recv($2)._add_([$recv($3)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["yourself"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,5)});
- //>>excludeEnd("ctx");
- }));
- $4=[$self._method()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["method"]=2
- //>>excludeEnd("ctx");
- ][0];
- irSequence=$self._visit_($recv(aNode)._sequenceNode());
- [$recv($4)._add_(irSequence)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=2
- //>>excludeEnd("ctx");
- ][0];
- if(!$core.assert($recv([$recv(aNode)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=4
- //>>excludeEnd("ctx");
- ][0])._hasLocalReturn())){
- $5=irSequence;
- $6=[$recv($globals.IRReturn)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0];
- $7=$recv($globals.IRVariable)._new();
- $recv($7)._variable_($recv($recv($recv(aNode)._scope())._pseudoVars())._at_("self"));
- $recv($6)._add_([$recv($7)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=3
- //>>excludeEnd("ctx");
- ][0]);
- [$recv($5)._add_($recv($6)._yourself())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=3
- //>>excludeEnd("ctx");
- ][0];
- }
- return $self._method();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitMethodNode:",{aNode:aNode,irSequence:irSequence})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitReturnNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitReturnNode: aNode\x0a\x09^ (aNode nonLocalReturn\x0a\x09\x09ifTrue: [ IRNonLocalReturn new ]\x0a\x09\x09ifFalse: [ IRReturn new ])\x0a\x09\x09scope: aNode scope;\x0a\x09\x09add: (self visit: aNode expression);\x0a\x09\x09yourself",
- referencedClasses: ["IRNonLocalReturn", "IRReturn"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["scope:", "ifTrue:ifFalse:", "nonLocalReturn", "new", "scope", "add:", "visit:", "expression", "yourself"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- if($core.assert($recv(aNode)._nonLocalReturn())){
- $1=[$recv($globals.IRNonLocalReturn)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- $1=$recv($globals.IRReturn)._new();
- }
- $recv($1)._scope_($recv(aNode)._scope());
- $recv($1)._add_($self._visit_($recv(aNode)._expression()));
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitSendNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitSendNode: aNode\x0a\x09| send |\x0a\x09send := IRSend new.\x0a\x09send\x0a\x09\x09selector: aNode selector;\x0a\x09\x09javaScriptSelector: aNode javaScriptSelector;\x0a\x09\x09argumentSwitcher: aNode argumentSwitcher;\x0a\x09\x09index: aNode index.\x0a\x09\x0a\x09(self aliasTemporally: aNode dagChildren) do: [ :each | send add: each ].\x0a\x0a\x09^ send",
- referencedClasses: ["IRSend"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "selector:", "selector", "javaScriptSelector:", "javaScriptSelector", "argumentSwitcher:", "argumentSwitcher", "index:", "index", "do:", "aliasTemporally:", "dagChildren", "add:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var send;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- send=$recv($globals.IRSend)._new();
- $1=send;
- $recv($1)._selector_($recv(aNode)._selector());
- $recv($1)._javaScriptSelector_($recv(aNode)._javaScriptSelector());
- $recv($1)._argumentSwitcher_($recv(aNode)._argumentSwitcher());
- $recv($1)._index_($recv(aNode)._index());
- $recv($self._aliasTemporally_($recv(aNode)._dagChildren()))._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(send)._add_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return send;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode,send:send})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitSequenceNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitSequenceNode: aNode\x0a\x09^ self\x0a\x09\x09withSequence: IRSequence new\x0a\x09\x09do: [ aNode dagChildren do: [ :each |\x0a\x09\x09\x09self addToSequence: (self visit: each) ] ]",
- referencedClasses: ["IRSequence"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["withSequence:do:", "new", "do:", "dagChildren", "addToSequence:", "visit:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._withSequence_do_($recv($globals.IRSequence)._new(),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv(aNode)._dagChildren())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._addToSequence_($self._visit_(each));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitValueNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitValueNode: aNode\x0a\x09^ IRValue new\x0a\x09\x09value: aNode value;\x0a\x09\x09yourself",
- referencedClasses: ["IRValue"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:", "new", "value", "yourself"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.IRValue)._new();
- $recv($1)._value_($recv(aNode)._value());
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitVariableNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitVariableNode: aNode\x0a\x09^ IRVariable new\x0a\x09\x09variable: aNode binding;\x0a\x09\x09yourself",
- referencedClasses: ["IRVariable"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["variable:", "new", "binding", "yourself"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.IRVariable)._new();
- $recv($1)._variable_($recv(aNode)._binding());
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addMethod(
- $core.method({
- selector: "withSequence:do:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aSequence", "aBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["sequence", "sequence:", "value"]
- }, function ($methodClass){ return function (aSequence,aBlock){
- var self=this,$self=this;
- var outerSequence;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- outerSequence=$self._sequence();
- [$self._sequence_(aSequence)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sequence:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aBlock)._value();
- $self._sequence_(outerSequence);
- return aSequence;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"withSequence:do:",{aSequence:aSequence,aBlock:aBlock,outerSequence:outerSequence})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRASTTranslator);
- $core.addClass("IRAliasFactory", $globals.Object, "Compiler-IR");
- $core.setSlots($globals.IRAliasFactory, ["counter"]);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x09counter := 0",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.counter=(0);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRAliasFactory);
- $core.addMethod(
- $core.method({
- selector: "next",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "next\x0a\x09counter := counter + 1.\x0a\x09^ AliasVar new\x0a\x09\x09name: '$', counter asString;\x0a\x09\x09yourself",
- referencedClasses: ["AliasVar"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["+", "name:", "new", ",", "asString", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self.counter=$recv($self.counter).__plus((1));
- $1=$recv($globals.AliasVar)._new();
- $recv($1)._name_("$".__comma($recv($self.counter)._asString()));
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"next",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRAliasFactory);
- $core.addClass("IRInstruction", $globals.DagParentNode, "Compiler-IR");
- $core.setSlots($globals.IRInstruction, ["parent"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "add:",
- protocol: "building",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "add: anObject\x0a\x09^ self addDagChild: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addDagChild:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._addDagChild_(anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"add:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "asReceiver",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asReceiver\x0a\x09\x22Return customized form to act as receiver.\x0a\x09Return self to use standard $recv(...) boxing.\x22\x0a\x09^ nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return nil;
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "isClosure",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isClosure\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "isInlined",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isInlined\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "isMethod",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isMethod\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "isSend",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSend\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "isSequence",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSequence\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "isSuper",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSuper\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "isTempDeclaration",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isTempDeclaration\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "isVariable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isVariable\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "method",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "method\x0a\x09^ self parent method",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["method", "parent"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._parent())._method();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"method",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "needsBoxingAsReceiver",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "needsBoxingAsReceiver\x0a\x09self deprecatedAPI: 'Use asReceiver isNil instead.'.\x0a\x09^ self asReceiver isNil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deprecatedAPI:", "isNil", "asReceiver"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deprecatedAPI_("Use asReceiver isNil instead.");
- return $recv($self._asReceiver())._isNil();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"needsBoxingAsReceiver",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "parent",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "parent\x0a\x09^ parent",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.parent;
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "parent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction"],
- source: "parent: anIRInstruction\x0a\x09parent := anIRInstruction",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anIRInstruction){
- var self=this,$self=this;
- $self.parent=anIRInstruction;
- return self;
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "remove:",
- protocol: "building",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction"],
- source: "remove: anIRInstruction\x0a\x09self dagChildren remove: anIRInstruction",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["remove:", "dagChildren"]
- }, function ($methodClass){ return function (anIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._dagChildren())._remove_(anIRInstruction);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"remove:",{anIRInstruction:anIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "replace:with:",
- protocol: "building",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction", "anotherIRInstruction"],
- source: "replace: anIRInstruction with: anotherIRInstruction\x0a\x09anotherIRInstruction parent: self.\x0a\x09self dagChildren\x0a\x09\x09at: (self dagChildren indexOf: anIRInstruction)\x0a\x09\x09put: anotherIRInstruction",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parent:", "at:put:", "dagChildren", "indexOf:"]
- }, function ($methodClass){ return function (anIRInstruction,anotherIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(anotherIRInstruction)._parent_(self);
- $recv([$self._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=1
- //>>excludeEnd("ctx");
- ][0])._at_put_($recv($self._dagChildren())._indexOf_(anIRInstruction),anotherIRInstruction);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"replace:with:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "replaceWith:",
- protocol: "building",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction"],
- source: "replaceWith: anIRInstruction\x0a\x09self parent replace: self with: anIRInstruction",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["replace:with:", "parent"]
- }, function ($methodClass){ return function (anIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._parent())._replace_with_(self,anIRInstruction);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"replaceWith:",{anIRInstruction:anIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "scope",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "scope\x0a\x09^ self parent ifNotNil: [ :node | \x0a\x09\x09node scope ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "parent", "scope"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._parent();
- if($1 == null || $1.a$nil){
- return $1;
- } else {
- var node;
- node=$1;
- return $recv(node)._scope();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"scope",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "yieldsValue",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "yieldsValue\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.IRInstruction);
- $core.addMethod(
- $core.method({
- selector: "on:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBuilder"],
- source: "on: aBuilder\x0a\x09^ self new\x0a\x09\x09builder: aBuilder;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["builder:", "new", "yourself"]
- }, function ($methodClass){ return function (aBuilder){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._builder_(aBuilder);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:",{aBuilder:aBuilder})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInstruction.a$cls);
- $core.addClass("IRAssignment", $globals.IRInstruction, "Compiler-IR");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRAssignment: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRAssignment:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitIRAssignment_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRAssignment);
- $core.addMethod(
- $core.method({
- selector: "left",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "left\x0a\x09^ self dagChildren first",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["first", "dagChildren"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._dagChildren())._first();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"left",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRAssignment);
- $core.addMethod(
- $core.method({
- selector: "right",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "right\x0a\x09^ self dagChildren last",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["last", "dagChildren"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._dagChildren())._last();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"right",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRAssignment);
- $core.addClass("IRDynamicArray", $globals.IRInstruction, "Compiler-IR");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRDynamicArray: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRDynamicArray:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitIRDynamicArray_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRDynamicArray);
- $core.addClass("IRDynamicDictionary", $globals.IRInstruction, "Compiler-IR");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRDynamicDictionary: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRDynamicDictionary:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitIRDynamicDictionary_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRDynamicDictionary);
- $core.addClass("IRScopedInstruction", $globals.IRInstruction, "Compiler-IR");
- $core.setSlots($globals.IRScopedInstruction, ["scope"]);
- $core.addMethod(
- $core.method({
- selector: "scope",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "scope\x0a\x09^ scope",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.scope;
- }; }),
- $globals.IRScopedInstruction);
- $core.addMethod(
- $core.method({
- selector: "scope:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aScope"],
- source: "scope: aScope\x0a\x09scope := aScope",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aScope){
- var self=this,$self=this;
- $self.scope=aScope;
- return self;
- }; }),
- $globals.IRScopedInstruction);
- $core.addClass("IRClosureInstruction", $globals.IRScopedInstruction, "Compiler-IR");
- $core.setSlots($globals.IRClosureInstruction, ["arguments", "requiresSmalltalkContext"]);
- $core.addMethod(
- $core.method({
- selector: "arguments",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "arguments\x0a\x09^ arguments ifNil: [ #() ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.arguments;
- if($1 == null || $1.a$nil){
- return [];
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"arguments",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRClosureInstruction);
- $core.addMethod(
- $core.method({
- selector: "arguments:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "arguments: aCollection\x0a\x09arguments := aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- $self.arguments=aCollection;
- return self;
- }; }),
- $globals.IRClosureInstruction);
- $core.addMethod(
- $core.method({
- selector: "locals",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "locals\x0a\x09^ self arguments, (self tempDeclarations collect: [ :each | each name ])",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "arguments", "collect:", "tempDeclarations", "name"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._arguments()).__comma($recv($self._tempDeclarations())._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._name();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- })));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"locals",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRClosureInstruction);
- $core.addMethod(
- $core.method({
- selector: "requiresSmalltalkContext",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "requiresSmalltalkContext\x0a\x09^ requiresSmalltalkContext ifNil: [ false ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.requiresSmalltalkContext;
- if($1 == null || $1.a$nil){
- return false;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"requiresSmalltalkContext",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRClosureInstruction);
- $core.addMethod(
- $core.method({
- selector: "requiresSmalltalkContext:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "requiresSmalltalkContext: anObject\x0a\x09requiresSmalltalkContext := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.requiresSmalltalkContext=anObject;
- return self;
- }; }),
- $globals.IRClosureInstruction);
- $core.addMethod(
- $core.method({
- selector: "scope:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aScope"],
- source: "scope: aScope\x0a\x09super scope: aScope.\x0a\x09aScope instruction: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["scope:", "instruction:"]
- }, function ($methodClass){ return function (aScope){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._scope_.call($self,aScope))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $recv(aScope)._instruction_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"scope:",{aScope:aScope})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRClosureInstruction);
- $core.addMethod(
- $core.method({
- selector: "tempDeclarations",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "tempDeclarations\x0a\x09^ self dagChildren select: [ :each |\x0a\x09\x09each isTempDeclaration ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["select:", "dagChildren", "isTempDeclaration"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._dagChildren())._select_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._isTempDeclaration();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"tempDeclarations",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRClosureInstruction);
- $core.addClass("IRClosure", $globals.IRClosureInstruction, "Compiler-IR");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRClosure: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRClosure:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitIRClosure_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRClosure);
- $core.addMethod(
- $core.method({
- selector: "isClosure",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isClosure\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.IRClosure);
- $core.addMethod(
- $core.method({
- selector: "sequence",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sequence\x0a\x09^ self dagChildren last",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["last", "dagChildren"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._dagChildren())._last();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sequence",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRClosure);
- $core.addClass("IRMethod", $globals.IRClosureInstruction, "Compiler-IR");
- $core.setSlots($globals.IRMethod, ["theClass", "source", "compiledSource", "attachments", "selector", "pragmas", "classReferences", "sendIndexes", "internalVariables", "aliasFactory"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRMethod.comment="I am a method instruction";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRMethod: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRMethod:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitIRMethod_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "aliasFactory",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "aliasFactory\x0a\x09^ aliasFactory ifNil: [ aliasFactory := IRAliasFactory new ]",
- referencedClasses: ["IRAliasFactory"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.aliasFactory;
- if($1 == null || $1.a$nil){
- $self.aliasFactory=$recv($globals.IRAliasFactory)._new();
- return $self.aliasFactory;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"aliasFactory",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "attachments",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "attachments\x0a\x09^ attachments ifNil: [ attachments := #{} ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.attachments;
- if($1 == null || $1.a$nil){
- $self.attachments=$globals.HashedCollection._newFromPairs_([]);
- return $self.attachments;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"attachments",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "classReferences",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classReferences\x0a\x09^ classReferences",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.classReferences;
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "classReferences:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "classReferences: aCollection\x0a\x09classReferences := aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- $self.classReferences=aCollection;
- return self;
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "compiledSource",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "compiledSource\x0a\x09^ compiledSource",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.compiledSource;
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "compiledSource:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "compiledSource: anObject\x0a\x09compiledSource := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.compiledSource=anObject;
- return self;
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "internalVariables",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "internalVariables\x0a\x09^ internalVariables ifNil: [ internalVariables := Set new ]",
- referencedClasses: ["Set"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.internalVariables;
- if($1 == null || $1.a$nil){
- $self.internalVariables=$recv($globals.Set)._new();
- return $self.internalVariables;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"internalVariables",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "isMethod",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isMethod\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "messageSends",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "messageSends\x0a\x09^ self sendIndexes keys",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["keys", "sendIndexes"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._sendIndexes())._keys();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"messageSends",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "method",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "method\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "newAliasingOf:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction"],
- source: "newAliasingOf: anIRInstruction\x0a\x09| variable |\x0a\x0a\x09variable := IRVariable new\x0a\x09\x09variable: self aliasFactory next;\x0a\x09\x09yourself.\x0a\x0a\x09self internalVariables add: variable.\x0a\x0a\x09^ IRAssignment new\x0a\x09\x09add: variable;\x0a\x09\x09add: anIRInstruction;\x0a\x09\x09yourself",
- referencedClasses: ["IRVariable", "IRAssignment"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["variable:", "new", "next", "aliasFactory", "yourself", "add:", "internalVariables"]
- }, function ($methodClass){ return function (anIRInstruction){
- var self=this,$self=this;
- var variable;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=[$recv($globals.IRVariable)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._variable_($recv($self._aliasFactory())._next());
- variable=[$recv($1)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($self._internalVariables())._add_(variable)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $2=$recv($globals.IRAssignment)._new();
- [$recv($2)._add_(variable)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._add_(anIRInstruction);
- return $recv($2)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newAliasingOf:",{anIRInstruction:anIRInstruction,variable:variable})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "pragmas",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "pragmas\x0a\x09^ pragmas",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.pragmas;
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "pragmas:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "pragmas: aCollection\x0a\x09pragmas := aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- $self.pragmas=aCollection;
- return self;
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "selector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "selector\x0a\x09^ selector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.selector;
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "selector:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "selector: aString\x0a\x09selector := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.selector=aString;
- return self;
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "sendIndexes",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sendIndexes\x0a\x09^ sendIndexes",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.sendIndexes;
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "sendIndexes:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDictionary"],
- source: "sendIndexes: aDictionary\x0a\x09sendIndexes := aDictionary",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aDictionary){
- var self=this,$self=this;
- $self.sendIndexes=aDictionary;
- return self;
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "source",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "source\x0a\x09^ source",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.source;
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "source:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "source: aString\x0a\x09source := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.source=aString;
- return self;
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "theClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theClass\x0a\x09^ theClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.theClass;
- }; }),
- $globals.IRMethod);
- $core.addMethod(
- $core.method({
- selector: "theClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "theClass: aClass\x0a\x09theClass := aClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- $self.theClass=aClass;
- return self;
- }; }),
- $globals.IRMethod);
- $core.addClass("IRReturn", $globals.IRScopedInstruction, "Compiler-IR");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRReturn.comment="I am a local return instruction.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRReturn: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRReturn:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitIRReturn_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRReturn);
- $core.addMethod(
- $core.method({
- selector: "expression",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "expression\x0a\x09^ self dagChildren single",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["single", "dagChildren"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._dagChildren())._single();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"expression",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRReturn);
- $core.addMethod(
- $core.method({
- selector: "scope",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "scope\x0a\x09^ scope ifNil: [ self parent scope ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "scope", "parent"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.scope;
- if($1 == null || $1.a$nil){
- return $recv($self._parent())._scope();
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"scope",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRReturn);
- $core.addMethod(
- $core.method({
- selector: "yieldsValue",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "yieldsValue\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.IRReturn);
- $core.addClass("IRBlockReturn", $globals.IRReturn, "Compiler-IR");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRBlockReturn.comment="Smalltalk blocks return their last statement. I am a implicit block return instruction.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRBlockReturn: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRBlockReturn:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitIRBlockReturn_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRBlockReturn);
- $core.addClass("IRNonLocalReturn", $globals.IRReturn, "Compiler-IR");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRNonLocalReturn: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRNonLocalReturn:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitIRNonLocalReturn_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRNonLocalReturn);
- $core.addClass("IRTempDeclaration", $globals.IRScopedInstruction, "Compiler-IR");
- $core.setSlots($globals.IRTempDeclaration, ["name"]);
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRTempDeclaration: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRTempDeclaration:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitIRTempDeclaration_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRTempDeclaration);
- $core.addMethod(
- $core.method({
- selector: "isTempDeclaration",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isTempDeclaration\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.IRTempDeclaration);
- $core.addMethod(
- $core.method({
- selector: "name",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "name\x0a\x09^ name",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.name;
- }; }),
- $globals.IRTempDeclaration);
- $core.addMethod(
- $core.method({
- selector: "name:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "name: aString\x0a\x09name := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.name=aString;
- return self;
- }; }),
- $globals.IRTempDeclaration);
- $core.addClass("IRSend", $globals.IRInstruction, "Compiler-IR");
- $core.setSlots($globals.IRSend, ["selector", "javaScriptSelector", "argumentSwitcher", "index"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRSend.comment="I am a message send instruction.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRSend: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRSend:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitIRSend_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSend);
- $core.addMethod(
- $core.method({
- selector: "argumentSwitcher",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "argumentSwitcher\x0a\x09^ argumentSwitcher",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.argumentSwitcher;
- }; }),
- $globals.IRSend);
- $core.addMethod(
- $core.method({
- selector: "argumentSwitcher:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aJSFunction"],
- source: "argumentSwitcher: aJSFunction\x0a\x09argumentSwitcher := aJSFunction",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aJSFunction){
- var self=this,$self=this;
- $self.argumentSwitcher=aJSFunction;
- return self;
- }; }),
- $globals.IRSend);
- $core.addMethod(
- $core.method({
- selector: "arguments",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "arguments\x0a\x09^ self dagChildren allButFirst",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["allButFirst", "dagChildren"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._dagChildren())._allButFirst();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"arguments",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSend);
- $core.addMethod(
- $core.method({
- selector: "index",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "index\x0a\x09^ index",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.index;
- }; }),
- $globals.IRSend);
- $core.addMethod(
- $core.method({
- selector: "index:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- source: "index: anInteger\x0a\x09index := anInteger",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- $self.index=anInteger;
- return self;
- }; }),
- $globals.IRSend);
- $core.addMethod(
- $core.method({
- selector: "isSend",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSend\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.IRSend);
- $core.addMethod(
- $core.method({
- selector: "javaScriptSelector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "javaScriptSelector\x0a\x09^ javaScriptSelector ifNil: [ javaScriptSelector := self selector asJavaScriptMethodName ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "asJavaScriptMethodName", "selector"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.javaScriptSelector;
- if($1 == null || $1.a$nil){
- $self.javaScriptSelector=$recv($self._selector())._asJavaScriptMethodName();
- return $self.javaScriptSelector;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"javaScriptSelector",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSend);
- $core.addMethod(
- $core.method({
- selector: "javaScriptSelector:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "javaScriptSelector: aString\x0a\x09javaScriptSelector := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.javaScriptSelector=aString;
- return self;
- }; }),
- $globals.IRSend);
- $core.addMethod(
- $core.method({
- selector: "receiver",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "receiver\x0a\x09^ self dagChildren first",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["first", "dagChildren"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._dagChildren())._first();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"receiver",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSend);
- $core.addMethod(
- $core.method({
- selector: "selector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "selector\x0a\x09^ selector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.selector;
- }; }),
- $globals.IRSend);
- $core.addMethod(
- $core.method({
- selector: "selector:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "selector: aString\x0a\x09selector := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.selector=aString;
- return self;
- }; }),
- $globals.IRSend);
- $core.addClass("IRSequence", $globals.IRInstruction, "Compiler-IR");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRSequence: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRSequence:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitIRSequence_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSequence);
- $core.addMethod(
- $core.method({
- selector: "isSequence",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSequence\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.IRSequence);
- $core.addClass("IRBlockSequence", $globals.IRSequence, "Compiler-IR");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRBlockSequence: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRBlockSequence:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitIRBlockSequence_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRBlockSequence);
- $core.addClass("IRValue", $globals.IRInstruction, "Compiler-IR");
- $core.setSlots($globals.IRValue, ["value"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRValue.comment="I am the simplest possible instruction. I represent a value.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRValue: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRValue:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitIRValue_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRValue);
- $core.addMethod(
- $core.method({
- selector: "asReceiver",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asReceiver\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.IRValue);
- $core.addMethod(
- $core.method({
- selector: "value",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "value\x0a\x09^ value",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.value;
- }; }),
- $globals.IRValue);
- $core.addMethod(
- $core.method({
- selector: "value:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "value: aString\x0a\x09value := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.value=aString;
- return self;
- }; }),
- $globals.IRValue);
- $core.addClass("IRVariable", $globals.IRInstruction, "Compiler-IR");
- $core.setSlots($globals.IRVariable, ["variable"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRVariable.comment="I am a variable instruction.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRVariable: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRVariable:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitIRVariable_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVariable);
- $core.addMethod(
- $core.method({
- selector: "asReceiver",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asReceiver\x0a\x09self variable asReceiver\x0a\x09\x09ifNil: [ ^ super asReceiver ]\x0a\x09\x09ifNotNil: [ :receiverVar |\x0a\x09\x09\x09self variable == receiverVar ifTrue: [ ^ self ].\x0a\x09\x09\x09^ self copy variable: receiverVar; yourself ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:ifNotNil:", "asReceiver", "variable", "ifTrue:", "==", "variable:", "copy", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=[$recv([$self._variable()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["variable"]=1
- //>>excludeEnd("ctx");
- ][0])._asReceiver()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asReceiver"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._asReceiver.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- } else {
- var receiverVar;
- receiverVar=$1;
- if($core.assert($recv($self._variable()).__eq_eq(receiverVar))){
- return self;
- }
- $2=$self._copy();
- $recv($2)._variable_(receiverVar);
- return $recv($2)._yourself();
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asReceiver",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVariable);
- $core.addMethod(
- $core.method({
- selector: "isSuper",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSuper\x0a\x09^ self variable isSuper",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["isSuper", "variable"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._variable())._isSuper();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isSuper",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVariable);
- $core.addMethod(
- $core.method({
- selector: "isVariable",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isVariable\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.IRVariable);
- $core.addMethod(
- $core.method({
- selector: "variable",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "variable\x0a\x09^ variable",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.variable;
- }; }),
- $globals.IRVariable);
- $core.addMethod(
- $core.method({
- selector: "variable:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aScopeVariable"],
- source: "variable: aScopeVariable\x0a\x09variable := aScopeVariable",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aScopeVariable){
- var self=this,$self=this;
- $self.variable=aScopeVariable;
- return self;
- }; }),
- $globals.IRVariable);
- $core.addClass("IRVerbatim", $globals.IRInstruction, "Compiler-IR");
- $core.setSlots($globals.IRVerbatim, ["source"]);
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09^ aVisitor visitIRVerbatim: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRVerbatim:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aVisitor)._visitIRVerbatim_(self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVerbatim);
- $core.addMethod(
- $core.method({
- selector: "source",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "source\x0a\x09^ source",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.source;
- }; }),
- $globals.IRVerbatim);
- $core.addMethod(
- $core.method({
- selector: "source:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "source: aString\x0a\x09source := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.source=aString;
- return self;
- }; }),
- $globals.IRVerbatim);
- $core.addClass("IRPragmator", $globals.Object, "Compiler-IR");
- $core.setSlots($globals.IRPragmator, ["irMethod"]);
- $core.addMethod(
- $core.method({
- selector: "irMethod",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "irMethod\x0a\x09^ irMethod",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.irMethod;
- }; }),
- $globals.IRPragmator);
- $core.addMethod(
- $core.method({
- selector: "irMethod:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "irMethod: anObject\x0a\x09irMethod := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.irMethod=anObject;
- return self;
- }; }),
- $globals.IRPragmator);
- $core.addMethod(
- $core.method({
- selector: "value:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRMethod"],
- source: "value: anIRMethod\x0a\x09self irMethod: anIRMethod.\x0a\x09self processPragmas: anIRMethod pragmas.\x0a\x09^ anIRMethod",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["irMethod:", "processPragmas:", "pragmas"]
- }, function ($methodClass){ return function (anIRMethod){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._irMethod_(anIRMethod);
- $self._processPragmas_($recv(anIRMethod)._pragmas());
- return anIRMethod;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:",{anIRMethod:anIRMethod})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRPragmator);
- $core.addClass("IRLatePragmator", $globals.IRPragmator, "Compiler-IR");
- $core.addMethod(
- $core.method({
- selector: "jsOverride:",
- protocol: "pragmas",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "jsOverride: aString\x0a\x09self irMethod arguments ifNotEmpty: [\x0a\x09\x09CompilerError signal: 'Must use <jsOverride:> in unary method.' ].\x0a\x09self irMethod attachments\x0a\x09\x09at: aString\x0a\x09\x09put: (NativeFunction\x0a\x09\x09\x09constructorNamed: #Function\x0a\x09\x09\x09value: 'return this.', irMethod selector asJavaScriptMethodName, '()')",
- referencedClasses: ["CompilerError", "NativeFunction"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotEmpty:", "arguments", "irMethod", "signal:", "at:put:", "attachments", "constructorNamed:value:", ",", "asJavaScriptMethodName", "selector"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv([$self._irMethod()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["irMethod"]=1
- //>>excludeEnd("ctx");
- ][0])._arguments())._ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.CompilerError)._signal_("Must use <jsOverride:> in unary method.");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv($recv($self._irMethod())._attachments())._at_put_(aString,$recv($globals.NativeFunction)._constructorNamed_value_("Function",[$recv("return this.".__comma($recv($recv($self.irMethod)._selector())._asJavaScriptMethodName())).__comma("()")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"jsOverride:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRLatePragmator);
- $core.addMethod(
- $core.method({
- selector: "jsOverride:args:",
- protocol: "pragmas",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aCollection"],
- source: "jsOverride: aString args: aCollection\x0a\x09| myArgs |\x0a\x09myArgs := self irMethod arguments.\x0a\x09myArgs size = aCollection size ifFalse: [\x0a\x09\x09CompilerError signal: 'Should have ', self irMethod arguments size asString, ' args in <jsOverride:args:>.' ].\x0a\x09myArgs asSet = aCollection asSet ifFalse: [\x0a\x09\x09CompilerError signal: 'Argument mismatch in <jsOverride:args:>.' ].\x0a\x09self irMethod attachments\x0a\x09\x09at: aString\x0a\x09\x09put: (NativeFunction\x0a\x09\x09\x09constructorNamed: #Function\x0a\x09\x09\x09value: (',' join: aCollection)\x0a\x09\x09\x09value: 'return this.', irMethod selector asJavaScriptMethodName, '(', (',' join: myArgs), ')')",
- referencedClasses: ["CompilerError", "NativeFunction"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["arguments", "irMethod", "ifFalse:", "=", "size", "signal:", ",", "asString", "asSet", "at:put:", "attachments", "constructorNamed:value:value:", "join:", "asJavaScriptMethodName", "selector"]
- }, function ($methodClass){ return function (aString,aCollection){
- var self=this,$self=this;
- var myArgs;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- myArgs=[$recv([$self._irMethod()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["irMethod"]=1
- //>>excludeEnd("ctx");
- ][0])._arguments()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["arguments"]=1
- //>>excludeEnd("ctx");
- ][0];
- if(!$core.assert([$recv([$recv(myArgs)._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq([$recv(aCollection)._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])){
- [$recv($globals.CompilerError)._signal_([$recv(["Should have ".__comma($recv($recv($recv([$self._irMethod()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["irMethod"]=2
- //>>excludeEnd("ctx");
- ][0])._arguments())._size())._asString())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(" args in <jsOverride:args:>.")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["signal:"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- if(!$core.assert($recv([$recv(myArgs)._asSet()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asSet"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv(aCollection)._asSet()))){
- $recv($globals.CompilerError)._signal_("Argument mismatch in <jsOverride:args:>.");
- }
- $recv($recv($self._irMethod())._attachments())._at_put_(aString,$recv($globals.NativeFunction)._constructorNamed_value_value_("Function",[","._join_(aCollection)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["join:"]=1
- //>>excludeEnd("ctx");
- ][0],[$recv([$recv([$recv("return this.".__comma($recv($recv($self.irMethod)._selector())._asJavaScriptMethodName())).__comma("(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=5
- //>>excludeEnd("ctx");
- ][0]).__comma(","._join_(myArgs))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=4
- //>>excludeEnd("ctx");
- ][0]).__comma(")")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0]));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"jsOverride:args:",{aString:aString,aCollection:aCollection,myArgs:myArgs})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRLatePragmator);
- $core.addClass("IRVisitor", $globals.ParentFakingPathDagVisitor, "Compiler-IR");
- $core.addMethod(
- $core.method({
- selector: "visitDagNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitDagNode: aNode\x0a\x09^ self visitDagNodeVariantSimple: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNodeVariantSimple:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNodeVariantSimple_(aNode);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitDagNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRAssignment:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRAssignment"],
- source: "visitIRAssignment: anIRAssignment\x0a\x09^ self visitDagNode: anIRAssignment",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (anIRAssignment){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(anIRAssignment);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRBlockReturn:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRBlockReturn"],
- source: "visitIRBlockReturn: anIRBlockReturn\x0a\x09^ self visitIRReturn: anIRBlockReturn",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRReturn:"]
- }, function ($methodClass){ return function (anIRBlockReturn){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitIRReturn_(anIRBlockReturn);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRBlockReturn:",{anIRBlockReturn:anIRBlockReturn})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRBlockSequence:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRBlockSequence"],
- source: "visitIRBlockSequence: anIRBlockSequence\x0a\x09^ self visitIRSequence: anIRBlockSequence",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRSequence:"]
- }, function ($methodClass){ return function (anIRBlockSequence){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitIRSequence_(anIRBlockSequence);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRBlockSequence:",{anIRBlockSequence:anIRBlockSequence})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRClosure:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRClosure"],
- source: "visitIRClosure: anIRClosure\x0a\x09^ self visitDagNode: anIRClosure",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (anIRClosure){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(anIRClosure);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRClosure:",{anIRClosure:anIRClosure})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRDynamicArray:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRDynamicArray"],
- source: "visitIRDynamicArray: anIRDynamicArray\x0a\x09^ self visitDagNode: anIRDynamicArray",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (anIRDynamicArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(anIRDynamicArray);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRDynamicArray:",{anIRDynamicArray:anIRDynamicArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRDynamicDictionary:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRDynamicDictionary"],
- source: "visitIRDynamicDictionary: anIRDynamicDictionary\x0a\x09^ self visitDagNode: anIRDynamicDictionary",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (anIRDynamicDictionary){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(anIRDynamicDictionary);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRDynamicDictionary:",{anIRDynamicDictionary:anIRDynamicDictionary})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRMethod:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRMethod"],
- source: "visitIRMethod: anIRMethod\x0a\x09^ self visitDagNode: anIRMethod",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (anIRMethod){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(anIRMethod);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRMethod:",{anIRMethod:anIRMethod})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRNonLocalReturn:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRNonLocalReturn"],
- source: "visitIRNonLocalReturn: anIRNonLocalReturn\x0a\x09^ self visitDagNode: anIRNonLocalReturn",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (anIRNonLocalReturn){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(anIRNonLocalReturn);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRNonLocalReturnHandling:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRNonLocalReturnHandling"],
- source: "visitIRNonLocalReturnHandling: anIRNonLocalReturnHandling\x0a\x09^ self visitDagNode: anIRNonLocalReturnHandling",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (anIRNonLocalReturnHandling){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(anIRNonLocalReturnHandling);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturnHandling:",{anIRNonLocalReturnHandling:anIRNonLocalReturnHandling})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRReturn:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRReturn"],
- source: "visitIRReturn: anIRReturn\x0a\x09^ self visitDagNode: anIRReturn",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (anIRReturn){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(anIRReturn);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRSend:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRSend"],
- source: "visitIRSend: anIRSend\x0a\x09^ self visitDagNode: anIRSend",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (anIRSend){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(anIRSend);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRSend:",{anIRSend:anIRSend})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRSequence:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRSequence"],
- source: "visitIRSequence: anIRSequence\x0a\x09^ self visitDagNode: anIRSequence",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (anIRSequence){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(anIRSequence);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRSequence:",{anIRSequence:anIRSequence})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRTempDeclaration:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRTempDeclaration"],
- source: "visitIRTempDeclaration: anIRTempDeclaration\x0a\x09^ self visitDagNode: anIRTempDeclaration",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (anIRTempDeclaration){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(anIRTempDeclaration);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRTempDeclaration:",{anIRTempDeclaration:anIRTempDeclaration})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRValue:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRValue"],
- source: "visitIRValue: anIRValue\x0a\x09^ self visitDagNode: anIRValue",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (anIRValue){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(anIRValue);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRValue:",{anIRValue:anIRValue})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRVariable:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRVariable"],
- source: "visitIRVariable: anIRVariable\x0a\x09^ self visitDagNode: anIRVariable",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (anIRVariable){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(anIRVariable);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRVariable:",{anIRVariable:anIRVariable})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRVerbatim:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRVerbatim"],
- source: "visitIRVerbatim: anIRVerbatim\x0a\x09^ self visitDagNode: anIRVerbatim",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitDagNode:"]
- }, function ($methodClass){ return function (anIRVerbatim){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitDagNode_(anIRVerbatim);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRVerbatim:",{anIRVerbatim:anIRVerbatim})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRVisitor);
- $core.addClass("IRJSTranslator", $globals.IRVisitor, "Compiler-IR");
- $core.setSlots($globals.IRJSTranslator, ["stream", "currentClass"]);
- $core.addMethod(
- $core.method({
- selector: "contents",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "contents\x0a\x09^ self stream contents",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["contents", "stream"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._stream())._contents();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"contents",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "currentClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "currentClass\x0a\x09^ currentClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.currentClass;
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "currentClass:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- source: "currentClass: aClass\x0a\x09currentClass := aClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- $self.currentClass=aClass;
- return self;
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x09stream := JSStream new.",
- referencedClasses: ["JSStream"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.stream=$recv($globals.JSStream)._new();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "stream",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "stream\x0a\x09^ stream",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.stream;
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "stream:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStream"],
- source: "stream: aStream\x0a\x09stream := aStream",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aStream){
- var self=this,$self=this;
- $self.stream=aStream;
- return self;
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRAssignment:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRAssignment"],
- source: "visitIRAssignment: anIRAssignment\x0a\x09self stream\x0a\x09\x09nextPutAssignLhs: [self visit: anIRAssignment left]\x0a\x09\x09rhs: [self visit: anIRAssignment right].",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAssignLhs:rhs:", "stream", "visit:", "left", "right"]
- }, function ($methodClass){ return function (anIRAssignment){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._stream())._nextPutAssignLhs_rhs_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$self._visit_($recv(anIRAssignment)._left())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["visit:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._visit_($recv(anIRAssignment)._right());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRClosure:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRClosure"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutClosureWith:arguments:", "stream", "nextPutVars:", "collect:", "tempDeclarations", "asVariableName", "name", "nextPutBlockContextFor:during:", "visitIRClosure:", "arguments"]
- }, function ($methodClass){ return function (anIRClosure){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["stream"]=1
- //>>excludeEnd("ctx");
- ][0])._nextPutClosureWith_arguments_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["stream"]=2
- //>>excludeEnd("ctx");
- ][0])._nextPutVars_($recv($recv(anIRClosure)._tempDeclarations())._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($recv(each)._name())._asVariableName();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
- //>>excludeEnd("ctx");
- })));
- return $recv($self._stream())._nextPutBlockContextFor_during_(anIRClosure,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx3.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRClosure_.call($self,anIRClosure))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$recv(anIRClosure)._arguments());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRClosure:",{anIRClosure:anIRClosure})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRDynamicArray:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRDynamicArray"],
- source: "visitIRDynamicArray: anIRDynamicArray\x0a\x09self\x0a\x09\x09visitInstructionList: anIRDynamicArray dagChildren\x0a\x09\x09enclosedBetween: '[' and: ']'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitInstructionList:enclosedBetween:and:", "dagChildren"]
- }, function ($methodClass){ return function (anIRDynamicArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._visitInstructionList_enclosedBetween_and_($recv(anIRDynamicArray)._dagChildren(),"[","]");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRDynamicArray:",{anIRDynamicArray:anIRDynamicArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRDynamicDictionary:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRDynamicDictionary"],
- source: "visitIRDynamicDictionary: anIRDynamicDictionary\x0a\x09self\x0a\x09\x09visitInstructionList: anIRDynamicDictionary dagChildren\x0a\x09\x09enclosedBetween: '$globals.HashedCollection._newFromPairs_([' and: '])'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitInstructionList:enclosedBetween:and:", "dagChildren"]
- }, function ($methodClass){ return function (anIRDynamicDictionary){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._visitInstructionList_enclosedBetween_and_($recv(anIRDynamicDictionary)._dagChildren(),"$globals.HashedCollection._newFromPairs_([","])");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRDynamicDictionary:",{anIRDynamicDictionary:anIRDynamicDictionary})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRMethod:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRMethod"],
- source: "visitIRMethod: anIRMethod\x0a\x0a\x09self stream\x0a\x09\x09\x09nextPutFunctionWith: [\x0a\x09\x09\x09\x09self stream nextPutVars: (anIRMethod tempDeclarations collect: [ :each |\x0a\x09\x09\x09\x09\x09each name asVariableName ]).\x0a\x09\x09\x09\x09self stream nextPutContextFor: anIRMethod during: [\x0a\x09\x09\x09\x09\x09anIRMethod internalVariables ifNotEmpty: [ :internalVars |\x0a\x09\x09\x09\x09\x09\x09self stream nextPutVars: \x0a\x09\x09\x09\x09\x09\x09\x09(internalVars collect: [ :each | each variable alias ]) asSet ].\x0a\x09\x09\x09\x09anIRMethod scope hasNonLocalReturn\x0a\x09\x09\x09\x09\x09ifTrue: [\x0a\x09\x09\x09\x09\x09\x09self stream nextPutNonLocalReturnHandlingWith: [\x0a\x09\x09\x09\x09\x09\x09\x09super visitIRMethod: anIRMethod ] ]\x0a\x09\x09\x09\x09\x09ifFalse: [ super visitIRMethod: anIRMethod ] ]]\x0a\x09\x09\x09arguments: anIRMethod arguments.\x0a\x09\x09\x09\x0a\x09^ anIRMethod compiledSource: self contents; yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutFunctionWith:arguments:", "stream", "nextPutVars:", "collect:", "tempDeclarations", "asVariableName", "name", "nextPutContextFor:during:", "ifNotEmpty:", "internalVariables", "asSet", "alias", "variable", "ifTrue:ifFalse:", "hasNonLocalReturn", "scope", "nextPutNonLocalReturnHandlingWith:", "visitIRMethod:", "arguments", "compiledSource:", "contents", "yourself"]
- }, function ($methodClass){ return function (anIRMethod){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["stream"]=1
- //>>excludeEnd("ctx");
- ][0])._nextPutFunctionWith_arguments_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["stream"]=2
- //>>excludeEnd("ctx");
- ][0])._nextPutVars_([$recv($recv(anIRMethod)._tempDeclarations())._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($recv(each)._name())._asVariableName();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collect:"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutVars:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["stream"]=3
- //>>excludeEnd("ctx");
- ][0])._nextPutContextFor_during_(anIRMethod,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- $recv($recv(anIRMethod)._internalVariables())._ifNotEmpty_((function(internalVars){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx4) {
- //>>excludeEnd("ctx");
- return $recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx4.sendIdx["stream"]=4
- //>>excludeEnd("ctx");
- ][0])._nextPutVars_($recv($recv(internalVars)._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx5) {
- //>>excludeEnd("ctx");
- return $recv($recv(each)._variable())._alias();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx5) {$ctx5.fillBlock({each:each},$ctx4,5)});
- //>>excludeEnd("ctx");
- })))._asSet());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx4) {$ctx4.fillBlock({internalVars:internalVars},$ctx3,4)});
- //>>excludeEnd("ctx");
- }));
- if($core.assert($recv($recv(anIRMethod)._scope())._hasNonLocalReturn())){
- return $recv($self._stream())._nextPutNonLocalReturnHandlingWith_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx4) {
- //>>excludeEnd("ctx");
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx4.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRMethod_.call($self,anIRMethod))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx4.sendIdx["visitIRMethod:"]=1,$ctx4.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx4) {$ctx4.fillBlock({},$ctx3,7)});
- //>>excludeEnd("ctx");
- }));
- } else {
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx3.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRMethod_.call($self,anIRMethod))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$recv(anIRMethod)._arguments());
- $recv(anIRMethod)._compiledSource_($self._contents());
- return $recv(anIRMethod)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRMethod:",{anIRMethod:anIRMethod})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRNonLocalReturn:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRNonLocalReturn"],
- source: "visitIRNonLocalReturn: anIRNonLocalReturn\x0a\x09self stream nextPutNonLocalReturnWith: [\x0a\x09\x09super visitIRNonLocalReturn: anIRNonLocalReturn ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutNonLocalReturnWith:", "stream", "visitIRNonLocalReturn:"]
- }, function ($methodClass){ return function (anIRNonLocalReturn){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._stream())._nextPutNonLocalReturnWith_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx2.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRNonLocalReturn_.call($self,anIRNonLocalReturn))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRReturn:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRReturn"],
- source: "visitIRReturn: anIRReturn\x0a\x09self stream nextPutReturnWith: [\x0a\x09\x09super visitIRReturn: anIRReturn ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutReturnWith:", "stream", "visitIRReturn:"]
- }, function ($methodClass){ return function (anIRReturn){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._stream())._nextPutReturnWith_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx2.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRReturn_.call($self,anIRReturn))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRSend:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRSend"],
- source: "visitIRSend: anIRSend\x0a\x09| prefixes suffixes workBlock |\x0a\x09prefixes := #().\x0a\x09suffixes := #().\x0a\x09workBlock := [ self visitSend: anIRSend ].\x0a\x09\x0a\x09anIRSend index < (anIRSend method sendIndexes at: anIRSend selector) size ifTrue: [\x0a\x09\x09suffixes add:\x0a\x09\x09\x09anIRSend scope alias,\x0a\x09\x09\x09'.sendIdx[',\x0a\x09\x09\x09anIRSend selector asJavaScriptSource,\x0a\x09\x09\x09']=',\x0a\x09\x09\x09anIRSend index asString ].\x0a\x09\x0a\x09anIRSend receiver isSuper ifTrue: [\x0a\x09\x09prefixes add: anIRSend scope alias, '.supercall = true'.\x0a\x09\x09suffixes add: anIRSend scope alias, '.supercall = false'.\x0a\x09\x09workBlock := [ self visitSuperSend: anIRSend ] ].\x0a\x0a\x09self stream nextPutBefore: prefixes after: suffixes with: workBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitSend:", "ifTrue:", "<", "index", "size", "at:", "sendIndexes", "method", "selector", "add:", ",", "alias", "scope", "asJavaScriptSource", "asString", "isSuper", "receiver", "visitSuperSend:", "nextPutBefore:after:with:", "stream"]
- }, function ($methodClass){ return function (anIRSend){
- var self=this,$self=this;
- var prefixes,suffixes,workBlock;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- prefixes=[];
- suffixes=[];
- workBlock=(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._visitSend_(anIRSend);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- });
- if($core.assert($recv([$recv(anIRSend)._index()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["index"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt($recv($recv($recv($recv(anIRSend)._method())._sendIndexes())._at_([$recv(anIRSend)._selector()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["selector"]=1
- //>>excludeEnd("ctx");
- ][0]))._size()))){
- [$recv(suffixes)._add_([$recv([$recv([$recv([$recv([$recv([$recv(anIRSend)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=1
- //>>excludeEnd("ctx");
- ][0])._alias()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["alias"]=1
- //>>excludeEnd("ctx");
- ][0]).__comma(".sendIdx[")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=4
- //>>excludeEnd("ctx");
- ][0]).__comma($recv($recv(anIRSend)._selector())._asJavaScriptSource())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0]).__comma("]=")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma($recv($recv(anIRSend)._index())._asString())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- if($core.assert($recv($recv(anIRSend)._receiver())._isSuper())){
- [$recv(prefixes)._add_([$recv([$recv([$recv(anIRSend)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=2
- //>>excludeEnd("ctx");
- ][0])._alias()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["alias"]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(".supercall = true")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=5
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(suffixes)._add_($recv($recv($recv(anIRSend)._scope())._alias()).__comma(".supercall = false"));
- workBlock=(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._visitSuperSend_(anIRSend);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
- //>>excludeEnd("ctx");
- });
- workBlock;
- }
- $recv($self._stream())._nextPutBefore_after_with_(prefixes,suffixes,workBlock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRSend:",{anIRSend:anIRSend,prefixes:prefixes,suffixes:suffixes,workBlock:workBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRSequence:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRSequence"],
- source: "visitIRSequence: anIRSequence\x0a\x09anIRSequence dagChildren do: [ :each |\x0a\x09\x09self stream nextPutStatementWith: [ self visit: each ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "dagChildren", "nextPutStatementWith:", "stream", "visit:"]
- }, function ($methodClass){ return function (anIRSequence){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(anIRSequence)._dagChildren())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._stream())._nextPutStatementWith_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._visit_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRSequence:",{anIRSequence:anIRSequence})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRTempDeclaration:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRTempDeclaration"],
- source: "visitIRTempDeclaration: anIRTempDeclaration\x0a\x09\x22self stream\x0a\x09\x09nextPutAll: 'var ', anIRTempDeclaration name asVariableName, ';';\x0a\x09\x09lf\x22",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anIRTempDeclaration){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRValue:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRValue"],
- source: "visitIRValue: anIRValue\x0a\x09self stream nextPutAll: anIRValue value asJavaScriptSource",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "stream", "asJavaScriptSource", "value"]
- }, function ($methodClass){ return function (anIRValue){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._stream())._nextPutAll_($recv($recv(anIRValue)._value())._asJavaScriptSource());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRValue:",{anIRValue:anIRValue})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRVariable:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRVariable"],
- source: "visitIRVariable: anIRVariable\x0a\x09self stream nextPutAll: anIRVariable variable alias",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "stream", "alias", "variable"]
- }, function ($methodClass){ return function (anIRVariable){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._stream())._nextPutAll_($recv($recv(anIRVariable)._variable())._alias());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRVariable:",{anIRVariable:anIRVariable})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRVerbatim:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRVerbatim"],
- source: "visitIRVerbatim: anIRVerbatim\x0a\x09self stream nextPutAll: anIRVerbatim source",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "stream", "source"]
- }, function ($methodClass){ return function (anIRVerbatim){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._stream())._nextPutAll_($recv(anIRVerbatim)._source());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRVerbatim:",{anIRVerbatim:anIRVerbatim})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitInstructionList:enclosedBetween:and:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anArray", "aString", "anotherString"],
- source: "visitInstructionList: anArray enclosedBetween: aString and: anotherString\x0a\x09self stream nextPutAll: aString.\x0a\x09anArray\x0a\x09\x09do: [ :each | self visit: each ]\x0a\x09\x09separatedBy: [ self stream nextPutAll: ',' ].\x0a\x09stream nextPutAll: anotherString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "stream", "do:separatedBy:", "visit:"]
- }, function ($methodClass){ return function (anArray,aString,anotherString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["stream"]=1
- //>>excludeEnd("ctx");
- ][0])._nextPutAll_(aString)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(anArray)._do_separatedBy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._visit_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv($self._stream())._nextPutAll_(",")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $recv($self.stream)._nextPutAll_(anotherString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitInstructionList:enclosedBetween:and:",{anArray:anArray,aString:aString,anotherString:anotherString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitReceiver:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction"],
- source: "visitReceiver: anIRInstruction\x0a\x09anIRInstruction asReceiver\x0a\x09\x09ifNotNil: [ :instr | self visit: instr ]\x0a\x09\x09ifNil: [\x0a\x09\x09\x09self stream nextPutAll: '$recv('.\x0a\x09\x09\x09self visit: anIRInstruction.\x0a\x09\x09\x09self stream nextPutAll: ')' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:ifNil:", "asReceiver", "visit:", "nextPutAll:", "stream"]
- }, function ($methodClass){ return function (anIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv(anIRInstruction)._asReceiver();
- if($1 == null || $1.a$nil){
- [$recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["stream"]=1
- //>>excludeEnd("ctx");
- ][0])._nextPutAll_("$recv(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._visit_(anIRInstruction);
- $recv($self._stream())._nextPutAll_(")");
- } else {
- var instr;
- instr=$1;
- [$self._visit_(instr)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["visit:"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitReceiver:",{anIRInstruction:anIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitSend:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRSend"],
- source: "visitSend: anIRSend\x0a\x09self visitReceiver: anIRSend receiver.\x0a\x09self stream nextPutAll: '.', anIRSend javaScriptSelector.\x0a\x09self\x0a\x09\x09visitInstructionList: anIRSend arguments\x0a\x09\x09enclosedBetween: '(' and: ')'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitReceiver:", "receiver", "nextPutAll:", "stream", ",", "javaScriptSelector", "visitInstructionList:enclosedBetween:and:", "arguments"]
- }, function ($methodClass){ return function (anIRSend){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._visitReceiver_($recv(anIRSend)._receiver());
- $recv($self._stream())._nextPutAll_(".".__comma($recv(anIRSend)._javaScriptSelector()));
- $self._visitInstructionList_enclosedBetween_and_($recv(anIRSend)._arguments(),"(",")");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitSend:",{anIRSend:anIRSend})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitSuperSend:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRSend"],
- source: "visitSuperSend: anIRSend\x0a\x09self stream\x0a\x09\x09nextPutAll: anIRSend receiver variable lookupAsJavaScriptSource, '.';\x0a\x09\x09nextPutAll: anIRSend javaScriptSelector.\x0a\x09anIRSend arguments\x0a\x09\x09ifEmpty: [\x0a\x09\x09\x09self stream nextPutAll: '.call('.\x0a\x09\x09\x09self visitReceiver: anIRSend receiver.\x0a\x09\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09ifNotEmpty: [\x0a\x09\x09\x09anIRSend argumentSwitcher\x0a\x09\x09\x09\x09ifNil: [\x0a\x09\x09\x09\x09\x09self stream nextPutAll: '.call('.\x0a\x09\x09\x09\x09\x09self visitReceiver: anIRSend receiver.\x0a\x09\x09\x09\x09\x09self\x0a\x09\x09\x09\x09\x09\x09visitInstructionList: anIRSend arguments\x0a\x09\x09\x09\x09\x09\x09enclosedBetween: ',' and: ')' ]\x0a\x09\x09\x09\x09ifNotNil: [ :switcher |\x0a\x09\x09\x09\x09\x09self stream nextPutAll: '.apply('.\x0a\x09\x09\x09\x09\x09self visitReceiver: anIRSend receiver.\x0a\x09\x09\x09\x09\x09self\x0a\x09\x09\x09\x09\x09\x09visitInstructionList: anIRSend arguments\x0a\x09\x09\x09\x09\x09\x09enclosedBetween: ',(', switcher asJavaScriptSource, ')('\x0a\x09\x09\x09\x09\x09\x09and: '))' ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "stream", ",", "lookupAsJavaScriptSource", "variable", "receiver", "javaScriptSelector", "ifEmpty:ifNotEmpty:", "arguments", "visitReceiver:", "ifNil:ifNotNil:", "argumentSwitcher", "visitInstructionList:enclosedBetween:and:", "asJavaScriptSource"]
- }, function ($methodClass){ return function (anIRSend){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=[$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["stream"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._nextPutAll_([$recv($recv($recv([$recv(anIRSend)._receiver()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["receiver"]=1
- //>>excludeEnd("ctx");
- ][0])._variable())._lookupAsJavaScriptSource()).__comma(".")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._nextPutAll_($recv(anIRSend)._javaScriptSelector())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv([$recv(anIRSend)._arguments()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["arguments"]=1
- //>>excludeEnd("ctx");
- ][0])._ifEmpty_ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["stream"]=2
- //>>excludeEnd("ctx");
- ][0])._nextPutAll_(".call(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._visitReceiver_([$recv(anIRSend)._receiver()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["receiver"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["visitReceiver:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return [$recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["stream"]=3
- //>>excludeEnd("ctx");
- ][0])._nextPutAll_(")")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=4
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $2=$recv(anIRSend)._argumentSwitcher();
- if($2 == null || $2.a$nil){
- [$recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["stream"]=4
- //>>excludeEnd("ctx");
- ][0])._nextPutAll_(".call(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=5
- //>>excludeEnd("ctx");
- ][0];
- [$self._visitReceiver_([$recv(anIRSend)._receiver()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["receiver"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["visitReceiver:"]=2
- //>>excludeEnd("ctx");
- ][0];
- return [$self._visitInstructionList_enclosedBetween_and_([$recv(anIRSend)._arguments()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["arguments"]=2
- //>>excludeEnd("ctx");
- ][0],",",")")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["visitInstructionList:enclosedBetween:and:"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- var switcher;
- switcher=$2;
- $recv($self._stream())._nextPutAll_(".apply(");
- $self._visitReceiver_($recv(anIRSend)._receiver());
- return $self._visitInstructionList_enclosedBetween_and_($recv(anIRSend)._arguments(),[$recv(",(".__comma($recv(switcher)._asJavaScriptSource())).__comma(")(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0],"))");
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitSuperSend:",{anIRSend:anIRSend})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRJSTranslator);
- $core.addClass("JSStream", $globals.Object, "Compiler-IR");
- $core.setSlots($globals.JSStream, ["stream", "omitSemicolon"]);
- $core.addMethod(
- $core.method({
- selector: "contents",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "contents\x0a\x09^ stream contents",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["contents"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.stream)._contents();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"contents",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x09stream := '' writeStream.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "writeStream"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.stream=""._writeStream();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "lf",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "lf\x0a\x09stream lf",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["lf"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.stream)._lf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"lf",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "nextPut:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "nextPut: aString\x0a\x09stream nextPut: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPut:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.stream)._nextPut_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPut:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutAll:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "nextPutAll: aString\x0a\x09stream nextPutAll: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.stream)._nextPutAll_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutAll:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutAssignLhs:rhs:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anotherBlock"],
- source: "nextPutAssignLhs: aBlock rhs: anotherBlock\x0a\x09aBlock value.\x0a\x09stream nextPutAll: '='.\x0a\x09anotherBlock value",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value", "nextPutAll:"]
- }, function ($methodClass){ return function (aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv(aBlock)._value()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($self.stream)._nextPutAll_("=");
- $recv(anotherBlock)._value();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutAssignLhs:rhs:",{aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutBefore:after:with:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["prefixCollection", "suffixCollection", "aBlock"],
- source: "nextPutBefore: prefixCollection after: suffixCollection with: aBlock\x0a\x09suffixCollection isEmpty\x0a\x09\x09ifTrue: [ self nextPutBefore: prefixCollection with: aBlock ]\x0a\x09\x09ifFalse: [\x0a\x09\x09\x09self\x0a\x09\x09\x09\x09nextPutAll: '['; nextPutBefore: prefixCollection with: aBlock; lf;\x0a\x09\x09\x09\x09nextPutAll: '//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);'; lf.\x0a\x09\x09\x09suffixCollection do: [ :each | self nextPutAll: ','; nextPutAll: each ].\x0a\x09\x09\x09self\x0a\x09\x09\x09\x09lf;\x0a\x09\x09\x09\x09nextPutAll: '//>>excludeEnd(\x22ctx\x22);'; lf;\x0a\x09\x09\x09\x09nextPutAll: '][0]' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "isEmpty", "nextPutBefore:with:", "nextPutAll:", "lf", "do:"]
- }, function ($methodClass){ return function (prefixCollection,suffixCollection,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(suffixCollection)._isEmpty())){
- [$self._nextPutBefore_with_(prefixCollection,aBlock)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutBefore:with:"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- [$self._nextPutAll_("[")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._nextPutBefore_with_(prefixCollection,aBlock);
- [$self._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(suffixCollection)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$self._nextPutAll_(",")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=3
- //>>excludeEnd("ctx");
- ][0];
- return [$self._nextPutAll_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=4
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- [$self._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._nextPutAll_("//>>excludeEnd(\x22ctx\x22);")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $self._lf();
- $self._nextPutAll_("][0]");
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutBefore:after:with:",{prefixCollection:prefixCollection,suffixCollection:suffixCollection,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutBefore:with:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection", "aBlock"],
- source: "nextPutBefore: aCollection with: aBlock\x0a\x09aCollection isEmpty ifTrue: [ aBlock value ] ifFalse: [\x0a\x09\x09self nextPutAll: '('; lf; nextPutAll: '//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);'; lf.\x0a\x09\x09aCollection do: [ :each | self nextPutAll: each; nextPutAll: ',' ].\x0a\x09\x09self lf; nextPutAll: '//>>excludeEnd(\x22ctx\x22);'; lf.\x0a\x09\x09aBlock value.\x0a\x09\x09self nextPutAll: ')' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "isEmpty", "value", "nextPutAll:", "lf", "do:"]
- }, function ($methodClass){ return function (aCollection,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(aCollection)._isEmpty())){
- [$recv(aBlock)._value()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- [$self._nextPutAll_("(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(aCollection)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$self._nextPutAll_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=3
- //>>excludeEnd("ctx");
- ][0];
- return [$self._nextPutAll_(",")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=4
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- [$self._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._nextPutAll_("//>>excludeEnd(\x22ctx\x22);")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $self._lf();
- $recv(aBlock)._value();
- $self._nextPutAll_(")");
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutBefore:with:",{aCollection:aCollection,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutBlockContextFor:during:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRClosure", "aBlock"],
- 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);'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "requiresSmalltalkContext", "value", "nextPutAll:", "lf", ",", "alias", "scope", "do:separatedBy:", "locals", "asVariableName", "outerScope", "asString", "blockIndex"]
- }, function ($methodClass){ return function (anIRClosure,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv(anIRClosure)._requiresSmalltalkContext())){
- return [$recv(aBlock)._value()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- [$self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._nextPutAll_([$recv(["return $core.withContext(function(".__comma([$recv([$recv(anIRClosure)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=1
- //>>excludeEnd("ctx");
- ][0])._alias()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["alias"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(") {")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._nextPutAll_("//>>excludeEnd(\x22ctx\x22);")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv(aBlock)._value();
- [$self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._nextPutAll_([$recv(["}, function(".__comma([$recv([$recv(anIRClosure)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=2
- //>>excludeEnd("ctx");
- ][0])._alias()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["alias"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=4
- //>>excludeEnd("ctx");
- ][0]).__comma(") {")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=5
- //>>excludeEnd("ctx");
- ][0];
- [$self._nextPutAll_([$recv([$recv([$recv(anIRClosure)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=3
- //>>excludeEnd("ctx");
- ][0])._alias()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["alias"]=3
- //>>excludeEnd("ctx");
- ][0]).__comma(".fillBlock({")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=5
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=6
- //>>excludeEnd("ctx");
- ][0];
- $recv($recv(anIRClosure)._locals())._do_separatedBy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$self._nextPutAll_([$recv(each)._asVariableName()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["asVariableName"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=7
- //>>excludeEnd("ctx");
- ][0];
- [$self._nextPutAll_(":")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=8
- //>>excludeEnd("ctx");
- ][0];
- return [$self._nextPutAll_($recv(each)._asVariableName())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=9
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$self._nextPutAll_(",")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=10
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- [$self._nextPutAll_("},")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=11
- //>>excludeEnd("ctx");
- ][0];
- [$self._nextPutAll_([$recv([$recv($recv($recv($recv([$recv(anIRClosure)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=4
- //>>excludeEnd("ctx");
- ][0])._outerScope())._alias()).__comma(",")).__comma($recv($recv($recv(anIRClosure)._scope())._blockIndex())._asString())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=7
- //>>excludeEnd("ctx");
- ][0]).__comma(")});")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=6
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=12
- //>>excludeEnd("ctx");
- ][0];
- $self._lf();
- $self._nextPutAll_("//>>excludeEnd(\x22ctx\x22);");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutBlockContextFor:during:",{anIRClosure:anIRClosure,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutClosureWith:arguments:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anArray"],
- 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: '})'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "do:separatedBy:", "asVariableName", "nextPut:", "lf", "value"]
- }, function ($methodClass){ return function (aBlock,anArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- [$recv($self.stream)._nextPutAll_("(function(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(anArray)._do_separatedBy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv($self.stream)._nextPutAll_($recv(each)._asVariableName())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self.stream)._nextPut_(",");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $1=$self.stream;
- [$recv($1)._nextPutAll_("){")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aBlock)._value();
- $2=$self.stream;
- $recv($2)._lf();
- $recv($2)._nextPutAll_("})");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutClosureWith:arguments:",{aBlock:aBlock,anArray:anArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutContextFor:during:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethod", "aBlock"],
- source: "nextPutContextFor: aMethod during: aBlock\x0a\x09aMethod requiresSmalltalkContext ifFalse: [ ^ aBlock value ].\x0a\x09\x0a\x09self\x0a\x09\x09nextPutAll: '//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);';\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: 'return $core.withContext(function(', aMethod scope alias, ') {';\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: '//>>excludeEnd(\x22ctx\x22);';\x0a\x09\x09lf.\x0a\x0a\x09aBlock value.\x0a\x09\x0a\x09self\x0a\x09\x09nextPutAll: '//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);';\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: '}, function(', aMethod scope alias, ') {', aMethod scope alias;\x0a\x09\x09nextPutAll: '.fill(self,', aMethod selector asJavaScriptSource, ',{'.\x0a\x0a\x09aMethod locals\x0a\x09\x09do: [ :each |\x0a\x09\x09\x09self\x0a\x09\x09\x09\x09nextPutAll: each asVariableName;\x0a\x09\x09\x09\x09nextPutAll: ':';\x0a\x09\x09\x09\x09nextPutAll: each asVariableName ]\x0a\x09\x09separatedBy: [ self nextPutAll: ',' ].\x0a\x09\x0a\x09self\x0a\x09\x09nextPutAll: '})});';\x0a\x09\x09lf;\x0a\x09\x09nextPutAll: '//>>excludeEnd(\x22ctx\x22);'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "requiresSmalltalkContext", "value", "nextPutAll:", "lf", ",", "alias", "scope", "asJavaScriptSource", "selector", "do:separatedBy:", "locals", "asVariableName"]
- }, function ($methodClass){ return function (aMethod,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv(aMethod)._requiresSmalltalkContext())){
- return [$recv(aBlock)._value()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- [$self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._nextPutAll_([$recv(["return $core.withContext(function(".__comma([$recv([$recv(aMethod)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=1
- //>>excludeEnd("ctx");
- ][0])._alias()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["alias"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(") {")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._nextPutAll_("//>>excludeEnd(\x22ctx\x22);")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv(aBlock)._value();
- [$self._nextPutAll_("//>>excludeStart(\x22ctx\x22, pragmas.excludeDebugContexts);")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._nextPutAll_([$recv([$recv(["}, function(".__comma([$recv([$recv(aMethod)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=2
- //>>excludeEnd("ctx");
- ][0])._alias()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["alias"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=5
- //>>excludeEnd("ctx");
- ][0]).__comma(") {")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=4
- //>>excludeEnd("ctx");
- ][0]).__comma($recv($recv(aMethod)._scope())._alias())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=5
- //>>excludeEnd("ctx");
- ][0];
- [$self._nextPutAll_([$recv(".fill(self,".__comma($recv($recv(aMethod)._selector())._asJavaScriptSource())).__comma(",{")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=6
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=6
- //>>excludeEnd("ctx");
- ][0];
- $recv($recv(aMethod)._locals())._do_separatedBy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$self._nextPutAll_([$recv(each)._asVariableName()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["asVariableName"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=7
- //>>excludeEnd("ctx");
- ][0];
- [$self._nextPutAll_(":")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=8
- //>>excludeEnd("ctx");
- ][0];
- return [$self._nextPutAll_($recv(each)._asVariableName())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=9
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$self._nextPutAll_(",")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=10
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- [$self._nextPutAll_("})});")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=11
- //>>excludeEnd("ctx");
- ][0];
- $self._lf();
- $self._nextPutAll_("//>>excludeEnd(\x22ctx\x22);");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutContextFor:during:",{aMethod:aMethod,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutFunctionWith:arguments:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anArray"],
- source: "nextPutFunctionWith: aBlock arguments: anArray\x0a\x09stream nextPutAll: 'function ('.\x0a\x09anArray\x0a\x09\x09do: [ :each | stream nextPutAll: each asVariableName ]\x0a\x09\x09separatedBy: [ stream nextPut: ',' ].\x0a\x09stream nextPutAll: '){'; lf.\x0a\x09stream nextPutAll: 'var self=this,$self=this;'; lf.\x0a\x09aBlock value.\x0a\x09stream lf; nextPutAll: '}'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "do:separatedBy:", "asVariableName", "nextPut:", "lf", "value"]
- }, function ($methodClass){ return function (aBlock,anArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3;
- [$recv($self.stream)._nextPutAll_("function (")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(anArray)._do_separatedBy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv($self.stream)._nextPutAll_($recv(each)._asVariableName())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self.stream)._nextPut_(",");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $1=$self.stream;
- [$recv($1)._nextPutAll_("){")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- $2=$self.stream;
- [$recv($2)._nextPutAll_("var self=this,$self=this;")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(aBlock)._value();
- $3=$self.stream;
- $recv($3)._lf();
- $recv($3)._nextPutAll_("}");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutFunctionWith:arguments:",{aBlock:aBlock,anArray:anArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutIf:then:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anotherBlock"],
- source: "nextPutIf: aBlock then: anotherBlock\x0a\x09stream nextPutAll: 'if('.\x0a\x09aBlock value.\x0a\x09stream nextPutAll: '){'; lf.\x0a\x09anotherBlock value.\x0a\x09stream nextPutAll: '}'.\x0a\x09self omitSemicolon: true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "value", "lf", "omitSemicolon:"]
- }, function ($methodClass){ return function (aBlock,anotherBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- [$recv($self.stream)._nextPutAll_("if(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aBlock)._value()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value"]=1
- //>>excludeEnd("ctx");
- ][0];
- $1=$self.stream;
- [$recv($1)._nextPutAll_("){")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._lf();
- $recv(anotherBlock)._value();
- $recv($self.stream)._nextPutAll_("}");
- $self._omitSemicolon_(true);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutIf:then:",{aBlock:aBlock,anotherBlock:anotherBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutIf:then:else:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "ifBlock", "elseBlock"],
- source: "nextPutIf: aBlock then: ifBlock else: elseBlock\x0a\x09stream nextPutAll: 'if('.\x0a\x09aBlock value.\x0a\x09stream nextPutAll: '){'; lf.\x0a\x09ifBlock value.\x0a\x09stream nextPutAll: '} else {'; lf.\x0a\x09elseBlock value.\x0a\x09stream nextPutAll: '}'.\x0a\x09self omitSemicolon: true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "value", "lf", "omitSemicolon:"]
- }, function ($methodClass){ return function (aBlock,ifBlock,elseBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- [$recv($self.stream)._nextPutAll_("if(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aBlock)._value()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value"]=1
- //>>excludeEnd("ctx");
- ][0];
- $1=$self.stream;
- [$recv($1)._nextPutAll_("){")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(ifBlock)._value()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value"]=2
- //>>excludeEnd("ctx");
- ][0];
- $2=$self.stream;
- [$recv($2)._nextPutAll_("} else {")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._lf();
- $recv(elseBlock)._value();
- $recv($self.stream)._nextPutAll_("}");
- $self._omitSemicolon_(true);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutIf:then:else:",{aBlock:aBlock,ifBlock:ifBlock,elseBlock:elseBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutNonLocalReturnHandlingWith:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "lf", "value"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=$self.stream;
- [$recv($1)._nextPutAll_("var $early={};")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._nextPutAll_("try {")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(aBlock)._value();
- $2=$self.stream;
- [$recv($2)._nextPutAll_("}")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._lf()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["lf"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._nextPutAll_("catch(e) {if(e===$early)return e[0]; throw e}");
- $recv($2)._lf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutNonLocalReturnHandlingWith:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutNonLocalReturnWith:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "nextPutNonLocalReturnWith: aBlock\x0a\x09stream nextPutAll: 'throw $early=['.\x0a\x09aBlock value.\x0a\x09stream nextPutAll: ']'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "value"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv($self.stream)._nextPutAll_("throw $early=[")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aBlock)._value();
- $recv($self.stream)._nextPutAll_("]");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutNonLocalReturnWith:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutReturnWith:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "nextPutReturnWith: aBlock\x0a\x09stream nextPutAll: 'return '.\x0a\x09aBlock value",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutAll:", "value"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.stream)._nextPutAll_("return ");
- $recv(aBlock)._value();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutReturnWith:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutStatementWith:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "nextPutStatementWith: aBlock\x0a\x09self omitSemicolon: false.\x0a\x09aBlock value.\x0a\x09self omitSemicolon ifFalse: [ stream nextPutAll: ';' ].\x0a\x09self omitSemicolon: false.\x0a\x09stream lf",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["omitSemicolon:", "value", "ifFalse:", "omitSemicolon", "nextPutAll:", "lf"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._omitSemicolon_(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["omitSemicolon:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aBlock)._value();
- if(!$core.assert($self._omitSemicolon())){
- $recv($self.stream)._nextPutAll_(";");
- }
- $self._omitSemicolon_(false);
- $recv($self.stream)._lf();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutStatementWith:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "nextPutVars:",
- protocol: "streaming",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "nextPutVars: aCollection\x0a\x09aCollection ifNotEmpty: [\x0a\x09\x09stream nextPutAll: 'var '.\x0a\x09\x09aCollection\x0a\x09\x09\x09do: [ :each | stream nextPutAll: each ]\x0a\x09\x09\x09separatedBy: [ stream nextPutAll: ',' ].\x0a\x09\x09stream nextPutAll: ';'; lf ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotEmpty:", "nextPutAll:", "do:separatedBy:", "lf"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $recv(aCollection)._ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv($self.stream)._nextPutAll_("var ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aCollection)._do_separatedBy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [$recv($self.stream)._nextPutAll_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [$recv($self.stream)._nextPutAll_(",")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["nextPutAll:"]=3
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- $1=$self.stream;
- $recv($1)._nextPutAll_(";");
- return $recv($1)._lf();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextPutVars:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "omitSemicolon",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "omitSemicolon\x0a\x09^ omitSemicolon",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.omitSemicolon;
- }; }),
- $globals.JSStream);
- $core.addMethod(
- $core.method({
- selector: "omitSemicolon:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBoolean"],
- source: "omitSemicolon: aBoolean\x0a\x09omitSemicolon := aBoolean",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aBoolean){
- var self=this,$self=this;
- $self.omitSemicolon=aBoolean;
- return self;
- }; }),
- $globals.JSStream);
- $core.setTraitComposition([{trait: $globals.TPragmator}], $globals.IRPragmator);
- $core.addMethod(
- $core.method({
- selector: "requiresSmalltalkContext",
- protocol: "*Compiler-IR",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "requiresSmalltalkContext\x0a\x09\x22Answer true if the receiver requires a smalltalk context.\x0a\x09Only send nodes require a context.\x0a\x09\x0a\x09If no node requires a context, the method will be compiled without one.\x0a\x09See `IRJSTranslator` and `JSStream` for context creation\x22\x0a\x09\x0a\x09^ self dagChildren anySatisfy: [ :each | each requiresSmalltalkContext ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["anySatisfy:", "dagChildren", "requiresSmalltalkContext"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._dagChildren())._anySatisfy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._requiresSmalltalkContext();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"requiresSmalltalkContext",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTNode);
- $core.addMethod(
- $core.method({
- selector: "hasOpeningStatements",
- protocol: "*Compiler-IR",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "hasOpeningStatements\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.AssignmentNode);
- $core.addMethod(
- $core.method({
- selector: "subtreeNeedsAliasing",
- protocol: "*Compiler-IR",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "subtreeNeedsAliasing\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.BlockNode);
- $core.addMethod(
- $core.method({
- selector: "hasOpeningStatements",
- protocol: "*Compiler-IR",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "hasOpeningStatements\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.CascadeNode);
- $core.addMethod(
- $core.method({
- selector: "hasOpeningStatements",
- protocol: "*Compiler-IR",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "hasOpeningStatements\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.ExpressionNode);
- $core.addMethod(
- $core.method({
- selector: "subtreeNeedsAliasing",
- protocol: "*Compiler-IR",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "subtreeNeedsAliasing\x0a\x09^ self dagChildren anySatisfy: [ :each |\x0a\x09\x09each shouldBeAliased or: [\x0a\x09\x09\x09each hasOpeningStatements or: [\x0a\x09\x09\x09\x09each subtreeNeedsAliasing ] ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["anySatisfy:", "dagChildren", "or:", "shouldBeAliased", "hasOpeningStatements", "subtreeNeedsAliasing"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._dagChildren())._anySatisfy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(each)._shouldBeAliased())){
- return true;
- } else {
- if($core.assert($recv(each)._hasOpeningStatements())){
- return true;
- } else {
- return $recv(each)._subtreeNeedsAliasing();
- }
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subtreeNeedsAliasing",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ExpressionNode);
- $core.addMethod(
- $core.method({
- selector: "requiresSmalltalkContext",
- protocol: "*Compiler-IR",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "requiresSmalltalkContext\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.JSStatementNode);
- $core.addMethod(
- $core.method({
- selector: "asReceiver",
- protocol: "*Compiler-IR",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asReceiver\x0a\x09^ self class receiverNames\x0a\x09\x09at: self name\x0a\x09\x09ifPresent: [ :newName | self copy name: newName; yourself ]\x0a\x09\x09ifAbsent: [ self ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifPresent:ifAbsent:", "receiverNames", "class", "name", "name:", "copy", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- return $recv($recv($self._class())._receiverNames())._at_ifPresent_ifAbsent_($self._name(),(function(newName){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $1=$self._copy();
- $recv($1)._name_(newName);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({newName:newName},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- return self;
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asReceiver",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PseudoVar);
- $core.addMethod(
- $core.method({
- selector: "asReceiver",
- protocol: "*Compiler-IR",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asReceiver\x0a\x09\x22Return customized copy to use as receiver,\x0a\x09or self if suffices.\x22\x0a\x09^ nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return nil;
- }; }),
- $globals.ScopeVar);
- $core.addMethod(
- $core.method({
- selector: "requiresSmalltalkContext",
- protocol: "*Compiler-IR",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "requiresSmalltalkContext\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.SendNode);
- });
- define('amber/core/Compiler-Inlining',["amber/boot", "require", "amber/core/Compiler-AST", "amber/core/Compiler-Core", "amber/core/Compiler-IR", "amber/core/Compiler-Semantic", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Compiler-Inlining");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("ASTPreInliner", $globals.NodeVisitor, "Compiler-Inlining");
- $core.addMethod(
- $core.method({
- selector: "visitSendNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitSendNode: aNode\x0a\x0a\x09aNode superSend ifFalse: [ \x0a\x09\x09(IRSendInliner inlinedSelectors includes: aNode selector) ifTrue: [\x0a\x09\x09\x09aNode shouldBeAliased: true.\x0a\x09\x09\x09aNode receiver ifNotNil: [ :receiver |\x0a\x09\x09\x09\x09(IRSendInliner inlinedSelectorsNeedingIdempotentReceiver includes: aNode selector) ifTrue: [\x0a\x09\x09\x09\x09\x09receiver shouldBeAliased: true ] ] ] ].\x0a\x0a\x09^ super visitSendNode: aNode",
- referencedClasses: ["IRSendInliner"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "superSend", "ifTrue:", "includes:", "inlinedSelectors", "selector", "shouldBeAliased:", "ifNotNil:", "receiver", "inlinedSelectorsNeedingIdempotentReceiver", "visitSendNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- if(!$core.assert($recv(aNode)._superSend())){
- if($core.assert([$recv($recv($globals.IRSendInliner)._inlinedSelectors())._includes_([$recv(aNode)._selector()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["selector"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["includes:"]=1
- //>>excludeEnd("ctx");
- ][0])){
- [$recv(aNode)._shouldBeAliased_(true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["shouldBeAliased:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $1=$recv(aNode)._receiver();
- if($1 == null || $1.a$nil){
- $1;
- } else {
- var receiver;
- receiver=$1;
- if($core.assert($recv($recv($globals.IRSendInliner)._inlinedSelectorsNeedingIdempotentReceiver())._includes_($recv(aNode)._selector()))){
- $recv(receiver)._shouldBeAliased_(true);
- }
- }
- }
- }
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitSendNode_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTPreInliner);
- $core.addClass("IRInlinedClosure", $globals.IRClosure, "Compiler-Inlining");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRInlinedClosure.comment="I represent an inlined closure instruction.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedClosure: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRInlinedClosure:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aVisitor)._visitIRInlinedClosure_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInlinedClosure);
- $core.addMethod(
- $core.method({
- selector: "isInlined",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isInlined\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.IRInlinedClosure);
- $core.addClass("IRInlinedSend", $globals.IRSend, "Compiler-Inlining");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRInlinedSend.comment="I am the abstract super class of inlined message send instructions.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitInlinedSend: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitInlinedSend:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aVisitor)._visitInlinedSend_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInlinedSend);
- $core.addMethod(
- $core.method({
- selector: "internalVariables",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "internalVariables\x0a\x09\x22Answer a collection of internal variables required \x0a\x09to perform the inlining\x22\x0a\x09\x0a\x09^ #()",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return [];
- }; }),
- $globals.IRInlinedSend);
- $core.addMethod(
- $core.method({
- selector: "isInlined",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isInlined\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.IRInlinedSend);
- $core.addClass("IRInlinedIfFalse", $globals.IRInlinedSend, "Compiler-Inlining");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRInlinedIfFalse.comment="I represent an inlined `#ifFalse:` message send instruction.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedIfFalse: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRInlinedIfFalse:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aVisitor)._visitIRInlinedIfFalse_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInlinedIfFalse);
- $core.addClass("IRInlinedIfNilIfNotNil", $globals.IRInlinedSend, "Compiler-Inlining");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRInlinedIfNilIfNotNil.comment="I represent an inlined `#ifNil:ifNotNil:` message send instruction.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedIfNilIfNotNil: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRInlinedIfNilIfNotNil:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aVisitor)._visitIRInlinedIfNilIfNotNil_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInlinedIfNilIfNotNil);
- $core.addClass("IRInlinedIfTrue", $globals.IRInlinedSend, "Compiler-Inlining");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRInlinedIfTrue.comment="I represent an inlined `#ifTrue:` message send instruction.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedIfTrue: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRInlinedIfTrue:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aVisitor)._visitIRInlinedIfTrue_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInlinedIfTrue);
- $core.addClass("IRInlinedIfTrueIfFalse", $globals.IRInlinedSend, "Compiler-Inlining");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRInlinedIfTrueIfFalse.comment="I represent an inlined `#ifTrue:ifFalse:` message send instruction.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedIfTrueIfFalse: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRInlinedIfTrueIfFalse:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aVisitor)._visitIRInlinedIfTrueIfFalse_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInlinedIfTrueIfFalse);
- $core.addClass("IRInlinedSequence", $globals.IRBlockSequence, "Compiler-Inlining");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRInlinedSequence.comment="I represent a (block) sequence inside an inlined closure instruction (instance of `IRInlinedClosure`).";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptDagVisitor:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aVisitor"],
- source: "acceptDagVisitor: aVisitor\x0a\x09aVisitor visitIRInlinedSequence: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRInlinedSequence:"]
- }, function ($methodClass){ return function (aVisitor){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aVisitor)._visitIRInlinedSequence_(self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptDagVisitor:",{aVisitor:aVisitor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInlinedSequence);
- $core.addMethod(
- $core.method({
- selector: "isInlined",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isInlined\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.IRInlinedSequence);
- $core.addClass("IRInliner", $globals.IRVisitor, "Compiler-Inlining");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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`";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "assignmentInliner",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "assignmentInliner\x0a\x09^ IRAssignmentInliner new\x0a\x09\x09translator: self;\x0a\x09\x09yourself",
- referencedClasses: ["IRAssignmentInliner"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["translator:", "new", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.IRAssignmentInliner)._new();
- $recv($1)._translator_(self);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"assignmentInliner",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliner);
- $core.addMethod(
- $core.method({
- selector: "flattenedReturn:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRNonLocalReturn"],
- source: "flattenedReturn: anIRNonLocalReturn\x0a\x09| localReturn |\x0a\x09localReturn := IRReturn new\x0a\x09\x09scope: anIRNonLocalReturn scope;\x0a\x09\x09yourself.\x0a\x09anIRNonLocalReturn dagChildren do: [ :each | localReturn add: each ].\x0a\x09^ localReturn",
- referencedClasses: ["IRReturn"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["scope:", "new", "scope", "yourself", "do:", "dagChildren", "add:"]
- }, function ($methodClass){ return function (anIRNonLocalReturn){
- var self=this,$self=this;
- var localReturn;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.IRReturn)._new();
- $recv($1)._scope_($recv(anIRNonLocalReturn)._scope());
- localReturn=$recv($1)._yourself();
- $recv($recv(anIRNonLocalReturn)._dagChildren())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(localReturn)._add_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return localReturn;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"flattenedReturn:",{anIRNonLocalReturn:anIRNonLocalReturn,localReturn:localReturn})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliner);
- $core.addMethod(
- $core.method({
- selector: "nonLocalReturnInliner",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "nonLocalReturnInliner\x0a\x09^ IRNonLocalReturnInliner new\x0a\x09\x09translator: self;\x0a\x09\x09yourself",
- referencedClasses: ["IRNonLocalReturnInliner"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["translator:", "new", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.IRNonLocalReturnInliner)._new();
- $recv($1)._translator_(self);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nonLocalReturnInliner",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliner);
- $core.addMethod(
- $core.method({
- selector: "returnInliner",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "returnInliner\x0a\x09^ IRReturnInliner new\x0a\x09\x09translator: self;\x0a\x09\x09yourself",
- referencedClasses: ["IRReturnInliner"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["translator:", "new", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.IRReturnInliner)._new();
- $recv($1)._translator_(self);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"returnInliner",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliner);
- $core.addMethod(
- $core.method({
- selector: "sendInliner",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sendInliner\x0a\x09^ IRSendInliner new\x0a\x09\x09translator: self;\x0a\x09\x09yourself",
- referencedClasses: ["IRSendInliner"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["translator:", "new", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.IRSendInliner)._new();
- $recv($1)._translator_(self);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sendInliner",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliner);
- $core.addMethod(
- $core.method({
- selector: "shouldInlineAssignment:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRAssignment"],
- source: "shouldInlineAssignment: anIRAssignment\x0a\x09^ anIRAssignment isInlined not and: [\x0a\x09\x09anIRAssignment right isSend and: [\x0a\x09\x09\x09self shouldInlineSend: anIRAssignment right ]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "not", "isInlined", "isSend", "right", "shouldInlineSend:"]
- }, function ($methodClass){ return function (anIRAssignment){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv(anIRAssignment)._isInlined())._not())){
- if($core.assert($recv([$recv(anIRAssignment)._right()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["right"]=1
- //>>excludeEnd("ctx");
- ][0])._isSend())){
- return $self._shouldInlineSend_($recv(anIRAssignment)._right());
- } else {
- return false;
- }
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shouldInlineAssignment:",{anIRAssignment:anIRAssignment})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliner);
- $core.addMethod(
- $core.method({
- selector: "shouldInlineReturn:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRReturn"],
- source: "shouldInlineReturn: anIRReturn\x0a\x09^ anIRReturn isInlined not and: [\x0a\x09\x09anIRReturn expression isSend and: [\x0a\x09\x09\x09self shouldInlineSend: anIRReturn expression ]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "not", "isInlined", "isSend", "expression", "shouldInlineSend:"]
- }, function ($methodClass){ return function (anIRReturn){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv(anIRReturn)._isInlined())._not())){
- if($core.assert($recv([$recv(anIRReturn)._expression()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["expression"]=1
- //>>excludeEnd("ctx");
- ][0])._isSend())){
- return $self._shouldInlineSend_($recv(anIRReturn)._expression());
- } else {
- return false;
- }
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shouldInlineReturn:",{anIRReturn:anIRReturn})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliner);
- $core.addMethod(
- $core.method({
- selector: "shouldInlineSend:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRSend"],
- source: "shouldInlineSend: anIRSend\x0a\x09^ anIRSend isInlined not and: [\x0a\x09\x09IRSendInliner shouldInline: anIRSend ]",
- referencedClasses: ["IRSendInliner"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "not", "isInlined", "shouldInline:"]
- }, function ($methodClass){ return function (anIRSend){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv(anIRSend)._isInlined())._not())){
- return $recv($globals.IRSendInliner)._shouldInline_(anIRSend);
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shouldInlineSend:",{anIRSend:anIRSend})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliner);
- $core.addMethod(
- $core.method({
- selector: "visitIRAssignment:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRAssignment"],
- source: "visitIRAssignment: anIRAssignment\x0a\x09^ (self shouldInlineAssignment: anIRAssignment)\x0a\x09\x09ifTrue: [ self assignmentInliner inlineAssignment: anIRAssignment ]\x0a\x09\x09ifFalse: [ super visitIRAssignment: anIRAssignment ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "shouldInlineAssignment:", "inlineAssignment:", "assignmentInliner", "visitIRAssignment:"]
- }, function ($methodClass){ return function (anIRAssignment){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._shouldInlineAssignment_(anIRAssignment))){
- return $recv($self._assignmentInliner())._inlineAssignment_(anIRAssignment);
- } else {
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRAssignment_.call($self,anIRAssignment))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRAssignment:",{anIRAssignment:anIRAssignment})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliner);
- $core.addMethod(
- $core.method({
- selector: "visitIRNonLocalReturn:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRNonLocalReturn"],
- source: "visitIRNonLocalReturn: anIRNonLocalReturn\x0a\x09anIRNonLocalReturn scope canFlattenNonLocalReturns ifTrue: [\x0a\x09\x09| localReturn |\x0a\x09\x09anIRNonLocalReturn scope methodScope removeNonLocalReturn: anIRNonLocalReturn scope.\x0a\x09\x09localReturn := self flattenedReturn: anIRNonLocalReturn.\x0a\x09\x09anIRNonLocalReturn replaceWith: localReturn.\x0a\x09\x09^ self visitIRReturn: localReturn ].\x0a\x09^ (self shouldInlineReturn: anIRNonLocalReturn)\x0a\x09\x09ifTrue: [ self nonLocalReturnInliner inlineReturn: anIRNonLocalReturn ]\x0a\x09\x09ifFalse: [ super visitIRNonLocalReturn: anIRNonLocalReturn ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "canFlattenNonLocalReturns", "scope", "removeNonLocalReturn:", "methodScope", "flattenedReturn:", "replaceWith:", "visitIRReturn:", "ifTrue:ifFalse:", "shouldInlineReturn:", "inlineReturn:", "nonLocalReturnInliner", "visitIRNonLocalReturn:"]
- }, function ($methodClass){ return function (anIRNonLocalReturn){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv([$recv(anIRNonLocalReturn)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=1
- //>>excludeEnd("ctx");
- ][0])._canFlattenNonLocalReturns())){
- var localReturn;
- $recv($recv([$recv(anIRNonLocalReturn)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=2
- //>>excludeEnd("ctx");
- ][0])._methodScope())._removeNonLocalReturn_($recv(anIRNonLocalReturn)._scope());
- localReturn=$self._flattenedReturn_(anIRNonLocalReturn);
- $recv(anIRNonLocalReturn)._replaceWith_(localReturn);
- return $self._visitIRReturn_(localReturn);
- }
- if($core.assert($self._shouldInlineReturn_(anIRNonLocalReturn))){
- return $recv($self._nonLocalReturnInliner())._inlineReturn_(anIRNonLocalReturn);
- } else {
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRNonLocalReturn_.call($self,anIRNonLocalReturn))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRNonLocalReturn:",{anIRNonLocalReturn:anIRNonLocalReturn})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliner);
- $core.addMethod(
- $core.method({
- selector: "visitIRReturn:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRReturn"],
- source: "visitIRReturn: anIRReturn\x0a\x09^ (self shouldInlineReturn: anIRReturn)\x0a\x09\x09ifTrue: [ self returnInliner inlineReturn: anIRReturn ]\x0a\x09\x09ifFalse: [ super visitIRReturn: anIRReturn ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "shouldInlineReturn:", "inlineReturn:", "returnInliner", "visitIRReturn:"]
- }, function ($methodClass){ return function (anIRReturn){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._shouldInlineReturn_(anIRReturn))){
- return $recv($self._returnInliner())._inlineReturn_(anIRReturn);
- } else {
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRReturn_.call($self,anIRReturn))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRReturn:",{anIRReturn:anIRReturn})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliner);
- $core.addMethod(
- $core.method({
- selector: "visitIRSend:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRSend"],
- source: "visitIRSend: anIRSend\x0a\x09^ (self shouldInlineSend: anIRSend)\x0a\x09\x09ifTrue: [ self sendInliner inlineSend: anIRSend ]\x0a\x09\x09ifFalse: [ super visitIRSend: anIRSend ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "shouldInlineSend:", "inlineSend:", "sendInliner", "visitIRSend:"]
- }, function ($methodClass){ return function (anIRSend){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._shouldInlineSend_(anIRSend))){
- return $recv($self._sendInliner())._inlineSend_(anIRSend);
- } else {
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitIRSend_.call($self,anIRSend))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRSend:",{anIRSend:anIRSend})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliner);
- $core.addClass("IRInliningJSTranslator", $globals.IRJSTranslator, "Compiler-Inlining");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRInliningJSTranslator.comment="I am a specialized JavaScript translator able to write inlined IR instructions to JavaScript stream (`JSStream` instance).";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "visitIRInlinedClosure:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInlinedClosure"],
- source: "visitIRInlinedClosure: anIRInlinedClosure\x0a\x09self stream nextPutVars: (anIRInlinedClosure tempDeclarations collect: [ :each |\x0a\x09\x09each name asVariableName ]).\x0a\x09self visitAllChildren: anIRInlinedClosure",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutVars:", "stream", "collect:", "tempDeclarations", "asVariableName", "name", "visitAllChildren:"]
- }, function ($methodClass){ return function (anIRInlinedClosure){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._stream())._nextPutVars_($recv($recv(anIRInlinedClosure)._tempDeclarations())._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv(each)._name())._asVariableName();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- })));
- $self._visitAllChildren_(anIRInlinedClosure);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedClosure:",{anIRInlinedClosure:anIRInlinedClosure})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliningJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRInlinedIfFalse:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInlinedIfFalse"],
- source: "visitIRInlinedIfFalse: anIRInlinedIfFalse\x0a\x09self stream nextPutIf: [\x0a\x09\x09self stream nextPutAll: '!$core.assert('.\x0a\x09\x09self visit: anIRInlinedIfFalse dagChildren first.\x0a\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09then: [ self visit: anIRInlinedIfFalse dagChildren last ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutIf:then:", "stream", "nextPutAll:", "visit:", "first", "dagChildren", "last"]
- }, function ($methodClass){ return function (anIRInlinedIfFalse){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["stream"]=1
- //>>excludeEnd("ctx");
- ][0])._nextPutIf_then_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["stream"]=2
- //>>excludeEnd("ctx");
- ][0])._nextPutAll_("!$core.assert(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._visit_($recv([$recv(anIRInlinedIfFalse)._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["dagChildren"]=1
- //>>excludeEnd("ctx");
- ][0])._first())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["visit:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $recv($self._stream())._nextPutAll_(")");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._visit_($recv($recv(anIRInlinedIfFalse)._dagChildren())._last());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfFalse:",{anIRInlinedIfFalse:anIRInlinedIfFalse})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliningJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRInlinedIfNilIfNotNil:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInlinedIfNilIfNotNil"],
- source: "visitIRInlinedIfNilIfNotNil: anIRInlinedIfNilIfNotNil\x0a\x09self stream\x0a\x09\x09nextPutIf: [\x0a\x09\x09\x09self visit: anIRInlinedIfNilIfNotNil dagChildren first.\x0a\x09\x09\x09self stream nextPutAll: ' == null || '.\x0a\x09\x09\x09self visit: anIRInlinedIfNilIfNotNil dagChildren first.\x0a\x09\x09\x09self stream nextPutAll: '.a$nil' ]\x0a\x09\x09then: [ self visit: anIRInlinedIfNilIfNotNil dagChildren second ]\x0a\x09\x09else: [ self visit: anIRInlinedIfNilIfNotNil dagChildren third ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutIf:then:else:", "stream", "visit:", "first", "dagChildren", "nextPutAll:", "second", "third"]
- }, function ($methodClass){ return function (anIRInlinedIfNilIfNotNil){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["stream"]=1
- //>>excludeEnd("ctx");
- ][0])._nextPutIf_then_else_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$self._visit_([$recv([$recv(anIRInlinedIfNilIfNotNil)._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["dagChildren"]=1
- //>>excludeEnd("ctx");
- ][0])._first()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["first"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["visit:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["stream"]=2
- //>>excludeEnd("ctx");
- ][0])._nextPutAll_(" == null || ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._visit_($recv([$recv(anIRInlinedIfNilIfNotNil)._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["dagChildren"]=2
- //>>excludeEnd("ctx");
- ][0])._first())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["visit:"]=2
- //>>excludeEnd("ctx");
- ][0];
- return $recv($self._stream())._nextPutAll_(".a$nil");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$self._visit_($recv([$recv(anIRInlinedIfNilIfNotNil)._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["dagChildren"]=3
- //>>excludeEnd("ctx");
- ][0])._second())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["visit:"]=3
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._visit_($recv($recv(anIRInlinedIfNilIfNotNil)._dagChildren())._third());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfNilIfNotNil:",{anIRInlinedIfNilIfNotNil:anIRInlinedIfNilIfNotNil})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliningJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRInlinedIfTrue:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInlinedIfTrue"],
- source: "visitIRInlinedIfTrue: anIRInlinedIfTrue\x0a\x09self stream nextPutIf: [\x0a\x09\x09self stream nextPutAll: '$core.assert('.\x0a\x09\x09self visit: anIRInlinedIfTrue dagChildren first.\x0a\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09then: [ self visit: anIRInlinedIfTrue dagChildren last ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutIf:then:", "stream", "nextPutAll:", "visit:", "first", "dagChildren", "last"]
- }, function ($methodClass){ return function (anIRInlinedIfTrue){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["stream"]=1
- //>>excludeEnd("ctx");
- ][0])._nextPutIf_then_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["stream"]=2
- //>>excludeEnd("ctx");
- ][0])._nextPutAll_("$core.assert(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._visit_($recv([$recv(anIRInlinedIfTrue)._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["dagChildren"]=1
- //>>excludeEnd("ctx");
- ][0])._first())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["visit:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $recv($self._stream())._nextPutAll_(")");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._visit_($recv($recv(anIRInlinedIfTrue)._dagChildren())._last());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrue:",{anIRInlinedIfTrue:anIRInlinedIfTrue})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliningJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "visitIRInlinedIfTrueIfFalse:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInlinedIfTrueIfFalse"],
- source: "visitIRInlinedIfTrueIfFalse: anIRInlinedIfTrueIfFalse\x0a\x09self stream\x0a\x09\x09nextPutIf: [\x0a\x09\x09\x09self stream nextPutAll: '$core.assert('.\x0a\x09\x09\x09self visit: anIRInlinedIfTrueIfFalse dagChildren first.\x0a\x09\x09\x09self stream nextPutAll: ')' ]\x0a\x09\x09then: [ self visit: anIRInlinedIfTrueIfFalse dagChildren second ]\x0a\x09\x09else: [ self visit: anIRInlinedIfTrueIfFalse dagChildren third ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nextPutIf:then:else:", "stream", "nextPutAll:", "visit:", "first", "dagChildren", "second", "third"]
- }, function ($methodClass){ return function (anIRInlinedIfTrueIfFalse){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["stream"]=1
- //>>excludeEnd("ctx");
- ][0])._nextPutIf_then_else_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv([$self._stream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["stream"]=2
- //>>excludeEnd("ctx");
- ][0])._nextPutAll_("$core.assert(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._visit_($recv([$recv(anIRInlinedIfTrueIfFalse)._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["dagChildren"]=1
- //>>excludeEnd("ctx");
- ][0])._first())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["visit:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $recv($self._stream())._nextPutAll_(")");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$self._visit_($recv([$recv(anIRInlinedIfTrueIfFalse)._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["dagChildren"]=2
- //>>excludeEnd("ctx");
- ][0])._second())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["visit:"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._visit_($recv($recv(anIRInlinedIfTrueIfFalse)._dagChildren())._third());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedIfTrueIfFalse:",{anIRInlinedIfTrueIfFalse:anIRInlinedIfTrueIfFalse})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRInliningJSTranslator);
- $core.addClass("IRSendInliner", $globals.Object, "Compiler-Inlining");
- $core.setSlots($globals.IRSendInliner, ["send", "translator"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRSendInliner.comment="I inline some message sends and block closure arguments. I heavily rely on #perform: to dispatch inlining methods.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "and:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction"],
- source: "and: anIRInstruction\x0a\x09self mustBeNiladicClosure: anIRInstruction.\x0a\x09^ self\x0a\x09\x09inlinedSend: IRInlinedIfTrueIfFalse new\x0a\x09\x09withBlock: anIRInstruction\x0a\x09\x09withBlock: (IRClosure new\x0a\x09\x09\x09scope: anIRInstruction scope copy;\x0a\x09\x09\x09add: (IRBlockSequence new\x0a\x09\x09\x09\x09add: (IRValue new value: false; yourself);\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself)",
- referencedClasses: ["IRInlinedIfTrueIfFalse", "IRClosure", "IRBlockSequence", "IRValue"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["mustBeNiladicClosure:", "inlinedSend:withBlock:withBlock:", "new", "scope:", "copy", "scope", "add:", "value:", "yourself"]
- }, function ($methodClass){ return function (anIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3,$4;
- $self._mustBeNiladicClosure_(anIRInstruction);
- $1=[$recv($globals.IRInlinedIfTrueIfFalse)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $2=[$recv($globals.IRClosure)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._scope_($recv($recv(anIRInstruction)._scope())._copy());
- $3=[$recv($globals.IRBlockSequence)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0];
- $4=$recv($globals.IRValue)._new();
- $recv($4)._value_(false);
- $recv($3)._add_([$recv($4)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0]);
- [$recv($2)._add_([$recv($3)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $self._inlinedSend_withBlock_withBlock_($1,anIRInstruction,$recv($2)._yourself());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"and:",{anIRInstruction:anIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "ifFalse:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction"],
- source: "ifFalse: anIRInstruction\x0a\x09self mustBeNiladicClosure: anIRInstruction.\x0a\x09^ self inlinedSend: IRInlinedIfFalse new withBlock: anIRInstruction",
- referencedClasses: ["IRInlinedIfFalse"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["mustBeNiladicClosure:", "inlinedSend:withBlock:", "new"]
- }, function ($methodClass){ return function (anIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._mustBeNiladicClosure_(anIRInstruction);
- return $self._inlinedSend_withBlock_($recv($globals.IRInlinedIfFalse)._new(),anIRInstruction);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifFalse:",{anIRInstruction:anIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "ifFalse:ifTrue:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction", "anotherIRInstruction"],
- source: "ifFalse: anIRInstruction ifTrue: anotherIRInstruction\x0a\x09self mustBeNiladicClosure: anIRInstruction.\x0a\x09self mustBeNiladicClosure: anotherIRInstruction.\x0a\x09^ self inlinedSend: IRInlinedIfTrueIfFalse new withBlock: anotherIRInstruction withBlock: anIRInstruction",
- referencedClasses: ["IRInlinedIfTrueIfFalse"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["mustBeNiladicClosure:", "inlinedSend:withBlock:withBlock:", "new"]
- }, function ($methodClass){ return function (anIRInstruction,anotherIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._mustBeNiladicClosure_(anIRInstruction)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["mustBeNiladicClosure:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._mustBeNiladicClosure_(anotherIRInstruction);
- return $self._inlinedSend_withBlock_withBlock_($recv($globals.IRInlinedIfTrueIfFalse)._new(),anotherIRInstruction,anIRInstruction);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifFalse:ifTrue:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "ifNil:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction"],
- source: "ifNil: anIRInstruction\x0a\x09self mustBeNiladicClosure: anIRInstruction.\x0a\x09^ self\x0a\x09\x09inlinedSend: IRInlinedIfNilIfNotNil new\x0a\x09\x09withBlock: anIRInstruction\x0a\x09\x09withBlock: (IRClosure new\x0a\x09\x09\x09scope: anIRInstruction scope copy;\x0a\x09\x09\x09add: (IRBlockSequence new\x0a\x09\x09\x09\x09add: self send receiver;\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself)",
- referencedClasses: ["IRInlinedIfNilIfNotNil", "IRClosure", "IRBlockSequence"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["mustBeNiladicClosure:", "inlinedSend:withBlock:withBlock:", "new", "scope:", "copy", "scope", "add:", "receiver", "send", "yourself"]
- }, function ($methodClass){ return function (anIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3;
- $self._mustBeNiladicClosure_(anIRInstruction);
- $1=[$recv($globals.IRInlinedIfNilIfNotNil)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $2=[$recv($globals.IRClosure)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._scope_($recv($recv(anIRInstruction)._scope())._copy());
- $3=$recv($globals.IRBlockSequence)._new();
- $recv($3)._add_($recv($self._send())._receiver());
- [$recv($2)._add_([$recv($3)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $self._inlinedSend_withBlock_withBlock_($1,anIRInstruction,$recv($2)._yourself());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifNil:",{anIRInstruction:anIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "ifNil:ifNotNil:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction", "anotherIRInstruction"],
- source: "ifNil: anIRInstruction ifNotNil: anotherIRInstruction\x0a\x09self mustBeNiladicClosure: anIRInstruction.\x0a\x09self mustBeNiladicOrUnaryClosure: anotherIRInstruction.\x0a\x09^ self inlinedSend: IRInlinedIfNilIfNotNil new withBlock: anIRInstruction withBlock: anotherIRInstruction",
- referencedClasses: ["IRInlinedIfNilIfNotNil"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["mustBeNiladicClosure:", "mustBeNiladicOrUnaryClosure:", "inlinedSend:withBlock:withBlock:", "new"]
- }, function ($methodClass){ return function (anIRInstruction,anotherIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._mustBeNiladicClosure_(anIRInstruction);
- $self._mustBeNiladicOrUnaryClosure_(anotherIRInstruction);
- return $self._inlinedSend_withBlock_withBlock_($recv($globals.IRInlinedIfNilIfNotNil)._new(),anIRInstruction,anotherIRInstruction);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifNil:ifNotNil:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "ifNotNil:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction"],
- source: "ifNotNil: anIRInstruction\x0a\x09self mustBeNiladicOrUnaryClosure: anIRInstruction.\x0a\x09^ self\x0a\x09\x09inlinedSend: IRInlinedIfNilIfNotNil new\x0a\x09\x09withBlock: (IRClosure new\x0a\x09\x09\x09scope: anIRInstruction scope copy;\x0a\x09\x09\x09add: (IRBlockSequence new\x0a\x09\x09\x09\x09add: self send receiver;\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself)\x0a\x09\x09withBlock: anIRInstruction",
- referencedClasses: ["IRInlinedIfNilIfNotNil", "IRClosure", "IRBlockSequence"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["mustBeNiladicOrUnaryClosure:", "inlinedSend:withBlock:withBlock:", "new", "scope:", "copy", "scope", "add:", "receiver", "send", "yourself"]
- }, function ($methodClass){ return function (anIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3;
- $self._mustBeNiladicOrUnaryClosure_(anIRInstruction);
- $1=[$recv($globals.IRInlinedIfNilIfNotNil)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $2=[$recv($globals.IRClosure)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._scope_($recv($recv(anIRInstruction)._scope())._copy());
- $3=$recv($globals.IRBlockSequence)._new();
- $recv($3)._add_($recv($self._send())._receiver());
- [$recv($2)._add_([$recv($3)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $self._inlinedSend_withBlock_withBlock_($1,$recv($2)._yourself(),anIRInstruction);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifNotNil:",{anIRInstruction:anIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "ifNotNil:ifNil:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction", "anotherIRInstruction"],
- source: "ifNotNil: anIRInstruction ifNil: anotherIRInstruction\x0a\x09self mustBeNiladicOrUnaryClosure: anIRInstruction.\x0a\x09self mustBeNiladicClosure: anotherIRInstruction.\x0a\x09^ self inlinedSend: IRInlinedIfNilIfNotNil new withBlock: anotherIRInstruction withBlock: anIRInstruction",
- referencedClasses: ["IRInlinedIfNilIfNotNil"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["mustBeNiladicOrUnaryClosure:", "mustBeNiladicClosure:", "inlinedSend:withBlock:withBlock:", "new"]
- }, function ($methodClass){ return function (anIRInstruction,anotherIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._mustBeNiladicOrUnaryClosure_(anIRInstruction);
- $self._mustBeNiladicClosure_(anotherIRInstruction);
- return $self._inlinedSend_withBlock_withBlock_($recv($globals.IRInlinedIfNilIfNotNil)._new(),anotherIRInstruction,anIRInstruction);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifNotNil:ifNil:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "ifTrue:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction"],
- source: "ifTrue: anIRInstruction\x0a\x09self mustBeNiladicClosure: anIRInstruction.\x0a\x09^ self inlinedSend: IRInlinedIfTrue new withBlock: anIRInstruction",
- referencedClasses: ["IRInlinedIfTrue"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["mustBeNiladicClosure:", "inlinedSend:withBlock:", "new"]
- }, function ($methodClass){ return function (anIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._mustBeNiladicClosure_(anIRInstruction);
- return $self._inlinedSend_withBlock_($recv($globals.IRInlinedIfTrue)._new(),anIRInstruction);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifTrue:",{anIRInstruction:anIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "ifTrue:ifFalse:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction", "anotherIRInstruction"],
- source: "ifTrue: anIRInstruction ifFalse: anotherIRInstruction\x0a\x09self mustBeNiladicClosure: anIRInstruction.\x0a\x09self mustBeNiladicClosure: anotherIRInstruction.\x0a\x09^ self inlinedSend: IRInlinedIfTrueIfFalse new withBlock: anIRInstruction withBlock: anotherIRInstruction",
- referencedClasses: ["IRInlinedIfTrueIfFalse"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["mustBeNiladicClosure:", "inlinedSend:withBlock:withBlock:", "new"]
- }, function ($methodClass){ return function (anIRInstruction,anotherIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._mustBeNiladicClosure_(anIRInstruction)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["mustBeNiladicClosure:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._mustBeNiladicClosure_(anotherIRInstruction);
- return $self._inlinedSend_withBlock_withBlock_($recv($globals.IRInlinedIfTrueIfFalse)._new(),anIRInstruction,anotherIRInstruction);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ifTrue:ifFalse:",{anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "inlineClosure:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRClosure"],
- source: "inlineClosure: anIRClosure\x0a\x09| inlinedClosure sequence statements |\x0a\x0a\x09inlinedClosure := self inlinedClosure.\x0a\x09inlinedClosure \x0a\x09\x09scope: anIRClosure scope;\x0a\x09\x09parent: anIRClosure parent.\x0a\x0a\x09\x22Add the possible temp declarations\x22\x0a\x09anIRClosure tempDeclarations do: [ :each |\x0a\x09\x09\x09inlinedClosure add: each ].\x0a\x0a\x09\x22Add a block sequence\x22\x0a\x09sequence := self inlinedSequence.\x0a\x0a\x09\x22Map the closure arguments to the receiver of the message send\x22\x0a\x09anIRClosure arguments do: [ :each |\x0a\x09\x09inlinedClosure add: (IRTempDeclaration new name: each; yourself).\x0a\x09\x09sequence add: (IRAssignment new\x0a\x09\x09\x09add: (IRVariable new variable: (ArgVar new scope: inlinedClosure scope; name: each; yourself));\x0a\x09\x09\x09add: self send receiver;\x0a\x09\x09\x09yourself) ].\x0a\x09\x09\x09\x0a\x09\x22To ensure the correct order of the closure instructions: first the temps then the sequence\x22\x0a\x09inlinedClosure add: sequence.\x0a\x0a\x09\x22Get all the statements\x22\x0a\x09statements := anIRClosure sequence dagChildren.\x0a\x09\x0a\x09statements ifNotEmpty: [\x0a\x09\x09statements allButLast do: [ :each | sequence add: each ].\x0a\x0a\x09\x09\x22Inlined closures change local returns into result value itself\x22\x0a\x09\x09sequence add: statements last asInlinedBlockResult ].\x0a\x0a\x09^ inlinedClosure",
- referencedClasses: ["IRTempDeclaration", "IRAssignment", "IRVariable", "ArgVar"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["inlinedClosure", "scope:", "scope", "parent:", "parent", "do:", "tempDeclarations", "add:", "inlinedSequence", "arguments", "name:", "new", "yourself", "variable:", "receiver", "send", "dagChildren", "sequence", "ifNotEmpty:", "allButLast", "asInlinedBlockResult", "last"]
- }, function ($methodClass){ return function (anIRClosure){
- var self=this,$self=this;
- var inlinedClosure,sequence,statements;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3,$4,$5,$6,$7;
- inlinedClosure=$self._inlinedClosure();
- $1=inlinedClosure;
- [$recv($1)._scope_([$recv(anIRClosure)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._parent_($recv(anIRClosure)._parent());
- [$recv($recv(anIRClosure)._tempDeclarations())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(inlinedClosure)._add_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- sequence=$self._inlinedSequence();
- [$recv($recv(anIRClosure)._arguments())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $2=inlinedClosure;
- $3=[$recv($globals.IRTempDeclaration)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($3)._name_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["name:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._add_([$recv($3)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["add:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $4=sequence;
- $5=[$recv($globals.IRAssignment)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0];
- $6=[$recv($globals.IRVariable)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0];
- $7=$recv($globals.ArgVar)._new();
- $recv($7)._scope_($recv(inlinedClosure)._scope());
- $recv($7)._name_(each);
- [$recv($5)._add_($recv($6)._variable_([$recv($7)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["yourself"]=2
- //>>excludeEnd("ctx");
- ][0]))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["add:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv($5)._add_($recv($self._send())._receiver())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["add:"]=5
- //>>excludeEnd("ctx");
- ][0];
- return [$recv($4)._add_($recv($5)._yourself())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["add:"]=3
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["do:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(inlinedClosure)._add_(sequence)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=6
- //>>excludeEnd("ctx");
- ][0];
- statements=$recv($recv(anIRClosure)._sequence())._dagChildren();
- $recv(statements)._ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv($recv(statements)._allButLast())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [$recv(sequence)._add_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["add:"]=7
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,4)});
- //>>excludeEnd("ctx");
- }));
- return $recv(sequence)._add_($recv($recv(statements)._last())._asInlinedBlockResult());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return inlinedClosure;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure,inlinedClosure:inlinedClosure,sequence:sequence,statements:statements})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "inlineSend:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRSend"],
- source: "inlineSend: anIRSend\x0a\x09self send: anIRSend.\x0a\x09^ self\x0a\x09\x09perform: self send selector\x0a\x09\x09withArguments: self send arguments",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["send:", "perform:withArguments:", "selector", "send", "arguments"]
- }, function ($methodClass){ return function (anIRSend){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._send_(anIRSend);
- return $self._perform_withArguments_($recv([$self._send()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["send"]=1
- //>>excludeEnd("ctx");
- ][0])._selector(),$recv($self._send())._arguments());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inlineSend:",{anIRSend:anIRSend})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "inlineSend:andReplace:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRSend", "anIRInstruction"],
- source: "inlineSend: anIRSend andReplace: anIRInstruction\x0a\x09anIRInstruction replaceWith: anIRSend.\x0a\x09^ self inlineSend: anIRSend",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["replaceWith:", "inlineSend:"]
- }, function ($methodClass){ return function (anIRSend,anIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(anIRInstruction)._replaceWith_(anIRSend);
- return $self._inlineSend_(anIRSend);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inlineSend:andReplace:",{anIRSend:anIRSend,anIRInstruction:anIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "inlinedClosure",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "inlinedClosure\x0a\x09^ IRInlinedClosure new",
- referencedClasses: ["IRInlinedClosure"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.IRInlinedClosure)._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inlinedClosure",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "inlinedClosure:wrapFinalValueIn:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["closure", "aBlock"],
- source: "inlinedClosure: closure wrapFinalValueIn: aBlock\x0a\x09| sequence final |\x0a\x0a\x09sequence := closure sequence.\x0a\x09\x0a\x09sequence dagChildren ifEmpty: [ sequence add: (IRVariable new\x0a\x09\x09variable: (closure scope pseudoVars at: 'nil');\x0a\x09\x09yourself) ].\x0a\x09final := sequence dagChildren last.\x0a\x09final yieldsValue ifTrue: [ sequence replace: final with: (aBlock value: final) ].\x0a\x0a\x09^ closure",
- referencedClasses: ["IRVariable"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["sequence", "ifEmpty:", "dagChildren", "add:", "variable:", "new", "at:", "pseudoVars", "scope", "yourself", "last", "ifTrue:", "yieldsValue", "replace:with:", "value:"]
- }, function ($methodClass){ return function (closure,aBlock){
- var self=this,$self=this;
- var sequence,final;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- sequence=$recv(closure)._sequence();
- $recv([$recv(sequence)._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=1
- //>>excludeEnd("ctx");
- ][0])._ifEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $1=sequence;
- $2=$recv($globals.IRVariable)._new();
- $recv($2)._variable_($recv($recv($recv(closure)._scope())._pseudoVars())._at_("nil"));
- return $recv($1)._add_($recv($2)._yourself());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- final=$recv($recv(sequence)._dagChildren())._last();
- if($core.assert($recv(final)._yieldsValue())){
- $recv(sequence)._replace_with_(final,$recv(aBlock)._value_(final));
- }
- return closure;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inlinedClosure:wrapFinalValueIn:",{closure:closure,aBlock:aBlock,sequence:sequence,final:final})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "inlinedSend:withBlock:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["inlinedSend", "anIRInstruction"],
- source: "inlinedSend: inlinedSend withBlock: anIRInstruction\x0a\x09| inlinedClosure |\x0a\x0a\x09inlinedClosure := self translator visit: (self inlineClosure: anIRInstruction).\x0a\x0a\x09inlinedSend\x0a\x09\x09add: self send receiver;\x0a\x09\x09add: inlinedClosure.\x0a\x0a\x09self send replaceWith: inlinedSend.\x0a\x09inlinedSend method internalVariables \x0a\x09\x09addAll: inlinedSend internalVariables.\x0a\x0a\x09^ inlinedSend",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visit:", "translator", "inlineClosure:", "add:", "receiver", "send", "replaceWith:", "addAll:", "internalVariables", "method"]
- }, function ($methodClass){ return function (inlinedSend,anIRInstruction){
- var self=this,$self=this;
- var inlinedClosure;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- inlinedClosure=$recv($self._translator())._visit_($self._inlineClosure_(anIRInstruction));
- [$recv(inlinedSend)._add_($recv([$self._send()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["send"]=1
- //>>excludeEnd("ctx");
- ][0])._receiver())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(inlinedSend)._add_(inlinedClosure);
- $recv($self._send())._replaceWith_(inlinedSend);
- $recv([$recv($recv(inlinedSend)._method())._internalVariables()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["internalVariables"]=1
- //>>excludeEnd("ctx");
- ][0])._addAll_($recv(inlinedSend)._internalVariables());
- return inlinedSend;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inlinedSend:withBlock:",{inlinedSend:inlinedSend,anIRInstruction:anIRInstruction,inlinedClosure:inlinedClosure})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "inlinedSend:withBlock:withBlock:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["inlinedSend", "anIRInstruction", "anotherIRInstruction"],
- source: "inlinedSend: inlinedSend withBlock: anIRInstruction withBlock: anotherIRInstruction\x0a\x09| inlinedClosure1 inlinedClosure2 |\x0a\x0a\x09inlinedClosure1 := self translator visit: (self inlineClosure: anIRInstruction).\x0a\x09inlinedClosure2 := self translator visit: (self inlineClosure: anotherIRInstruction).\x0a\x0a\x09inlinedSend\x0a\x09\x09add: self send receiver;\x0a\x09\x09add: inlinedClosure1;\x0a\x09\x09add: inlinedClosure2.\x0a\x0a\x09self send replaceWith: inlinedSend.\x0a\x09inlinedSend method internalVariables \x0a\x09\x09addAll: inlinedSend internalVariables.\x0a\x09\x09\x0a\x09^ inlinedSend",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visit:", "translator", "inlineClosure:", "add:", "receiver", "send", "replaceWith:", "addAll:", "internalVariables", "method"]
- }, function ($methodClass){ return function (inlinedSend,anIRInstruction,anotherIRInstruction){
- var self=this,$self=this;
- var inlinedClosure1,inlinedClosure2;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- inlinedClosure1=[$recv([$self._translator()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["translator"]=1
- //>>excludeEnd("ctx");
- ][0])._visit_([$self._inlineClosure_(anIRInstruction)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["inlineClosure:"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["visit:"]=1
- //>>excludeEnd("ctx");
- ][0];
- inlinedClosure2=$recv($self._translator())._visit_($self._inlineClosure_(anotherIRInstruction));
- [$recv(inlinedSend)._add_($recv([$self._send()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["send"]=1
- //>>excludeEnd("ctx");
- ][0])._receiver())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(inlinedSend)._add_(inlinedClosure1)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(inlinedSend)._add_(inlinedClosure2);
- $recv($self._send())._replaceWith_(inlinedSend);
- $recv([$recv($recv(inlinedSend)._method())._internalVariables()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["internalVariables"]=1
- //>>excludeEnd("ctx");
- ][0])._addAll_($recv(inlinedSend)._internalVariables());
- return inlinedSend;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inlinedSend:withBlock:withBlock:",{inlinedSend:inlinedSend,anIRInstruction:anIRInstruction,anotherIRInstruction:anotherIRInstruction,inlinedClosure1:inlinedClosure1,inlinedClosure2:inlinedClosure2})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "inlinedSequence",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "inlinedSequence\x0a\x09^ IRInlinedSequence new",
- referencedClasses: ["IRInlinedSequence"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.IRInlinedSequence)._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inlinedSequence",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "inliningError:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "inliningError: aString\x0a\x09InliningError signal: aString",
- referencedClasses: ["InliningError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["signal:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.InliningError)._signal_(aString);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inliningError:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "mustBeNiladicClosure:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction"],
- source: "mustBeNiladicClosure: anIRInstruction\x0a\x09anIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].\x0a\x09anIRInstruction arguments size = 0 ifFalse: [ self inliningError: 'Inlined block should have zero argument' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "isClosure", "inliningError:", "=", "size", "arguments"]
- }, function ($methodClass){ return function (anIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv(anIRInstruction)._isClosure())){
- [$self._inliningError_("Message argument should be a block")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["inliningError:"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- if(!$core.assert($recv($recv($recv(anIRInstruction)._arguments())._size()).__eq((0)))){
- $self._inliningError_("Inlined block should have zero argument");
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"mustBeNiladicClosure:",{anIRInstruction:anIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "mustBeNiladicOrUnaryClosure:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction"],
- source: "mustBeNiladicOrUnaryClosure: anIRInstruction\x0a\x09anIRInstruction isClosure ifFalse: [ self inliningError: 'Message argument should be a block' ].\x0a\x09anIRInstruction arguments size <= 1 ifFalse: [ self inliningError: 'Inlined block should have at most one argument' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "isClosure", "inliningError:", "<=", "size", "arguments"]
- }, function ($methodClass){ return function (anIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv(anIRInstruction)._isClosure())){
- [$self._inliningError_("Message argument should be a block")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["inliningError:"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- if(!$core.assert($recv($recv($recv(anIRInstruction)._arguments())._size()).__lt_eq((1)))){
- $self._inliningError_("Inlined block should have at most one argument");
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"mustBeNiladicOrUnaryClosure:",{anIRInstruction:anIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "or:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInstruction"],
- source: "or: anIRInstruction\x0a\x09self mustBeNiladicClosure: anIRInstruction.\x0a\x09^ self\x0a\x09\x09inlinedSend: IRInlinedIfTrueIfFalse new\x0a\x09\x09withBlock: (IRClosure new\x0a\x09\x09\x09scope: anIRInstruction scope copy;\x0a\x09\x09\x09add: (IRBlockSequence new\x0a\x09\x09\x09\x09add: (IRValue new value: true; yourself);\x0a\x09\x09\x09\x09yourself);\x0a\x09\x09\x09yourself)\x0a\x09\x09withBlock: anIRInstruction",
- referencedClasses: ["IRInlinedIfTrueIfFalse", "IRClosure", "IRBlockSequence", "IRValue"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["mustBeNiladicClosure:", "inlinedSend:withBlock:withBlock:", "new", "scope:", "copy", "scope", "add:", "value:", "yourself"]
- }, function ($methodClass){ return function (anIRInstruction){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3,$4;
- $self._mustBeNiladicClosure_(anIRInstruction);
- $1=[$recv($globals.IRInlinedIfTrueIfFalse)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $2=[$recv($globals.IRClosure)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._scope_($recv($recv(anIRInstruction)._scope())._copy());
- $3=[$recv($globals.IRBlockSequence)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0];
- $4=$recv($globals.IRValue)._new();
- $recv($4)._value_(true);
- $recv($3)._add_([$recv($4)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0]);
- [$recv($2)._add_([$recv($3)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $self._inlinedSend_withBlock_withBlock_($1,$recv($2)._yourself(),anIRInstruction);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"or:",{anIRInstruction:anIRInstruction})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "send",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "send\x0a\x09^ send",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.send;
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "send:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRSend"],
- source: "send: anIRSend\x0a\x09send := anIRSend",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anIRSend){
- var self=this,$self=this;
- $self.send=anIRSend;
- return self;
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "translator",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "translator\x0a\x09^ translator",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.translator;
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "translator:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anASTTranslator"],
- source: "translator: anASTTranslator\x0a\x09translator := anASTTranslator",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anASTTranslator){
- var self=this,$self=this;
- $self.translator=anASTTranslator;
- return self;
- }; }),
- $globals.IRSendInliner);
- $core.addMethod(
- $core.method({
- selector: "inlinedSelectors",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "inlinedSelectors\x0a\x09^ #(\x0a\x09\x09ifTrue: ifFalse: ifTrue:ifFalse: ifFalse:ifTrue:\x0a\x09\x09ifNil: ifNotNil: ifNil:ifNotNil: ifNotNil:ifNil:\x0a\x09\x09and: or:\x0a\x09)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return ["ifTrue:", "ifFalse:", "ifTrue:ifFalse:", "ifFalse:ifTrue:", "ifNil:", "ifNotNil:", "ifNil:ifNotNil:", "ifNotNil:ifNil:", "and:", "or:"];
- }; }),
- $globals.IRSendInliner.a$cls);
- $core.addMethod(
- $core.method({
- selector: "inlinedSelectorsNeedingIdempotentReceiver",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "inlinedSelectorsNeedingIdempotentReceiver\x0a\x09^ #(\x0a\x09\x09ifNil: ifNotNil: ifNil:ifNotNil: ifNotNil:ifNil:\x0a\x09)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return ["ifNil:", "ifNotNil:", "ifNil:ifNotNil:", "ifNotNil:ifNil:"];
- }; }),
- $globals.IRSendInliner.a$cls);
- $core.addMethod(
- $core.method({
- selector: "shouldInline:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRSend"],
- source: "shouldInline: anIRSend\x0a\x09^ (self inlinedSelectors includes: anIRSend selector) and: [\x0a\x09\x09anIRSend receiver isSuper not and: [\x0a\x09\x09\x09anIRSend arguments allSatisfy: [ :each | each isClosure ] ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["and:", "includes:", "inlinedSelectors", "selector", "not", "isSuper", "receiver", "allSatisfy:", "arguments", "isClosure"]
- }, function ($methodClass){ return function (anIRSend){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($self._inlinedSelectors())._includes_($recv(anIRSend)._selector()))){
- if($core.assert($recv($recv($recv(anIRSend)._receiver())._isSuper())._not())){
- return $recv($recv(anIRSend)._arguments())._allSatisfy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._isClosure();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- } else {
- return false;
- }
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shouldInline:",{anIRSend:anIRSend})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRSendInliner.a$cls);
- $core.addClass("IRAssignmentInliner", $globals.IRSendInliner, "Compiler-Inlining");
- $core.setSlots($globals.IRAssignmentInliner, ["target"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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};";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "inlineAssignment:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRAssignment"],
- source: "inlineAssignment: anIRAssignment\x0a\x09self target: anIRAssignment left.\x0a\x09^ self inlineSend: anIRAssignment right andReplace: anIRAssignment",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["target:", "left", "inlineSend:andReplace:", "right"]
- }, function ($methodClass){ return function (anIRAssignment){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._target_($recv(anIRAssignment)._left());
- return $self._inlineSend_andReplace_($recv(anIRAssignment)._right(),anIRAssignment);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inlineAssignment:",{anIRAssignment:anIRAssignment})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRAssignmentInliner);
- $core.addMethod(
- $core.method({
- selector: "inlineClosure:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRClosure"],
- source: "inlineClosure: anIRClosure\x0a\x09^ self\x0a\x09\x09inlinedClosure: (super inlineClosure: anIRClosure)\x0a\x09\x09wrapFinalValueIn: [ :final |\x0a\x09\x09\x09IRAssignment new\x0a\x09\x09\x09\x09add: self target;\x0a\x09\x09\x09\x09add: final copy;\x0a\x09\x09\x09\x09yourself ]",
- referencedClasses: ["IRAssignment"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["inlinedClosure:wrapFinalValueIn:", "inlineClosure:", "add:", "new", "target", "copy", "yourself"]
- }, function ($methodClass){ return function (anIRClosure){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- return $self._inlinedClosure_wrapFinalValueIn_([(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._inlineClosure_.call($self,anIRClosure))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0],(function(final){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $1=$recv($globals.IRAssignment)._new();
- [$recv($1)._add_($self._target())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._add_($recv(final)._copy());
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({final:final},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRAssignmentInliner);
- $core.addMethod(
- $core.method({
- selector: "target",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "target\x0a\x09^ target",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.target;
- }; }),
- $globals.IRAssignmentInliner);
- $core.addMethod(
- $core.method({
- selector: "target:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "target: anObject\x0a\x09target := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.target=anObject;
- return self;
- }; }),
- $globals.IRAssignmentInliner);
- $core.addClass("IRNonLocalReturnInliner", $globals.IRSendInliner, "Compiler-Inlining");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRNonLocalReturnInliner.comment="I inline message sends with inlined closure together with a return instruction.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "inlineClosure:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRClosure"],
- source: "inlineClosure: anIRClosure\x0a\x09^ self\x0a\x09\x09inlinedClosure: (super inlineClosure: anIRClosure)\x0a\x09\x09wrapFinalValueIn: [ :final |\x0a\x09\x09\x09IRNonLocalReturn new\x0a\x09\x09\x09\x09add: final copy;\x0a\x09\x09\x09\x09yourself ]",
- referencedClasses: ["IRNonLocalReturn"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["inlinedClosure:wrapFinalValueIn:", "inlineClosure:", "add:", "new", "copy", "yourself"]
- }, function ($methodClass){ return function (anIRClosure){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- return $self._inlinedClosure_wrapFinalValueIn_([(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._inlineClosure_.call($self,anIRClosure))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0],(function(final){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $1=$recv($globals.IRNonLocalReturn)._new();
- $recv($1)._add_($recv(final)._copy());
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({final:final},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRNonLocalReturnInliner);
- $core.addMethod(
- $core.method({
- selector: "inlineReturn:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRReturn"],
- source: "inlineReturn: anIRReturn\x0a\x09^ self inlineSend: anIRReturn expression andReplace: anIRReturn",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["inlineSend:andReplace:", "expression"]
- }, function ($methodClass){ return function (anIRReturn){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._inlineSend_andReplace_($recv(anIRReturn)._expression(),anIRReturn);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inlineReturn:",{anIRReturn:anIRReturn})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRNonLocalReturnInliner);
- $core.addClass("IRReturnInliner", $globals.IRSendInliner, "Compiler-Inlining");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.IRReturnInliner.comment="I inline message sends with inlined closure together with a return instruction.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "inlineClosure:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRClosure"],
- source: "inlineClosure: anIRClosure\x0a\x09^ self\x0a\x09\x09inlinedClosure: (super inlineClosure: anIRClosure)\x0a\x09\x09wrapFinalValueIn: [ :final |\x0a\x09\x09\x09IRReturn new\x0a\x09\x09\x09\x09add: final copy;\x0a\x09\x09\x09\x09yourself ]",
- referencedClasses: ["IRReturn"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["inlinedClosure:wrapFinalValueIn:", "inlineClosure:", "add:", "new", "copy", "yourself"]
- }, function ($methodClass){ return function (anIRClosure){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- return $self._inlinedClosure_wrapFinalValueIn_([(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._inlineClosure_.call($self,anIRClosure))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0],(function(final){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $1=$recv($globals.IRReturn)._new();
- $recv($1)._add_($recv(final)._copy());
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({final:final},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inlineClosure:",{anIRClosure:anIRClosure})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRReturnInliner);
- $core.addMethod(
- $core.method({
- selector: "inlineReturn:",
- protocol: "inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRReturn"],
- source: "inlineReturn: anIRReturn\x0a\x09^ self inlineSend: anIRReturn expression andReplace: anIRReturn",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["inlineSend:andReplace:", "expression"]
- }, function ($methodClass){ return function (anIRReturn){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._inlineSend_andReplace_($recv(anIRReturn)._expression(),anIRReturn);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inlineReturn:",{anIRReturn:anIRReturn})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRReturnInliner);
- $core.addClass("InliningCodeGenerator", $globals.CodeGenerator, "Compiler-Inlining");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.InliningCodeGenerator.comment="I am a specialized code generator that uses inlining to produce more optimized JavaScript output";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "inliner",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "inliner\x0a\x09^ IRInliner new",
- referencedClasses: ["IRInliner"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.IRInliner)._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inliner",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.InliningCodeGenerator);
- $core.addMethod(
- $core.method({
- selector: "irTranslatorClass",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "irTranslatorClass\x0a\x09^ IRInliningJSTranslator",
- referencedClasses: ["IRInliningJSTranslator"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.IRInliningJSTranslator;
- }; }),
- $globals.InliningCodeGenerator);
- $core.addMethod(
- $core.method({
- selector: "preInliner",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "preInliner\x0a\x09^ ASTPreInliner new",
- referencedClasses: ["ASTPreInliner"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.ASTPreInliner)._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"preInliner",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.InliningCodeGenerator);
- $core.addMethod(
- $core.method({
- selector: "transformersDictionary",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "transformersDictionary\x0a\x09^ transformersDictionary ifNil: [ transformersDictionary := super transformersDictionary\x0a\x09\x09at: '3000-inlinerTagging' put: self preInliner;\x0a\x09\x09at: '6000-inliner' put: self inliner;\x0a\x09\x09at: '8000-irToJs' put: self irTranslator;\x0a\x09\x09yourself ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "at:put:", "transformersDictionary", "preInliner", "inliner", "irTranslator", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=$self.transformersDictionary;
- if($1 == null || $1.a$nil){
- $2=[(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._transformersDictionary.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._at_put_("3000-inlinerTagging",$self._preInliner())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._at_put_("6000-inliner",$self._inliner())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._at_put_("8000-irToJs",$self._irTranslator());
- $self.transformersDictionary=$recv($2)._yourself();
- return $self.transformersDictionary;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"transformersDictionary",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.InliningCodeGenerator);
- $core.addClass("InliningError", $globals.SemanticError, "Compiler-Inlining");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.InliningError.comment="Instances of InliningError are signaled when using an `InliningCodeGenerator`in a `Compiler`.";
- //>>excludeEnd("ide");
- $core.addTrait("TIRInlinedVisitor", "Compiler-Inlining");
- $core.addMethod(
- $core.method({
- selector: "visitIRInlinedClosure:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInlinedClosure"],
- source: "visitIRInlinedClosure: anIRInlinedClosure\x0a\x09^ self visitIRClosure: anIRInlinedClosure",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRClosure:"]
- }, function ($methodClass){ return function (anIRInlinedClosure){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitIRClosure_(anIRInlinedClosure);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedClosure:",{anIRInlinedClosure:anIRInlinedClosure})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TIRInlinedVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitIRInlinedSequence:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anIRInlinedSequence"],
- source: "visitIRInlinedSequence: anIRInlinedSequence\x0a\x09^ self visitIRSequence: anIRInlinedSequence",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitIRSequence:"]
- }, function ($methodClass){ return function (anIRInlinedSequence){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._visitIRSequence_(anIRInlinedSequence);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitIRInlinedSequence:",{anIRInlinedSequence:anIRInlinedSequence})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TIRInlinedVisitor);
- $core.setTraitComposition([{trait: $globals.TIRInlinedVisitor}], $globals.IRInliner);
- $core.setTraitComposition([{trait: $globals.TIRInlinedVisitor}], $globals.IRInliningJSTranslator);
- $core.addMethod(
- $core.method({
- selector: "asInlinedBlockResult",
- protocol: "*Compiler-Inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asInlinedBlockResult\x0a\x09^ self expression",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["expression"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._expression();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asInlinedBlockResult",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.IRBlockReturn);
- $core.addMethod(
- $core.method({
- selector: "asInlinedBlockResult",
- protocol: "*Compiler-Inlining",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asInlinedBlockResult\x0a\x09^ self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.IRInstruction);
- });
- define('amber/core/Compiler-Interpreter',["amber/boot", "require", "amber/core/Compiler-AST", "amber/core/Compiler-Core", "amber/core/Compiler-Semantic", "amber/core/Kernel-Exceptions", "amber/core/Kernel-Methods", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Compiler-Interpreter");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("AIBlockClosure", $globals.BlockClosure, "Compiler-Interpreter");
- $core.setSlots($globals.AIBlockClosure, ["node", "outerContext"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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`).";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "applyTo:arguments:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "aCollection"],
- source: "applyTo: anObject arguments: aCollection\x0a\x09self interpreterError",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["interpreterError"]
- }, function ($methodClass){ return function (anObject,aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._interpreterError();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"applyTo:arguments:",{anObject:anObject,aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIBlockClosure);
- $core.addMethod(
- $core.method({
- selector: "compiledSource",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "compiledSource\x0a\x09\x22Unlike blocks, the receiver doesn't represent a JS function\x22\x0a\x09\x0a\x09^ '[ AST Block closure ]'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "[ AST Block closure ]";
- }; }),
- $globals.AIBlockClosure);
- $core.addMethod(
- $core.method({
- selector: "currySelf",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "currySelf\x0a\x09self interpreterError",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["interpreterError"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._interpreterError();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"currySelf",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIBlockClosure);
- $core.addMethod(
- $core.method({
- selector: "initializeWithContext:node:",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext", "aNode"],
- source: "initializeWithContext: aContext node: aNode\x0a\x09node := aNode.\x0a\x09outerContext := aContext",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aContext,aNode){
- var self=this,$self=this;
- $self.node=aNode;
- $self.outerContext=aContext;
- return self;
- }; }),
- $globals.AIBlockClosure);
- $core.addMethod(
- $core.method({
- selector: "interpreterError",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "interpreterError\x0a\x09ASTInterpreterError signal: 'Method cannot be interpreted by the interpreter.'",
- referencedClasses: ["ASTInterpreterError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["signal:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.ASTInterpreterError)._signal_("Method cannot be interpreted by the interpreter.");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"interpreterError",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIBlockClosure);
- $core.addMethod(
- $core.method({
- selector: "numArgs",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "numArgs\x0a\x09^ node temps size",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["size", "temps"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($self.node)._temps())._size();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"numArgs",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIBlockClosure);
- $core.addMethod(
- $core.method({
- selector: "value",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "value\x0a\x09^ self valueWithPossibleArguments: #()",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["valueWithPossibleArguments:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._valueWithPossibleArguments_([]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIBlockClosure);
- $core.addMethod(
- $core.method({
- selector: "value:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anArgument"],
- source: "value: anArgument\x0a\x09^ self valueWithPossibleArguments: {anArgument}",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["valueWithPossibleArguments:"]
- }, function ($methodClass){ return function (anArgument){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._valueWithPossibleArguments_([anArgument]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:",{anArgument:anArgument})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIBlockClosure);
- $core.addMethod(
- $core.method({
- selector: "value:value:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["firstArgument", "secondArgument"],
- source: "value: firstArgument value: secondArgument\x0a\x09^ self valueWithPossibleArguments: {firstArgument . secondArgument}",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["valueWithPossibleArguments:"]
- }, function ($methodClass){ return function (firstArgument,secondArgument){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._valueWithPossibleArguments_([firstArgument,secondArgument]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:value:",{firstArgument:firstArgument,secondArgument:secondArgument})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIBlockClosure);
- $core.addMethod(
- $core.method({
- selector: "value:value:value:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["firstArgument", "secondArgument", "thirdArgument"],
- source: "value: firstArgument value: secondArgument value: thirdArgument\x0a\x09^ self valueWithPossibleArguments: {firstArgument . secondArgument . thirdArgument}",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["valueWithPossibleArguments:"]
- }, function ($methodClass){ return function (firstArgument,secondArgument,thirdArgument){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._valueWithPossibleArguments_([firstArgument,secondArgument,thirdArgument]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"value:value:value:",{firstArgument:firstArgument,secondArgument:secondArgument,thirdArgument:thirdArgument})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIBlockClosure);
- $core.addMethod(
- $core.method({
- selector: "valueWithPossibleArguments:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "valueWithPossibleArguments: aCollection\x0a\x09| context sequenceNode |\x0a\x09context := outerContext newInnerContext.\x0a\x0a\x09\x22Interpret a copy of the sequence node to avoid creating a new AIBlockClosure\x22\x0a\x09sequenceNode := node sequenceNode copy\x0a\x09\x09parent: nil;\x0a\x09\x09yourself.\x0a\x09\x09\x0a\x09\x22Define locals in the context\x22\x0a\x09sequenceNode temps do: [ :each |\x0a\x09\x09context defineLocal: each ].\x0a\x09\x09\x0a\x09\x22Populate the arguments into the context locals\x22\x09\x0a\x09node parameters withIndexDo: [ :each :index |\x0a\x09\x09context defineLocal: each.\x0a\x09\x09context localAt: each put: (aCollection at: index ifAbsent: [ nil ]) ].\x0a\x0a\x09\x22Interpret the first node of the BlockSequenceNode\x22\x0a\x09context interpreter\x0a\x09\x09node: sequenceNode;\x0a\x09\x09enterNode;\x0a\x09\x09proceed.\x0a\x09\x09\x0a\x09outerContext interpreter\x0a\x09\x09setNonLocalReturnFromContext: context.\x0a\x09\x09\x0a\x09^ context interpreter pop",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["newInnerContext", "parent:", "copy", "sequenceNode", "yourself", "do:", "temps", "defineLocal:", "withIndexDo:", "parameters", "localAt:put:", "at:ifAbsent:", "node:", "interpreter", "enterNode", "proceed", "setNonLocalReturnFromContext:", "pop"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- var context,sequenceNode;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- context=$recv($self.outerContext)._newInnerContext();
- $1=$recv($recv($self.node)._sequenceNode())._copy();
- $recv($1)._parent_(nil);
- sequenceNode=$recv($1)._yourself();
- $recv($recv(sequenceNode)._temps())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(context)._defineLocal_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["defineLocal:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv($recv($self.node)._parameters())._withIndexDo_((function(each,index){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(context)._defineLocal_(each);
- return $recv(context)._localAt_put_(each,$recv(aCollection)._at_ifAbsent_(index,(function(){
- return nil;
- })));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each,index:index},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $2=[$recv(context)._interpreter()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["interpreter"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._node_(sequenceNode);
- $recv($2)._enterNode();
- $recv($2)._proceed();
- $recv([$recv($self.outerContext)._interpreter()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["interpreter"]=2
- //>>excludeEnd("ctx");
- ][0])._setNonLocalReturnFromContext_(context);
- return $recv($recv(context)._interpreter())._pop();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"valueWithPossibleArguments:",{aCollection:aCollection,context:context,sequenceNode:sequenceNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIBlockClosure);
- $core.addMethod(
- $core.method({
- selector: "forContext:node:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext", "aNode"],
- source: "forContext: aContext node: aNode\x0a\x09^ self new\x0a\x09\x09initializeWithContext: aContext node: aNode;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initializeWithContext:node:", "new", "yourself"]
- }, function ($methodClass){ return function (aContext,aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._initializeWithContext_node_(aContext,aNode);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"forContext:node:",{aContext:aContext,aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIBlockClosure.a$cls);
- $core.addClass("AIContext", $globals.Object, "Compiler-Interpreter");
- $core.setSlots($globals.AIContext, ["outerContext", "innerContext", "pc", "locals", "selector", "index", "sendIndexes", "evaluatedSelector", "ast", "interpreter", "supercall"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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)";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "arguments",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "arguments\x0a\x09^ self ast arguments collect: [ :each |\x0a\x09\x09self localAt: each ifAbsent: [ self error: 'Argument not in context' ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "arguments", "ast", "localAt:ifAbsent:", "error:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($self._ast())._arguments())._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._localAt_ifAbsent_(each,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._error_("Argument not in context");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"arguments",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "ast",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "ast\x0a\x09self isBlockContext ifTrue: [ \x0a\x09\x09^ self outerContext ifNotNil: [ :context | context ast ] ].\x0a\x0a\x09ast ifNil: [ self initializeAST ].\x0a\x09^ ast",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "isBlockContext", "ifNotNil:", "outerContext", "ast", "ifNil:", "initializeAST"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- if($core.assert($self._isBlockContext())){
- $1=$self._outerContext();
- if($1 == null || $1.a$nil){
- return $1;
- } else {
- var context;
- context=$1;
- return $recv(context)._ast();
- }
- }
- $2=$self.ast;
- if($2 == null || $2.a$nil){
- $self._initializeAST();
- } else {
- $2;
- }
- return $self.ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"ast",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "basicLocalAt:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "basicLocalAt: aString\x0a\x09^ self locals at: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:", "locals"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._locals())._at_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicLocalAt:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "basicLocalAt:put:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "basicLocalAt: aString put: anObject\x0a\x09self locals at: aString put: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "locals"]
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._locals())._at_put_(aString,anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicLocalAt:put:",{aString:aString,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "basicReceiver",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "basicReceiver\x0a\x09^ self localAt: 'self'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["localAt:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._localAt_("self");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basicReceiver",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "defineLocal:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "defineLocal: aString\x0a\x09self locals at: aString put: nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "locals"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._locals())._at_put_(aString,nil);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"defineLocal:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "evaluate:on:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anEvaluator"],
- source: "evaluate: aString on: anEvaluator\x0a\x09^ anEvaluator evaluate: aString context: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["evaluate:context:"]
- }, function ($methodClass){ return function (aString,anEvaluator){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(anEvaluator)._evaluate_context_(aString,self);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"evaluate:on:",{aString:aString,anEvaluator:anEvaluator})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "evaluateNode:",
- protocol: "evaluating",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "evaluateNode: aNode\x0a\x09^ ASTInterpreter new\x0a\x09\x09context: self;\x0a\x09\x09node: aNode;\x0a\x09\x09enterNode;\x0a\x09\x09proceed;\x0a\x09\x09result",
- referencedClasses: ["ASTInterpreter"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["context:", "new", "node:", "enterNode", "proceed", "result"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.ASTInterpreter)._new();
- $recv($1)._context_(self);
- $recv($1)._node_(aNode);
- $recv($1)._enterNode();
- $recv($1)._proceed();
- return $recv($1)._result();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"evaluateNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "evaluatedSelector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "evaluatedSelector\x0a\x09^ evaluatedSelector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.evaluatedSelector;
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "evaluatedSelector:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "evaluatedSelector: aString\x0a\x09evaluatedSelector := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.evaluatedSelector=aString;
- return self;
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "home",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "home\x0a\x09^ nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return nil;
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "index",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "index\x0a\x09^ index ifNil: [ 0 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.index;
- if($1 == null || $1.a$nil){
- return (0);
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"index",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "index:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- source: "index: anInteger\x0a\x09index := anInteger",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- $self.index=anInteger;
- return self;
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "initializeAST",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initializeAST\x0a\x09ast := self method ast.\x0a\x09(SemanticAnalyzer on: self method origin)\x0a\x09\x09visit: ast",
- referencedClasses: ["SemanticAnalyzer"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ast", "method", "visit:", "on:", "origin"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.ast=$recv([$self._method()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["method"]=1
- //>>excludeEnd("ctx");
- ][0])._ast();
- $recv($recv($globals.SemanticAnalyzer)._on_($recv($self._method())._origin()))._visit_($self.ast);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initializeAST",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "initializeFromMethodContext:",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethodContext"],
- 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 ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["evaluatedSelector:", "evaluatedSelector", "index:", "index", "sendIndexes:", "sendIndexes", "receiver:", "receiver", "supercall:", "supercall", "selector:", "selector", "ifNotNil:", "outerContext", "methodContext", "outerContext:", "fromMethodContext:", "class", "keysAndValuesDo:", "locals", "at:put:"]
- }, function ($methodClass){ return function (aMethodContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $self._evaluatedSelector_($recv(aMethodContext)._evaluatedSelector());
- $self._index_($recv(aMethodContext)._index());
- $self._sendIndexes_($recv(aMethodContext)._sendIndexes());
- $self._receiver_($recv(aMethodContext)._receiver());
- $self._supercall_($recv(aMethodContext)._supercall());
- $self._selector_($recv(aMethodContext)._selector());
- $1=[$recv(aMethodContext)._outerContext()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["outerContext"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- $1;
- } else {
- var outer;
- outer=$1;
- $2=$recv(outer)._methodContext();
- if($2 == null || $2.a$nil){
- $2;
- } else {
- $self._outerContext_($recv($self._class())._fromMethodContext_($recv(aMethodContext)._outerContext()));
- }
- $recv([$recv(aMethodContext)._locals()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["locals"]=1
- //>>excludeEnd("ctx");
- ][0])._keysAndValuesDo_((function(key,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._locals())._at_put_(key,value);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initializeFromMethodContext:",{aMethodContext:aMethodContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "initializeInterpreter",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initializeInterpreter\x0a\x09interpreter := ASTInterpreter new\x0a\x09\x09context: self;\x0a\x09\x09yourself.\x0a\x09\x0a\x09self innerContext ifNotNil: [\x0a\x09\x09self setupInterpreter: interpreter ]",
- referencedClasses: ["ASTInterpreter"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["context:", "new", "yourself", "ifNotNil:", "innerContext", "setupInterpreter:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=$recv($globals.ASTInterpreter)._new();
- $recv($1)._context_(self);
- $self.interpreter=$recv($1)._yourself();
- $2=$self._innerContext();
- if($2 == null || $2.a$nil){
- $2;
- } else {
- $self._setupInterpreter_($self.interpreter);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initializeInterpreter",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "initializeLocals",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initializeLocals\x0a\x09locals := Dictionary new.\x0a\x09locals at: 'thisContext' put: self.",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "at:put:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.locals=$recv($globals.Dictionary)._new();
- $recv($self.locals)._at_put_("thisContext",self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initializeLocals",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "innerContext",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "innerContext\x0a\x09^ innerContext",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.innerContext;
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "innerContext:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anAIContext"],
- source: "innerContext: anAIContext\x0a\x09innerContext := anAIContext",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anAIContext){
- var self=this,$self=this;
- $self.innerContext=anAIContext;
- return self;
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "interpreter",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "interpreter\x0a\x09interpreter ifNil: [ self initializeInterpreter ].\x0a\x09^ interpreter",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "initializeInterpreter"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.interpreter;
- if($1 == null || $1.a$nil){
- $self._initializeInterpreter();
- } else {
- $1;
- }
- return $self.interpreter;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"interpreter",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "interpreter:",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInterpreter"],
- source: "interpreter: anInterpreter\x0a\x09interpreter := anInterpreter",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anInterpreter){
- var self=this,$self=this;
- $self.interpreter=anInterpreter;
- return self;
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "isTopContext",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isTopContext\x0a\x09^ self innerContext isNil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["isNil", "innerContext"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._innerContext())._isNil();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isTopContext",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "localAt:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["lookupContextForLocal:", "basicLocalAt:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- var context;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- context=$self._lookupContextForLocal_(aString);
- return $recv(context)._basicLocalAt_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"localAt:",{aString:aString,context:context})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "localAt:ifAbsent:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["lookupContextForLocal:ifNone:", "value", "basicLocalAt:"]
- }, function ($methodClass){ return function (aString,aBlock){
- var self=this,$self=this;
- var context;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- context=$self._lookupContextForLocal_ifNone_(aString,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- throw $early=[$recv(aBlock)._value()];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return $recv(context)._basicLocalAt_(aString);
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"localAt:ifAbsent:",{aString:aString,aBlock:aBlock,context:context})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "localAt:put:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "localAt: aString put: anObject\x0a\x09| context |\x0a\x09\x0a\x09context := self lookupContextForLocal: aString.\x0a\x09context basicLocalAt: aString put: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["lookupContextForLocal:", "basicLocalAt:put:"]
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- var context;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- context=$self._lookupContextForLocal_(aString);
- $recv(context)._basicLocalAt_put_(aString,anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"localAt:put:",{aString:aString,anObject:anObject,context:context})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "locals",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "locals\x0a\x09locals ifNil: [ self initializeLocals ].\x0a\x09\x0a\x09^ locals",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "initializeLocals"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.locals;
- if($1 == null || $1.a$nil){
- $self._initializeLocals();
- } else {
- $1;
- }
- return $self.locals;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"locals",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "lookupContextForLocal:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["lookupContextForLocal:ifNone:", "variableNotFound"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._lookupContextForLocal_ifNone_(aString,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._variableNotFound();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"lookupContextForLocal:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "lookupContextForLocal:ifNone:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aBlock"],
- source: "lookupContextForLocal: aString ifNone: aBlock\x0a\x09\x22Lookup the context defining the local named `aString` \x0a\x09up to the method context\x22\x0a\x0a\x09^ self locals \x0a\x09\x09at: aString\x0a\x09\x09ifPresent: [ self ]\x0a\x09\x09ifAbsent: [ \x0a\x09\x09\x09self outerContext \x0a\x09\x09\x09\x09ifNil: aBlock\x0a\x09\x09\x09\x09ifNotNil: [ :context | \x0a\x09\x09\x09\x09\x09context lookupContextForLocal: aString ifNone: aBlock ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifPresent:ifAbsent:", "locals", "ifNil:ifNotNil:", "outerContext", "lookupContextForLocal:ifNone:"]
- }, function ($methodClass){ return function (aString,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- return $recv($self._locals())._at_ifPresent_ifAbsent_(aString,(function(){
- return self;
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $1=$self._outerContext();
- return $recv($1)._ifNil_ifNotNil_(aBlock,(function(context){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(context)._lookupContextForLocal_ifNone_(aString,aBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({context:context},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"lookupContextForLocal:ifNone:",{aString:aString,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "newInnerContext",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "newInnerContext\x0a\x09^ self class new\x0a\x09\x09outerContext: self;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["outerContext:", "new", "class", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($self._class())._new();
- $recv($1)._outerContext_(self);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newInnerContext",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "outerContext",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "outerContext\x0a\x09^ outerContext",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.outerContext;
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "outerContext:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anAIContext"],
- source: "outerContext: anAIContext\x0a\x09outerContext := anAIContext.\x0a\x09outerContext ifNotNil: [ :context | \x0a\x09\x09context innerContext: self ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "innerContext:"]
- }, function ($methodClass){ return function (anAIContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self.outerContext=anAIContext;
- $1=$self.outerContext;
- if($1 == null || $1.a$nil){
- $1;
- } else {
- var context;
- context=$1;
- $recv(context)._innerContext_(self);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"outerContext:",{anAIContext:anAIContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "receiver:",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "receiver: anObject\x0a\x09self locals at: 'self' put: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "locals"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._locals())._at_put_("self",anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"receiver:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "selector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "selector\x0a\x09^ selector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.selector;
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "selector:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "selector: aString\x0a\x09selector := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.selector=aString;
- return self;
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "sendIndexAt:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "sendIndexAt: aString\x0a\x09^ self sendIndexes at: aString ifAbsent: [ 0 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:", "sendIndexes"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._sendIndexes())._at_ifAbsent_(aString,(function(){
- return (0);
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sendIndexAt:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "sendIndexes",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sendIndexes\x0a\x09^ sendIndexes ifNil: [ Dictionary new ]",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.sendIndexes;
- if($1 == null || $1.a$nil){
- return $recv($globals.Dictionary)._new();
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sendIndexes",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "sendIndexes:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDictionary"],
- source: "sendIndexes: aDictionary\x0a\x09sendIndexes := aDictionary",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aDictionary){
- var self=this,$self=this;
- $self.sendIndexes=aDictionary;
- return self;
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "setupInterpreter:",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInterpreter"],
- source: "setupInterpreter: anInterpreter\x0a\x09| currentNode |\x0a\x09\x0a\x09\x22Retrieve the current node\x22\x0a\x09currentNode := ASTPCNodeVisitor new\x0a\x09\x09\x09selector: self evaluatedSelector;\x0a\x09\x09\x09index: (self sendIndexAt: self evaluatedSelector);\x0a\x09\x09\x09visit: self ast;\x0a\x09\x09\x09currentNode.\x0a\x09\x0a\x09\x22Define locals for the context\x22\x0a\x09self ast sequenceNode ifNotNil: [ :sequence |\x0a\x09\x09sequence temps do: [ :each |\x0a\x09\x09\x09self defineLocal: each ] ].\x0a\x09\x0a\x09anInterpreter node: currentNode.\x0a\x0a\x09\x22Push the send args and receiver to the interpreter stack\x22\x09\x0a\x09self innerContext arguments reversed do: [ :each | \x0a\x09\x09anInterpreter push: each ].\x0a\x09\x09\x0a\x09anInterpreter push: (self innerContext receiver)",
- referencedClasses: ["ASTPCNodeVisitor"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["selector:", "new", "evaluatedSelector", "index:", "sendIndexAt:", "visit:", "ast", "currentNode", "ifNotNil:", "sequenceNode", "do:", "temps", "defineLocal:", "node:", "reversed", "arguments", "innerContext", "push:", "receiver"]
- }, function ($methodClass){ return function (anInterpreter){
- var self=this,$self=this;
- var currentNode;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=$recv($globals.ASTPCNodeVisitor)._new();
- $recv($1)._selector_([$self._evaluatedSelector()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["evaluatedSelector"]=1
- //>>excludeEnd("ctx");
- ][0]);
- $recv($1)._index_($self._sendIndexAt_($self._evaluatedSelector()));
- $recv($1)._visit_([$self._ast()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["ast"]=1
- //>>excludeEnd("ctx");
- ][0]);
- currentNode=$recv($1)._currentNode();
- $2=$recv($self._ast())._sequenceNode();
- if($2 == null || $2.a$nil){
- $2;
- } else {
- var sequence;
- sequence=$2;
- [$recv($recv(sequence)._temps())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._defineLocal_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- $recv(anInterpreter)._node_(currentNode);
- $recv($recv($recv([$self._innerContext()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["innerContext"]=1
- //>>excludeEnd("ctx");
- ][0])._arguments())._reversed())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(anInterpreter)._push_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["push:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- $recv(anInterpreter)._push_($recv($self._innerContext())._receiver());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setupInterpreter:",{anInterpreter:anInterpreter,currentNode:currentNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "supercall",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "supercall\x0a\x09^ supercall ifNil: [ false ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.supercall;
- if($1 == null || $1.a$nil){
- return false;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"supercall",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "supercall:",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBoolean"],
- source: "supercall: aBoolean\x0a\x09supercall := aBoolean",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aBoolean){
- var self=this,$self=this;
- $self.supercall=aBoolean;
- return self;
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "variableNotFound",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "variableNotFound\x0a\x09\x22Error thrown whenever a variable lookup fails\x22\x0a\x09\x0a\x09self error: 'Variable missing'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("Variable missing");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"variableNotFound",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "fromMethodContext:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethodContext"],
- source: "fromMethodContext: aMethodContext\x0a\x09^ self new\x0a\x09\x09initializeFromMethodContext: aMethodContext;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initializeFromMethodContext:", "new", "yourself"]
- }, function ($methodClass){ return function (aMethodContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._initializeFromMethodContext_(aMethodContext);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fromMethodContext:",{aMethodContext:aMethodContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AIContext.a$cls);
- $core.addClass("AISemanticAnalyzer", $globals.SemanticAnalyzer, "Compiler-Interpreter");
- $core.setSlots($globals.AISemanticAnalyzer, ["context"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "context",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "context\x0a\x09^ context",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.context;
- }; }),
- $globals.AISemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "context:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anAIContext"],
- source: "context: anAIContext\x0a\x09context := anAIContext",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anAIContext){
- var self=this,$self=this;
- $self.context=anAIContext;
- return self;
- }; }),
- $globals.AISemanticAnalyzer);
- $core.addMethod(
- $core.method({
- selector: "visitVariableNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitVariableNode: aNode\x0a\x09self context \x0a\x09\x09localAt: aNode identifier \x0a\x09\x09ifAbsent: [ ^ super visitVariableNode: aNode ].\x0a\x0a\x09aNode binding: ASTContextVar new",
- referencedClasses: ["ASTContextVar"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["localAt:ifAbsent:", "context", "identifier", "visitVariableNode:", "binding:", "new"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- $recv($self._context())._localAt_ifAbsent_($recv(aNode)._identifier(),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- throw $early=[[(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx2.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitVariableNode_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.supercall = false
- //>>excludeEnd("ctx");
- ][0]];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $recv(aNode)._binding_($recv($globals.ASTContextVar)._new());
- return self;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AISemanticAnalyzer);
- $core.addClass("ASTContextVar", $globals.ScopeVar, "Compiler-Interpreter");
- $core.setSlots($globals.ASTContextVar, ["context"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ASTContextVar.comment="I am a variable defined in a `context`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "context",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "context\x0a\x09^ context",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.context;
- }; }),
- $globals.ASTContextVar);
- $core.addMethod(
- $core.method({
- selector: "context:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "context: anObject\x0a\x09context := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.context=anObject;
- return self;
- }; }),
- $globals.ASTContextVar);
- $core.addClass("ASTDebugger", $globals.Object, "Compiler-Interpreter");
- $core.setSlots($globals.ASTDebugger, ["interpreter", "context", "result"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "atEnd",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "atEnd\x09\x0a\x09self context ifNil: [ ^ true ].\x0a\x09\x0a\x09^ self interpreter atEnd and: [ \x0a\x09\x09self context isTopContext ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "context", "and:", "atEnd", "interpreter", "isTopContext"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[$self._context()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["context"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- return true;
- } else {
- $1;
- }
- if($core.assert($recv($self._interpreter())._atEnd())){
- return $recv($self._context())._isTopContext();
- } else {
- return false;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"atEnd",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTDebugger);
- $core.addMethod(
- $core.method({
- selector: "context",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "context\x0a\x09^ context",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.context;
- }; }),
- $globals.ASTDebugger);
- $core.addMethod(
- $core.method({
- selector: "context:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext"],
- source: "context: aContext\x0a\x09context := aContext",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aContext){
- var self=this,$self=this;
- $self.context=aContext;
- return self;
- }; }),
- $globals.ASTDebugger);
- $core.addMethod(
- $core.method({
- selector: "flushInnerContexts",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "context", "innerContext:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._context();
- if($1 == null || $1.a$nil){
- $1;
- } else {
- var cxt;
- cxt=$1;
- $recv(cxt)._innerContext_(nil);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"flushInnerContexts",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTDebugger);
- $core.addMethod(
- $core.method({
- selector: "interpreter",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "interpreter\x0a\x09^ self context ifNotNil: [ :ctx | \x0a\x09\x09ctx interpreter ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "context", "interpreter"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._context();
- if($1 == null || $1.a$nil){
- return $1;
- } else {
- var ctx;
- ctx=$1;
- return $recv(ctx)._interpreter();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"interpreter",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTDebugger);
- $core.addMethod(
- $core.method({
- selector: "node",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "node\x0a\x09^ self interpreter ifNotNil: [\x0a\x09\x09self interpreter node ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "interpreter", "node"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[$self._interpreter()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["interpreter"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- return $1;
- } else {
- return $recv($self._interpreter())._node();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"node",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTDebugger);
- $core.addMethod(
- $core.method({
- selector: "onStep",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["result", "interpreter", "ifTrue:", "atEnd", "ifNotNil:", "outerContext", "context", "context:", "ifFalse:", "skip", "flushInnerContexts"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self.result=$recv([$self._interpreter()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["interpreter"]=1
- //>>excludeEnd("ctx");
- ][0])._result();
- if($core.assert([$recv([$self._interpreter()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["interpreter"]=2
- //>>excludeEnd("ctx");
- ][0])._atEnd()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["atEnd"]=1
- //>>excludeEnd("ctx");
- ][0])){
- $1=$recv($self._context())._outerContext();
- if($1 == null || $1.a$nil){
- $1;
- } else {
- var outerContext;
- outerContext=$1;
- $self._context_(outerContext);
- }
- if(!$core.assert($recv([$self._interpreter()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["interpreter"]=3
- //>>excludeEnd("ctx");
- ][0])._atEnd())){
- $recv($self._interpreter())._skip();
- }
- }
- $self._flushInnerContexts();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"onStep",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTDebugger);
- $core.addMethod(
- $core.method({
- selector: "proceed",
- protocol: "stepping",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "proceed\x0a\x09[ self atEnd ] whileFalse: [ self stepOver ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["whileFalse:", "atEnd", "stepOver"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._atEnd();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._whileFalse_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._stepOver();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"proceed",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTDebugger);
- $core.addMethod(
- $core.method({
- selector: "restart",
- protocol: "stepping",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "restart\x0a\x09self interpreter restart.\x0a\x09self flushInnerContexts",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["restart", "interpreter", "flushInnerContexts"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._interpreter())._restart();
- $self._flushInnerContexts();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"restart",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTDebugger);
- $core.addMethod(
- $core.method({
- selector: "result",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "result\x0a\x09^ result",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.result;
- }; }),
- $globals.ASTDebugger);
- $core.addMethod(
- $core.method({
- selector: "stepInto",
- protocol: "stepping",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "stepInto\x0a\x09self shouldBeImplemented",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["shouldBeImplemented"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._shouldBeImplemented();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"stepInto",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTDebugger);
- $core.addMethod(
- $core.method({
- selector: "stepOver",
- protocol: "stepping",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "stepOver\x0a\x09self context isTopContext \x0a\x09\x09ifFalse: [ self interpreter skip ]\x0a\x09\x09ifTrue: [ self interpreter stepOver ].\x0a\x09self onStep",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:ifTrue:", "isTopContext", "context", "skip", "interpreter", "stepOver", "onStep"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($self._context())._isTopContext())){
- $recv($self._interpreter())._stepOver();
- } else {
- $recv([$self._interpreter()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["interpreter"]=1
- //>>excludeEnd("ctx");
- ][0])._skip();
- }
- $self._onStep();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"stepOver",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTDebugger);
- $core.addMethod(
- $core.method({
- selector: "context:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext"],
- source: "context: aContext\x0a\x09^ self new\x0a\x09\x09context: aContext;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["context:", "new", "yourself"]
- }, function ($methodClass){ return function (aContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._context_(aContext);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"context:",{aContext:aContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTDebugger.a$cls);
- $core.addClass("ASTEnterNode", $globals.NodeVisitor, "Compiler-Interpreter");
- $core.setSlots($globals.ASTEnterNode, ["interpreter"]);
- $core.addMethod(
- $core.method({
- selector: "interpreter",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "interpreter\x0a\x09^ interpreter",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.interpreter;
- }; }),
- $globals.ASTEnterNode);
- $core.addMethod(
- $core.method({
- selector: "interpreter:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "interpreter: anObject\x0a\x09interpreter := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.interpreter=anObject;
- return self;
- }; }),
- $globals.ASTEnterNode);
- $core.addMethod(
- $core.method({
- selector: "visitBlockNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitBlockNode: aNode\x0a\x09\x22Answer the node as we want to avoid eager evaluation\x22\x0a\x09\x0a\x09^ aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- return aNode;
- }; }),
- $globals.ASTEnterNode);
- $core.addMethod(
- $core.method({
- selector: "visitDagNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitDagNode: aNode\x0a\x09^ aNode dagChildren\x0a\x09\x09ifEmpty: [ aNode ]\x0a\x09\x09ifNotEmpty: [ :nodes | self visit: nodes first ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifEmpty:ifNotEmpty:", "dagChildren", "visit:", "first"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv(aNode)._dagChildren())._ifEmpty_ifNotEmpty_((function(){
- return aNode;
- }),(function(nodes){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._visit_($recv(nodes)._first());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({nodes:nodes},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitDagNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTEnterNode);
- $core.addMethod(
- $core.method({
- selector: "visitSequenceNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitSequenceNode: aNode\x0a\x09aNode temps do: [ :each |\x0a\x09\x09self interpreter context defineLocal: each ].\x0a\x09^ super visitSequenceNode: aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "temps", "defineLocal:", "context", "interpreter", "visitSequenceNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(aNode)._temps())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv($self._interpreter())._context())._defineLocal_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitSequenceNode_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitSequenceNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTEnterNode);
- $core.addMethod(
- $core.method({
- selector: "on:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInterpreter"],
- source: "on: anInterpreter\x0a\x09^ self new\x0a\x09\x09interpreter: anInterpreter;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["interpreter:", "new", "yourself"]
- }, function ($methodClass){ return function (anInterpreter){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._interpreter_(anInterpreter);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:",{anInterpreter:anInterpreter})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTEnterNode.a$cls);
- $core.addClass("ASTInterpreter", $globals.NodeVisitor, "Compiler-Interpreter");
- $core.setSlots($globals.ASTInterpreter, ["node", "context", "stack", "returnValue", "returned", "forceAtEnd"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "assign:to:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode", "anObject"],
- source: "assign: aNode to: anObject\x0a\x09aNode binding inContext: self context put: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["inContext:put:", "binding", "context"]
- }, function ($methodClass){ return function (aNode,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(aNode)._binding())._inContext_put_($self._context(),anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"assign:to:",{aNode:aNode,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "atEnd",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "atEnd\x0a\x09^ forceAtEnd or: [ self hasReturned or: [ self node isNil ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["or:", "hasReturned", "isNil", "node"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self.forceAtEnd)){
- return true;
- } else {
- if($core.assert($self._hasReturned())){
- return true;
- } else {
- return $recv($self._node())._isNil();
- }
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"atEnd",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "context",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "context\x0a\x09^ context",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.context;
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "context:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext"],
- source: "context: aContext\x0a\x09context := aContext",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aContext){
- var self=this,$self=this;
- $self.context=aContext;
- return self;
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "enterNode",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "enterNode\x0a\x09self node: ((ASTEnterNode on: self) visit: self node)",
- referencedClasses: ["ASTEnterNode"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["node:", "visit:", "on:", "node"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._node_($recv($recv($globals.ASTEnterNode)._on_(self))._visit_($self._node()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"enterNode",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "eval:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "eval: aString\x0a\x09\x22Evaluate aString as JS source inside an JS function.\x0a\x09aString is not sandboxed.\x22\x0a\x09\x0a\x09| source function |\x0a\x09\x0a\x09source := String streamContents: [ :str |\x0a\x09\x09str nextPutAll: '0,(function('.\x0a\x09\x09self context locals keys\x0a\x09\x09\x09do: [ :each | str nextPutAll: each ]\x0a\x09\x09\x09separatedBy: [ str nextPutAll: ',' ].\x0a\x09\x09str\x0a\x09\x09\x09nextPutAll: '){ return (function() {';\x0a\x09\x09\x09nextPutAll: aString;\x0a\x09\x09\x09nextPutAll: '})()})' ].\x0a\x09\x09\x09\x0a\x09function := Compiler eval: source.\x0a\x09\x0a\x09^ function valueWithPossibleArguments: self context locals values",
- referencedClasses: ["String", "Compiler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["streamContents:", "nextPutAll:", "do:separatedBy:", "keys", "locals", "context", "eval:", "valueWithPossibleArguments:", "values"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- var source,function_;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- source=$recv($globals.String)._streamContents_((function(str){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(str)._nextPutAll_("0,(function(")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($recv([$recv([$self._context()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["context"]=1
- //>>excludeEnd("ctx");
- ][0])._locals()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["locals"]=1
- //>>excludeEnd("ctx");
- ][0])._keys())._do_separatedBy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [$recv(str)._nextPutAll_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["nextPutAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,2)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [$recv(str)._nextPutAll_(",")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["nextPutAll:"]=3
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- [$recv(str)._nextPutAll_("){ return (function() {")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv(str)._nextPutAll_(aString)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=5
- //>>excludeEnd("ctx");
- ][0];
- return $recv(str)._nextPutAll_("})()})");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({str:str},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- function_=$recv($globals.Compiler)._eval_(source);
- return $recv(function_)._valueWithPossibleArguments_($recv($recv($self._context())._locals())._values());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"eval:",{aString:aString,source:source,function_:function_})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "hasReturned",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "hasReturned\x0a\x09^ returned ifNil: [ false ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.returned;
- if($1 == null || $1.a$nil){
- return false;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"hasReturned",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x0a\x09forceAtEnd := false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.forceAtEnd=false;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "interpret",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "interpret\x0a\x09\x22Interpret the next node to be evaluated\x22\x0a\x09\x0a\x09self visit: self node",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visit:", "node"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._visit_($self._node());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"interpret",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "messageFromSendNode:arguments:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aSendNode", "anArray"],
- source: "messageFromSendNode: aSendNode arguments: anArray\x0a\x09^ Message selector: aSendNode selector arguments: anArray",
- referencedClasses: ["Message"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["selector:arguments:", "selector"]
- }, function ($methodClass){ return function (aSendNode,anArray){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Message)._selector_arguments_($recv(aSendNode)._selector(),anArray);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"messageFromSendNode:arguments:",{aSendNode:aSendNode,anArray:anArray})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "messageNotUnderstood:receiver:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMessage", "anObject"],
- source: "messageNotUnderstood: aMessage receiver: anObject\x0a\x09MessageNotUnderstood new\x0a\x09\x09message: aMessage;\x0a\x09\x09receiver: anObject;\x0a\x09\x09signal",
- referencedClasses: ["MessageNotUnderstood"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["message:", "new", "receiver:", "signal"]
- }, function ($methodClass){ return function (aMessage,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.MessageNotUnderstood)._new();
- $recv($1)._message_(aMessage);
- $recv($1)._receiver_(anObject);
- $recv($1)._signal();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"messageNotUnderstood:receiver:",{aMessage:aMessage,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "next",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "next\x0a\x09| nd parent |\x0a\x09nd := self node.\x0a\x09parent := nd parent.\x0a\x09(parent ifNotNil: [ parent nextSiblingNode: nd ])\x0a\x09\x09ifNil: [ self node: parent ]\x0a\x09\x09ifNotNil: [ :sibling | self node: sibling; enterNode ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["node", "parent", "ifNil:ifNotNil:", "ifNotNil:", "nextSiblingNode:", "node:", "enterNode"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var nd,parent;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- nd=$self._node();
- parent=$recv(nd)._parent();
- $1=parent;
- if($1 == null || $1.a$nil){
- $2=$1;
- } else {
- $2=$recv(parent)._nextSiblingNode_(nd);
- }
- if($2 == null || $2.a$nil){
- [$self._node_(parent)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["node:"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- var sibling;
- sibling=$2;
- $self._node_(sibling);
- $self._enterNode();
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"next",{nd:nd,parent:parent})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "node",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "node\x0a\x09\x22Answer the next node, ie the node to be evaluated in the next step\x22\x0a\x09\x0a\x09^ node",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.node;
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "node:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "node: aNode\x0a\x09node := aNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- $self.node=aNode;
- return self;
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "peek",
- protocol: "stack",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifEmpty:", "stack", "last"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- $recv([$self._stack()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["stack"]=1
- //>>excludeEnd("ctx");
- ][0])._ifEmpty_((function(){
- throw $early=[nil];
- }));
- return $recv($self._stack())._last();
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"peek",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "pop",
- protocol: "stack",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["peek", "removeLast", "stack"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var peekedValue;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- peekedValue=$self._peek();
- $recv($self._stack())._removeLast();
- return peekedValue;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"pop",{peekedValue:peekedValue})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "proceed",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "proceed\x0a\x09\x22Eagerly evaluate the ast\x22\x0a\x09\x0a\x09[ self atEnd ] \x0a\x09\x09whileFalse: [ self step ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["whileFalse:", "atEnd", "step"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._atEnd();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._whileFalse_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._step();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"proceed",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "push:",
- protocol: "stack",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "push: anObject\x0a\x09\x22Push an object to the context stack\x22\x0a\x09\x0a\x09^ self stack add: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "stack"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._stack())._add_(anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"push:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "restart",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "restart\x0a\x09self node: self context ast; enterNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["node:", "ast", "context", "enterNode"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._node_($recv($self._context())._ast());
- $self._enterNode();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"restart",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "result",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "result\x0a\x09^ self hasReturned \x0a\x09\x09ifTrue: [ self returnValue ] \x0a\x09\x09ifFalse: [ self context receiver ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "hasReturned", "returnValue", "receiver", "context"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._hasReturned())){
- return $self._returnValue();
- } else {
- return $recv($self._context())._receiver();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"result",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "returnValue",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "returnValue\x0a\x09^ returnValue",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.returnValue;
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "returnValue:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "returnValue: anObject\x0a\x09returnValue := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.returnValue=anObject;
- return self;
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "sendJavaScript:superMessage:switcher:to:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aMessage", "aJSFunction", "anObject"],
- source: "sendJavaScript: aString superMessage: aMessage switcher: aJSFunction to: anObject\x0a\x09| methodBlock parent |\x0a\x09\x0a\x09parent := self context method methodClass superPrototype.\x0a\x09parent ifNil: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x0a\x09methodBlock := (parent at: aString)\x0a\x09\x09ifNil: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x09\x0a\x09^ methodBlock applyTo: anObject arguments: (aJSFunction applyTo: nil arguments: aMessage arguments)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["superPrototype", "methodClass", "method", "context", "ifNil:", "messageNotUnderstood:receiver:", "at:", "applyTo:arguments:", "arguments"]
- }, function ($methodClass){ return function (aString,aMessage,aJSFunction,anObject){
- var self=this,$self=this;
- var methodBlock,parent;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- parent=$recv($recv($recv($self._context())._method())._methodClass())._superPrototype();
- $1=parent;
- if($1 == null || $1.a$nil){
- return [$self._messageNotUnderstood_receiver_(aMessage,anObject)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["messageNotUnderstood:receiver:"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- $1;
- }
- $2=$recv(parent)._at_(aString);
- if($2 == null || $2.a$nil){
- return $self._messageNotUnderstood_receiver_(aMessage,anObject);
- } else {
- methodBlock=$2;
- }
- return [$recv(methodBlock)._applyTo_arguments_(anObject,$recv(aJSFunction)._applyTo_arguments_(nil,$recv(aMessage)._arguments()))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["applyTo:arguments:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sendJavaScript:superMessage:switcher:to:",{aString:aString,aMessage:aMessage,aJSFunction:aJSFunction,anObject:anObject,methodBlock:methodBlock,parent:parent})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "sendJavaScript:superMessage:to:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aMessage", "anObject"],
- source: "sendJavaScript: aString superMessage: aMessage to: anObject\x0a\x09| methodBlock parent |\x0a\x09\x0a\x09parent := self context method methodClass superPrototype.\x0a\x09parent ifNil: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x0a\x09methodBlock := (parent at: aString)\x0a\x09\x09ifNil: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x09\x0a\x09^ methodBlock applyTo: anObject arguments: aMessage arguments",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["superPrototype", "methodClass", "method", "context", "ifNil:", "messageNotUnderstood:receiver:", "at:", "applyTo:arguments:", "arguments"]
- }, function ($methodClass){ return function (aString,aMessage,anObject){
- var self=this,$self=this;
- var methodBlock,parent;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- parent=$recv($recv($recv($self._context())._method())._methodClass())._superPrototype();
- $1=parent;
- if($1 == null || $1.a$nil){
- return [$self._messageNotUnderstood_receiver_(aMessage,anObject)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["messageNotUnderstood:receiver:"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- $1;
- }
- $2=$recv(parent)._at_(aString);
- if($2 == null || $2.a$nil){
- return $self._messageNotUnderstood_receiver_(aMessage,anObject);
- } else {
- methodBlock=$2;
- }
- return $recv(methodBlock)._applyTo_arguments_(anObject,$recv(aMessage)._arguments());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sendJavaScript:superMessage:to:",{aString:aString,aMessage:aMessage,anObject:anObject,methodBlock:methodBlock,parent:parent})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "sendSuperMessage:to:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMessage", "anObject"],
- source: "sendSuperMessage: aMessage to: anObject\x0a\x09| method parent |\x0a\x09\x0a\x09parent := self context method methodClass superclass.\x0a\x09parent ifNil: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x0a\x09method := (parent lookupSelector: aMessage selector)\x0a\x09\x09ifNil: [ ^ self messageNotUnderstood: aMessage receiver: anObject ].\x0a\x09\x09\x0a\x09^ method sendTo: anObject arguments: aMessage arguments",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["superclass", "methodClass", "method", "context", "ifNil:", "messageNotUnderstood:receiver:", "lookupSelector:", "selector", "sendTo:arguments:", "arguments"]
- }, function ($methodClass){ return function (aMessage,anObject){
- var self=this,$self=this;
- var method,parent;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- parent=$recv($recv($recv($self._context())._method())._methodClass())._superclass();
- $1=parent;
- if($1 == null || $1.a$nil){
- return [$self._messageNotUnderstood_receiver_(aMessage,anObject)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["messageNotUnderstood:receiver:"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- $1;
- }
- $2=$recv(parent)._lookupSelector_($recv(aMessage)._selector());
- if($2 == null || $2.a$nil){
- return $self._messageNotUnderstood_receiver_(aMessage,anObject);
- } else {
- method=$2;
- }
- return $recv(method)._sendTo_arguments_(anObject,$recv(aMessage)._arguments());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sendSuperMessage:to:",{aMessage:aMessage,anObject:anObject,method:method,parent:parent})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "setNonLocalReturnFromContext:",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext"],
- source: "setNonLocalReturnFromContext: aContext\x0a\x09aContext interpreter hasReturned ifTrue: [\x0a\x09\x09returned := true.\x0a\x09\x09self returnValue: aContext interpreter returnValue ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "hasReturned", "interpreter", "returnValue:", "returnValue"]
- }, function ($methodClass){ return function (aContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv([$recv(aContext)._interpreter()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["interpreter"]=1
- //>>excludeEnd("ctx");
- ][0])._hasReturned())){
- $self.returned=true;
- $self._returnValue_($recv($recv(aContext)._interpreter())._returnValue());
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setNonLocalReturnFromContext:",{aContext:aContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "skip",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "skip\x0a\x09self next",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["next"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._next();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"skip",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "stack",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "stack\x0a\x09^ stack ifNil: [ stack := OrderedCollection new ]",
- referencedClasses: ["OrderedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.stack;
- if($1 == null || $1.a$nil){
- $self.stack=$recv($globals.OrderedCollection)._new();
- return $self.stack;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"stack",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "step",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "step\x0a\x09self \x0a\x09\x09interpret; \x0a\x09\x09next",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["interpret", "next"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._interpret();
- $self._next();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"step",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "stepOver",
- protocol: "interpreting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "stepOver\x0a\x09self step.\x0a\x09\x0a\x09[ self node isNil or: [ self node isSteppingNode ] ] whileFalse: [ \x0a\x09\x09self step ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["step", "whileFalse:", "or:", "isNil", "node", "isSteppingNode"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._step()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["step"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv([$self._node()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["node"]=1
- //>>excludeEnd("ctx");
- ][0])._isNil())){
- return true;
- } else {
- return $recv($self._node())._isSteppingNode();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._whileFalse_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._step();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"stepOver",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "visit:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visit: aNode\x0a\x09self hasReturned ifFalse: [ super visit: aNode ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "hasReturned", "visit:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert($self._hasReturned())){
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visit_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visit:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "visitAssignmentNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["pop", "push:", "assign:to:", "left"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var poppedValue;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- poppedValue=[$self._pop()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["pop"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._pop();
- $self._push_(poppedValue);
- $self._assign_to_($recv(aNode)._left(),poppedValue);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitAssignmentNode:",{aNode:aNode,poppedValue:poppedValue})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "visitBlockNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- 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",
- referencedClasses: ["AIBlockClosure"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["forContext:node:", "context", "push:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var block;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- block=$recv($globals.AIBlockClosure)._forContext_node_($self._context(),aNode);
- $self._push_(block);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitBlockNode:",{aNode:aNode,block:block})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "visitBlockSequenceNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitBlockSequenceNode:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitBlockSequenceNode_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.forceAtEnd=true;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitBlockSequenceNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "visitDagNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitDagNode: aNode\x0a\x09\x22Do nothing by default. Especially, do not visit children recursively.\x22",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "visitDynamicArrayNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitDynamicArrayNode: aNode\x0a\x09| array |\x0a\x09\x0a\x09array := #().\x0a\x09aNode dagChildren do: [ :each |\x0a\x09\x09array addFirst: self pop ].\x0a\x09\x0a\x09self push: array",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "dagChildren", "addFirst:", "pop", "push:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var array;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- array=[];
- $recv($recv(aNode)._dagChildren())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(array)._addFirst_($self._pop());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $self._push_(array);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitDynamicArrayNode:",{aNode:aNode,array:array})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "visitDynamicDictionaryNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitDynamicDictionaryNode: aNode\x0a\x09| keyValueList |\x0a\x09\x0a\x09keyValueList := OrderedCollection new.\x0a\x09\x0a\x09aNode dagChildren do: [ :each | \x0a\x09\x09keyValueList add: self pop ].\x0a\x09\x0a\x09self push: (HashedCollection newFromPairs: keyValueList reversed)",
- referencedClasses: ["OrderedCollection", "HashedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "do:", "dagChildren", "add:", "pop", "push:", "newFromPairs:", "reversed"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var keyValueList;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- keyValueList=$recv($globals.OrderedCollection)._new();
- $recv($recv(aNode)._dagChildren())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(keyValueList)._add_($self._pop());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $self._push_($recv($globals.HashedCollection)._newFromPairs_($recv(keyValueList)._reversed()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitDynamicDictionaryNode:",{aNode:aNode,keyValueList:keyValueList})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "visitJSStatementNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitJSStatementNode: aNode\x0a\x09returned := true.\x0a\x09self returnValue: (self eval: aNode source)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["returnValue:", "eval:", "source"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.returned=true;
- $self._returnValue_($self._eval_($recv(aNode)._source()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitJSStatementNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "visitReturnNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitReturnNode: aNode\x0a\x09returned := true.\x0a\x09self returnValue: self pop",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["returnValue:", "pop"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.returned=true;
- $self._returnValue_($self._pop());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitReturnNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "visitSendNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitSendNode: aNode\x0a\x09| receiver args message result |\x0a\x09\x0a\x09args := aNode arguments collect: [ :each | self pop ].\x0a\x09receiver := self peek.\x0a\x09\x0a\x09message := self\x0a\x09\x09messageFromSendNode: aNode\x0a\x09\x09arguments: args reversed.\x0a\x09\x0a\x09result := aNode superSend\x0a\x09\x09ifFalse: [ message sendTo: receiver ]\x0a\x09\x09ifTrue: [ aNode receiver binding isJavaScriptSuper\x0a\x09\x09\x09ifFalse: [ self sendSuperMessage: message to: receiver ]\x0a\x09\x09\x09ifTrue: [ aNode argumentSwitcher\x0a\x09\x09\x09\x09ifNil: [ self sendJavaScript: aNode javaScriptSelector superMessage: message to: receiver ]\x0a\x09\x09\x09\x09ifNotNil: [ :switcher | self sendJavaScript: aNode javaScriptSelector superMessage: message switcher: switcher to: receiver ] ] ].\x0a\x09\x0a\x09\x22For cascade sends, push the reciever if the send is not the last one\x22\x0a\x09aNode isSideEffect ifFalse: [ self pop; push: result ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "arguments", "pop", "peek", "messageFromSendNode:arguments:", "reversed", "ifFalse:ifTrue:", "superSend", "sendTo:", "isJavaScriptSuper", "binding", "receiver", "sendSuperMessage:to:", "ifNil:ifNotNil:", "argumentSwitcher", "sendJavaScript:superMessage:to:", "javaScriptSelector", "sendJavaScript:superMessage:switcher:to:", "ifFalse:", "isSideEffect", "push:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- var receiver,args,message,result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- args=$recv($recv(aNode)._arguments())._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$self._pop()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["pop"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- receiver=$self._peek();
- message=$self._messageFromSendNode_arguments_(aNode,$recv(args)._reversed());
- if($core.assert($recv(aNode)._superSend())){
- if($core.assert($recv($recv($recv(aNode)._receiver())._binding())._isJavaScriptSuper())){
- $1=$recv(aNode)._argumentSwitcher();
- if($1 == null || $1.a$nil){
- result=$self._sendJavaScript_superMessage_to_([$recv(aNode)._javaScriptSelector()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["javaScriptSelector"]=1
- //>>excludeEnd("ctx");
- ][0],message,receiver);
- } else {
- var switcher;
- switcher=$1;
- result=$self._sendJavaScript_superMessage_switcher_to_($recv(aNode)._javaScriptSelector(),message,switcher,receiver);
- }
- } else {
- result=$self._sendSuperMessage_to_(message,receiver);
- }
- } else {
- result=$recv(message)._sendTo_(receiver);
- }
- if(!$core.assert($recv(aNode)._isSideEffect())){
- $self._pop();
- $self._push_(result);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode,receiver:receiver,args:args,message:message,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "visitValueNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitValueNode: aNode\x0a\x09self push: aNode value",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["push:", "value"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._push_($recv(aNode)._value());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitValueNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addMethod(
- $core.method({
- selector: "visitVariableNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitVariableNode: aNode\x0a\x09self push: (aNode binding inContext: self context)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["push:", "inContext:", "binding", "context"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._push_($recv($recv(aNode)._binding())._inContext_($self._context()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitVariableNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTInterpreter);
- $core.addClass("ASTInterpreterError", $globals.Error, "Compiler-Interpreter");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ASTInterpreterError.comment="I get signaled when an AST interpreter is unable to interpret a node.";
- //>>excludeEnd("ide");
- $core.addClass("ASTPCNodeVisitor", $globals.NodeVisitor, "Compiler-Interpreter");
- $core.setSlots($globals.ASTPCNodeVisitor, ["index", "trackedIndex", "selector", "currentNode"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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`";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "currentNode",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "currentNode\x0a\x09^ currentNode",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.currentNode;
- }; }),
- $globals.ASTPCNodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "increaseTrackedIndex",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "increaseTrackedIndex\x0a\x09trackedIndex := self trackedIndex + 1",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["+", "trackedIndex"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.trackedIndex=$recv($self._trackedIndex()).__plus((1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"increaseTrackedIndex",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTPCNodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "index",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "index\x0a\x09^ index",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.index;
- }; }),
- $globals.ASTPCNodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "index:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "index: aNumber\x0a\x09index := aNumber",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- $self.index=aNumber;
- return self;
- }; }),
- $globals.ASTPCNodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "selector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "selector\x0a\x09^ selector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.selector;
- }; }),
- $globals.ASTPCNodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "selector:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "selector: aString\x0a\x09selector := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.selector=aString;
- return self;
- }; }),
- $globals.ASTPCNodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "trackedIndex",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "trackedIndex\x0a\x09^ trackedIndex ifNil: [ trackedIndex := 0 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.trackedIndex;
- if($1 == null || $1.a$nil){
- $self.trackedIndex=(0);
- return $self.trackedIndex;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"trackedIndex",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTPCNodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitJSStatementNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- $self.currentNode=aNode;
- return self;
- }; }),
- $globals.ASTPCNodeVisitor);
- $core.addMethod(
- $core.method({
- selector: "visitSendNode:",
- protocol: "visiting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "visitSendNode: aNode\x0a\x09super visitSendNode: aNode.\x0a\x09\x0a\x09self selector = aNode selector ifTrue: [\x0a\x09\x09self trackedIndex = self index ifTrue: [ currentNode := aNode ].\x0a\x09\x09self increaseTrackedIndex ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["visitSendNode:", "ifTrue:", "=", "selector", "trackedIndex", "index", "increaseTrackedIndex"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._visitSendNode_.call($self,aNode))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert([$recv([$self._selector()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["selector"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv(aNode)._selector())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])){
- if($core.assert($recv($self._trackedIndex()).__eq($self._index()))){
- $self.currentNode=aNode;
- $self.currentNode;
- }
- $self._increaseTrackedIndex();
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"visitSendNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTPCNodeVisitor);
- $core.setTraitComposition([{trait: $globals.TMethodContext}], $globals.AIContext);
- $core.addMethod(
- $core.method({
- selector: "isSteppingNode",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSteppingNode\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.ASTNode);
- $core.addMethod(
- $core.method({
- selector: "nextSiblingNode:",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "nextSiblingNode: aNode\x0a\x09\x22Answer the next node after aNode or nil\x22\x0a\x09\x0a\x09^ self dagChildren \x0a\x09\x09at: (self dagChildren indexOf: aNode) + 1\x0a\x09\x09ifAbsent: [ nil ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:", "dagChildren", "+", "indexOf:"]
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv([$self._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=1
- //>>excludeEnd("ctx");
- ][0])._at_ifAbsent_($recv($recv($self._dagChildren())._indexOf_(aNode)).__plus((1)),(function(){
- return nil;
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextSiblingNode:",{aNode:aNode})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTNode);
- $core.addMethod(
- $core.method({
- selector: "inContext:",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext"],
- source: "inContext: aContext\x0a\x09self error: 'Alias variable is internal, it should never appear in normal variable context.'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (aContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("Alias variable is internal, it should never appear in normal variable context.");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inContext:",{aContext:aContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AliasVar);
- $core.addMethod(
- $core.method({
- selector: "isSteppingNode",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSteppingNode\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.AssignmentNode);
- $core.addMethod(
- $core.method({
- selector: "isSteppingNode",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSteppingNode\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.BlockNode);
- $core.addMethod(
- $core.method({
- selector: "nextSiblingNode:",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNode"],
- source: "nextSiblingNode: aNode\x0a\x09\x22Answer nil as we want to avoid eager evaluation\x22\x0a\x09\x0a\x09\x22In fact, this should not have been called, ever. IMO. -- herby\x22\x0a\x09\x0a\x09^ nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNode){
- var self=this,$self=this;
- return nil;
- }; }),
- $globals.BlockNode);
- $core.addMethod(
- $core.method({
- selector: "inContext:",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext"],
- source: "inContext: aContext\x0a\x09^ Smalltalk globals \x0a\x09\x09at: self name \x0a\x09\x09ifAbsent: [ Platform globals at: self name ]",
- referencedClasses: ["Smalltalk", "Platform"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:", "globals", "name", "at:"]
- }, function ($methodClass){ return function (aContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv([$recv($globals.Smalltalk)._globals()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["globals"]=1
- //>>excludeEnd("ctx");
- ][0])._at_ifAbsent_([$self._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["name"]=1
- //>>excludeEnd("ctx");
- ][0],(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Platform)._globals())._at_($self._name());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inContext:",{aContext:aContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassRefVar);
- $core.addMethod(
- $core.method({
- selector: "isSteppingNode",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSteppingNode\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.DynamicArrayNode);
- $core.addMethod(
- $core.method({
- selector: "isSteppingNode",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSteppingNode\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.DynamicDictionaryNode);
- $core.addMethod(
- $core.method({
- selector: "evaluate:context:",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aContext"],
- source: "evaluate: aString context: aContext\x0a\x09\x22Similar to #evaluate:for:, with the following differences:\x0a\x09- instead of compiling and running `aString`, `aString` is interpreted using an `ASTInterpreter`\x0a\x09- instead of evaluating against a receiver, evaluate in the context of `aContext`\x22\x0a\x0a\x09| compiler ast |\x0a\x09\x0a\x09compiler := Compiler new.\x0a\x09[ ast := compiler parseExpression: aString ] \x0a\x09\x09on: Error \x0a\x09\x09do: [ :ex | ^ Terminal alert: ex messageText ].\x0a\x09\x09\x0a\x09(AISemanticAnalyzer on: aContext receiver class)\x0a\x09\x09context: aContext;\x0a\x09\x09visit: ast.\x0a\x0a\x09^ aContext evaluateNode: ast",
- referencedClasses: ["Compiler", "Error", "Terminal", "AISemanticAnalyzer"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "on:do:", "parseExpression:", "alert:", "messageText", "context:", "on:", "class", "receiver", "visit:", "evaluateNode:"]
- }, function ($methodClass){ return function (aString,aContext){
- var self=this,$self=this;
- var compiler,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- var $early={};
- try {
- compiler=$recv($globals.Compiler)._new();
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- ast=$recv(compiler)._parseExpression_(aString);
- return ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._on_do_($globals.Error,(function(ex){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- throw $early=[$recv($globals.Terminal)._alert_($recv(ex)._messageText())];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $1=$recv($globals.AISemanticAnalyzer)._on_($recv($recv(aContext)._receiver())._class());
- $recv($1)._context_(aContext);
- $recv($1)._visit_(ast);
- return $recv(aContext)._evaluateNode_(ast);
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"evaluate:context:",{aString:aString,aContext:aContext,compiler:compiler,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Evaluator);
- $core.addMethod(
- $core.method({
- selector: "inContext:",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext"],
- source: "inContext: aContext\x0a\x09^ Platform globals at: self name ifAbsent: [ self error: 'Unknown variable' ]",
- referencedClasses: ["Platform"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:", "globals", "name", "error:"]
- }, function ($methodClass){ return function (aContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Platform)._globals())._at_ifAbsent_($self._name(),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._error_("Unknown variable");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inContext:",{aContext:aContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ExternallyKnownVar);
- $core.addMethod(
- $core.method({
- selector: "isSteppingNode",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSteppingNode\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.JSStatementNode);
- $core.addMethod(
- $core.method({
- selector: "isJavaScriptSuper",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isJavaScriptSuper\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.JavaScriptSuperVar);
- $core.addMethod(
- $core.method({
- selector: "inContext:",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext"],
- source: "inContext: aContext\x0a\x09^ #{'nil'->nil. 'true'->true. 'false'->false}\x0a\x09\x09at: self name\x0a\x09\x09ifAbsent: [ super inContext: aContext ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:", "name", "inContext:"]
- }, function ($methodClass){ return function (aContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.HashedCollection._newFromPairs_(["nil",nil,"true",true,"false",false]))._at_ifAbsent_($self._name(),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx2.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._inContext_.call($self,aContext))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inContext:",{aContext:aContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PseudoVar);
- $core.addMethod(
- $core.method({
- selector: "inContext:",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext"],
- source: "inContext: aContext\x0a\x09^ aContext localAt: self name",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["localAt:", "name"]
- }, function ($methodClass){ return function (aContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aContext)._localAt_($self._name());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inContext:",{aContext:aContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ScopeVar);
- $core.addMethod(
- $core.method({
- selector: "inContext:put:",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext", "anObject"],
- source: "inContext: aContext put: anObject\x0a\x09self error: 'Non-assignable variables should not be changed.'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["error:"]
- }, function ($methodClass){ return function (aContext,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._error_("Non-assignable variables should not be changed.");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inContext:put:",{aContext:aContext,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ScopeVar);
- $core.addMethod(
- $core.method({
- selector: "isSteppingNode",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isSteppingNode\x0a\x09^ true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return true;
- }; }),
- $globals.SendNode);
- $core.addMethod(
- $core.method({
- selector: "inContext:",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext"],
- source: "inContext: aContext\x0a\x09^ aContext receiver instVarNamed: self name",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["instVarNamed:", "receiver", "name"]
- }, function ($methodClass){ return function (aContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv(aContext)._receiver())._instVarNamed_($self._name());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inContext:",{aContext:aContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SlotVar);
- $core.addMethod(
- $core.method({
- selector: "inContext:put:",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext", "anObject"],
- source: "inContext: aContext put: anObject\x0a\x09aContext receiver instVarNamed: self name put: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["instVarNamed:put:", "receiver", "name"]
- }, function ($methodClass){ return function (aContext,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(aContext)._receiver())._instVarNamed_put_($self._name(),anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inContext:put:",{aContext:aContext,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SlotVar);
- $core.addMethod(
- $core.method({
- selector: "inContext:",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext"],
- source: "inContext: aContext\x0a\x09^ aContext localAt: 'self'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["localAt:"]
- }, function ($methodClass){ return function (aContext){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aContext)._localAt_("self");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inContext:",{aContext:aContext})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SuperVar);
- $core.addMethod(
- $core.method({
- selector: "isJavaScriptSuper",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isJavaScriptSuper\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.SuperVar);
- $core.addMethod(
- $core.method({
- selector: "inContext:put:",
- protocol: "*Compiler-Interpreter",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aContext", "anObject"],
- source: "inContext: aContext put: anObject\x0a\x09aContext localAt: self name put: anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["localAt:put:", "name"]
- }, function ($methodClass){ return function (aContext,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aContext)._localAt_put_($self._name(),anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"inContext:put:",{aContext:aContext,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TempVar);
- });
- define('amber/lang',[
- './deploy',
- './boot', // pre-fetch, dep of ./helpers
- './helpers', // pre-fetch, dep of ./deploy
- './parser',
- // --- packages for the Amber reflection begin here ---
- 'amber/core/Platform-ImportExport',
- 'amber/core/Compiler-Core',
- 'amber/core/Compiler-AST',
- 'amber/core/Compiler-Semantic',
- 'amber/core/Compiler-IR',
- 'amber/core/Compiler-Inlining',
- 'amber/core/Compiler-Interpreter'
- // --- packages for the Amber reflection end here ---
- ], function (amber) {
- return amber;
- });
- define('amber/core/Platform-DOM',["amber/boot", "require", "amber/core/Kernel-Collections", "amber/core/Kernel-Infrastructure", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Platform-DOM");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("PlatformDom", $globals.Object, "Platform-DOM");
- $core.addMethod(
- $core.method({
- selector: "isDomNode:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "isDomNode: anObject\x0a<inlineJS: '\x0a\x09return anObject.nodeType > 0 &&\x0a\x09\x09Object.prototype.toString.call(anObject) !== \x22[object Object]\x22\x0a'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09return anObject.nodeType > 0 &&\x0a\x09\x09Object.prototype.toString.call(anObject) !== \x22[object Object]\x22"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return anObject.nodeType > 0 &&
- Object.prototype.toString.call(anObject) !== "[object Object]";
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isDomNode:",{anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PlatformDom.a$cls);
- $core.addMethod(
- $core.method({
- selector: "isFeasible",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isFeasible\x0a<inlineJS: '\x0a if (typeof document === \x22undefined\x22) return false;\x0a try {\x0a var d = document.createElement(\x22div\x22),\x0a\x09 f = document.createDocumentFragment(),\x0a\x09 t = document.createTextNode(\x22Hello, Amber!\x22);\x0a\x09f.appendChild(t);\x0a\x09d.insertBefore(f, null);\x0a\x09return d.innerHTML === \x22Hello, Amber!\x22;\x0a } catch (e) {\x0a return false;\x0a }\x0a'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a if (typeof document === \x22undefined\x22) return false;\x0a try {\x0a var d = document.createElement(\x22div\x22),\x0a\x09 f = document.createDocumentFragment(),\x0a\x09 t = document.createTextNode(\x22Hello, Amber!\x22);\x0a\x09f.appendChild(t);\x0a\x09d.insertBefore(f, null);\x0a\x09return d.innerHTML === \x22Hello, Amber!\x22;\x0a } catch (e) {\x0a return false;\x0a }"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if (typeof document === "undefined") return false;
- try {
- var d = document.createElement("div"),
- f = document.createDocumentFragment(),
- t = document.createTextNode("Hello, Amber!");
- f.appendChild(t);
- d.insertBefore(f, null);
- return d.innerHTML === "Hello, Amber!";
- } catch (e) {
- return false;
- };
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isFeasible",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PlatformDom.a$cls);
- $core.addMethod(
- $core.method({
- selector: "newCustomEvent:detail:",
- protocol: "creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "newCustomEvent: aString detail: anObject\x0a<inlineJS: 'return new CustomEvent(aString, {detail: anObject})'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return new CustomEvent(aString, {detail: anObject})"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return new CustomEvent(aString, {detail: anObject});
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newCustomEvent:detail:",{aString:aString,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PlatformDom.a$cls);
- $core.addMethod(
- $core.method({
- selector: "toArray:",
- protocol: "converting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDomList"],
- source: "toArray: aDomList\x0a<inlineJS: 'return Array.prototype.slice.call(aDomList)'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return Array.prototype.slice.call(aDomList)"]]],
- messageSends: []
- }, function ($methodClass){ return function (aDomList){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return Array.prototype.slice.call(aDomList);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"toArray:",{aDomList:aDomList})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PlatformDom.a$cls);
- $core.addMethod(
- $core.method({
- selector: "asDomNode",
- protocol: "*Platform-DOM",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asDomNode\x0a\x09| fragment |\x0a\x09fragment := document createDocumentFragment.\x0a\x09self do: [ :each | fragment appendChild: each asDomNode ].\x0a\x09^ fragment",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["createDocumentFragment", "do:", "appendChild:", "asDomNode"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var fragment;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- fragment=$recv(document)._createDocumentFragment();
- $self._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(fragment)._appendChild_($recv(each)._asDomNode());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return fragment;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asDomNode",{fragment:fragment})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Collection);
- $core.addMethod(
- $core.method({
- selector: "asDomNode",
- protocol: "*Platform-DOM",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asDomNode\x0a\x09(PlatformDom isDomNode: jsObject)\x0a\x09\x09ifTrue: [ ^ jsObject ]\x0a\x09\x09ifFalse: [ ^ super asDomNode ]",
- referencedClasses: ["PlatformDom"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "isDomNode:", "asDomNode"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($globals.PlatformDom)._isDomNode_($self.jsObject))){
- return $self.jsObject;
- } else {
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._asDomNode.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asDomNode",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxy);
- $core.addMethod(
- $core.method({
- selector: "asDomNode",
- protocol: "*Platform-DOM",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "asDomNode\x0a\x09^ document createTextNode: self asString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["createTextNode:", "asString"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(document)._createTextNode_($self._asString());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"asDomNode",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- $core.addMethod(
- $core.method({
- selector: "htmlTextContent",
- protocol: "*Platform-DOM",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "htmlTextContent\x0a<inlineJS: 'var d=document.createElement(\x22div\x22);d.innerHTML=self;return d.textContent||d.innerText;'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["var d=document.createElement(\x22div\x22);d.innerHTML=self;return d.textContent||d.innerText;"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var d=document.createElement("div");d.innerHTML=self;return d.textContent||d.innerText;;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"htmlTextContent",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.String);
- });
- define('amber/core/SUnit',["amber/boot", "require", "amber/core/Kernel-Classes", "amber/core/Kernel-Exceptions", "amber/core/Kernel-Infrastructure", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("SUnit");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("ResultAnnouncement", $globals.Object, "SUnit");
- $core.setSlots($globals.ResultAnnouncement, ["result"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "result",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "result\x0a\x09^ result",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.result;
- }; }),
- $globals.ResultAnnouncement);
- $core.addMethod(
- $core.method({
- selector: "result:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aTestResult"],
- source: "result: aTestResult\x0a\x09result := aTestResult",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aTestResult){
- var self=this,$self=this;
- $self.result=aTestResult;
- return self;
- }; }),
- $globals.ResultAnnouncement);
- $core.addClass("Teachable", $globals.Object, "SUnit");
- $core.setSlots($globals.Teachable, ["learnings"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.Teachable.comment="An object you can teach how to behave. Have a look at the \x0aclass side for an example.\x0a\x0aFor more infos have a look at: http://lists.squeakfoundation.org/pipermail/squeak-dev/2002-April/038170.html";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "acceptSend:",
- protocol: "teaching",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aSymbol"],
- source: "acceptSend: aSymbol\x0a\x0a\x09self whenSend: aSymbol return: self",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["whenSend:return:"]
- }, function ($methodClass){ return function (aSymbol){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._whenSend_return_(aSymbol,self);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"acceptSend:",{aSymbol:aSymbol})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Teachable);
- $core.addMethod(
- $core.method({
- selector: "doesNotUnderstand:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMessage"],
- source: "doesNotUnderstand: aMessage\x0a\x0a\x09| learning |\x0a\x09learning := self learnings \x0a\x09\x09at: aMessage selector \x0a\x09\x09ifAbsent:[ ^super doesNotUnderstand: aMessage ].\x0a\x09^ learning class == Association\x0a\x09\x09ifTrue: [learning value]\x0a\x09\x09ifFalse: [learning valueWithPossibleArguments: aMessage arguments]",
- referencedClasses: ["Association"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:", "learnings", "selector", "doesNotUnderstand:", "ifTrue:ifFalse:", "==", "class", "value", "valueWithPossibleArguments:", "arguments"]
- }, function ($methodClass){ return function (aMessage){
- var self=this,$self=this;
- var learning;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- learning=$recv($self._learnings())._at_ifAbsent_($recv(aMessage)._selector(),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- throw $early=[[(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx2.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._doesNotUnderstand_.call($self,aMessage))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.supercall = false
- //>>excludeEnd("ctx");
- ][0]];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- if($core.assert($recv($recv(learning)._class()).__eq_eq($globals.Association))){
- return $recv(learning)._value();
- } else {
- return $recv(learning)._valueWithPossibleArguments_($recv(aMessage)._arguments());
- }
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"doesNotUnderstand:",{aMessage:aMessage,learning:learning})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Teachable);
- $core.addMethod(
- $core.method({
- selector: "learnings",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "learnings\x0a\x0a\x09learnings isNil ifTrue: [learnings := Dictionary new].\x0a\x09^learnings",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "isNil", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($self.learnings)._isNil())){
- $self.learnings=$recv($globals.Dictionary)._new();
- $self.learnings;
- }
- return $self.learnings;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"learnings",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Teachable);
- $core.addMethod(
- $core.method({
- selector: "whenSend:evaluate:",
- protocol: "teaching",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aSymbol", "aBlock"],
- source: "whenSend: aSymbol evaluate: aBlock\x0a\x0a\x09self learnings at: aSymbol put: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "learnings"]
- }, function ($methodClass){ return function (aSymbol,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._learnings())._at_put_(aSymbol,aBlock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"whenSend:evaluate:",{aSymbol:aSymbol,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Teachable);
- $core.addMethod(
- $core.method({
- selector: "whenSend:return:",
- protocol: "teaching",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aSymbol", "anObject"],
- source: "whenSend: aSymbol return: anObject\x0a\x0a\x09self learnings at: aSymbol put: (#return -> anObject)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "learnings", "->"]
- }, function ($methodClass){ return function (aSymbol,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._learnings())._at_put_(aSymbol,"return".__minus_gt(anObject));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"whenSend:return:",{aSymbol:aSymbol,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Teachable);
- $core.addMethod(
- $core.method({
- selector: "example",
- protocol: "examples",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "example\x0a\x09| teachable |\x0a\x09teachable := self new.\x0a\x09teachable \x0a\x09\x09whenSend: #help return: 'ok';\x0a\x09\x09whenSend: #doit evaluate: [1 inspect];\x0a\x09\x09acceptSend: #noDebugger;\x0a\x09\x09whenSend: #negate: evaluate: [:num | num negated].\x0a\x09teachable help.\x0a\x09teachable doit.\x0a\x09teachable noDebugger.\x0a\x09teachable negate: 120",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "whenSend:return:", "whenSend:evaluate:", "inspect", "acceptSend:", "negated", "help", "doit", "noDebugger", "negate:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var teachable;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- teachable=$self._new();
- $1=teachable;
- $recv($1)._whenSend_return_("help","ok");
- [$recv($1)._whenSend_evaluate_("doit",(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (1)._inspect();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["whenSend:evaluate:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._acceptSend_("noDebugger");
- $recv($1)._whenSend_evaluate_("negate:",(function(num){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(num)._negated();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({num:num},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $recv(teachable)._help();
- $recv(teachable)._doit();
- $recv(teachable)._noDebugger();
- $recv(teachable)._negate_((120));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"example",{teachable:teachable})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Teachable.a$cls);
- $core.addClass("TestCase", $globals.Object, "SUnit");
- $core.setSlots($globals.TestCase, ["testSelector", "asyncTimeout", "context"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "assert:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBoolean"],
- source: "assert: aBoolean\x0a\x09self assert: aBoolean description: 'Assertion failed'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:description:"]
- }, function ($methodClass){ return function (aBoolean){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_description_(aBoolean,"Assertion failed");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"assert:",{aBoolean:aBoolean})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "assert:description:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBoolean", "aString"],
- source: "assert: aBoolean description: aString\x0a\x09aBoolean ifFalse: [ self signalFailure: aString ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "signalFailure:"]
- }, function ($methodClass){ return function (aBoolean,aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert(aBoolean)){
- $self._signalFailure_(aString);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"assert:description:",{aBoolean:aBoolean,aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "assert:equals:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["actual", "expected"],
- source: "assert: actual equals: expected\x0a\x09^ self assert: (actual = expected) description: 'Expected: ', expected printString, ' but was: ', actual printString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:description:", "=", ",", "printString"]
- }, function ($methodClass){ return function (actual,expected){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._assert_description_($recv(actual).__eq(expected),[$recv([$recv("Expected: ".__comma([$recv(expected)._printString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printString"]=1
- //>>excludeEnd("ctx");
- ][0])).__comma(" but was: ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma($recv(actual)._printString())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"assert:equals:",{actual:actual,expected:expected})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "async:",
- protocol: "async",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "async: aBlock\x0a\x09| c |\x0a\x09self errorIfNotAsync: '#async'.\x0a\x09c := context.\x0a\x09^ [ self isAsync ifTrue: [ c execute: aBlock ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["errorIfNotAsync:", "ifTrue:", "isAsync", "execute:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- var c;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._errorIfNotAsync_("#async");
- c=$self.context;
- return (function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($self._isAsync())){
- return $recv(c)._execute_(aBlock);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- });
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"async:",{aBlock:aBlock,c:c})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "context:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aRunningTestContext"],
- source: "context: aRunningTestContext\x0a\x09context := aRunningTestContext",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aRunningTestContext){
- var self=this,$self=this;
- $self.context=aRunningTestContext;
- return self;
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "debugCase",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "debugCase\x0a\x09self deprecatedAPI: 'Use #runCase instead.'.\x0a\x09^ self runCase",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deprecatedAPI:", "runCase"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deprecatedAPI_("Use #runCase instead.");
- return $self._runCase();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"debugCase",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "deny:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBoolean"],
- source: "deny: aBoolean\x0a\x09self assert: aBoolean not",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "not"]
- }, function ($methodClass){ return function (aBoolean){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv(aBoolean)._not());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"deny:",{aBoolean:aBoolean})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "errorIfNotAsync:",
- protocol: "error handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "errorIfNotAsync: aString\x0a\x09self isAsync ifFalse: [\x0a\x09\x09self error: aString, ' used without prior #timeout:' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "isAsync", "error:", ","]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert($self._isAsync())){
- $self._error_($recv(aString).__comma(" used without prior #timeout:"));
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"errorIfNotAsync:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "finished",
- protocol: "async",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "finished\x0a\x09self errorIfNotAsync: '#finished'.\x0a\x09asyncTimeout ifNotNil: [ asyncTimeout clearTimeout ].\x0a\x09asyncTimeout := nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["errorIfNotAsync:", "ifNotNil:", "clearTimeout"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self._errorIfNotAsync_("#finished");
- $1=$self.asyncTimeout;
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $recv($self.asyncTimeout)._clearTimeout();
- }
- $self.asyncTimeout=nil;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"finished",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "isAsync",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isAsync\x0a\x09^ asyncTimeout notNil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["notNil"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.asyncTimeout)._notNil();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isAsync",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "performTest",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "performTest\x0a\x09asyncTimeout := nil.\x0a\x09^ self perform: self selector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["perform:", "selector"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.asyncTimeout=nil;
- return $self._perform_($self._selector());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"performTest",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "runCase",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "runCase\x0a\x09\x22Runs a test case in isolated context, leaking all errors.\x22\x0a\x0a\x09(TestContext testCase: self) start",
- referencedClasses: ["TestContext"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["start", "testCase:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv($globals.TestContext)._testCase_(self))._start();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"runCase",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "selector",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "selector\x0a\x09^ testSelector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.testSelector;
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "setTestSelector:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aSelector"],
- source: "setTestSelector: aSelector\x0a\x09testSelector := aSelector",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aSelector){
- var self=this,$self=this;
- $self.testSelector=aSelector;
- return self;
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "setUp",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "setUp",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "should:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "should: aBlock\x0a\x09self assert: aBlock value",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "value"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv(aBlock)._value());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"should:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "should:raise:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anExceptionClass"],
- source: "should: aBlock raise: anExceptionClass\x0a\x09self assert: ([ aBlock value. false ]\x0a\x09\x09on: anExceptionClass\x0a\x09\x09do: [ :ex | true ])",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "on:do:", "value"]
- }, function ($methodClass){ return function (aBlock,anExceptionClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(aBlock)._value();
- return false;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._on_do_(anExceptionClass,(function(ex){
- return true;
- })));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"should:raise:",{aBlock:aBlock,anExceptionClass:anExceptionClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "shouldnt:raise:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock", "anExceptionClass"],
- source: "shouldnt: aBlock raise: anExceptionClass\x0a\x09self assert: ([ aBlock value. true ]\x0a\x09\x09on: anExceptionClass\x0a\x09\x09do: [ :ex | false ])",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "on:do:", "value"]
- }, function ($methodClass){ return function (aBlock,anExceptionClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(aBlock)._value();
- return true;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._on_do_(anExceptionClass,(function(ex){
- return false;
- })));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shouldnt:raise:",{aBlock:aBlock,anExceptionClass:anExceptionClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "signalFailure:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "signalFailure: aString\x0a\x09TestFailure new\x0a\x09\x09messageText: aString;\x0a\x09\x09signal",
- referencedClasses: ["TestFailure"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["messageText:", "new", "signal"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.TestFailure)._new();
- $recv($1)._messageText_(aString);
- $recv($1)._signal();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"signalFailure:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "tearDown",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "tearDown",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "timeout:",
- protocol: "async",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "clearTimeout", "valueWithTimeout:", "async:", "assert:description:"]
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.asyncTimeout;
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $recv($self.asyncTimeout)._clearTimeout();
- }
- $self.asyncTimeout=(0);
- $self.asyncTimeout=$recv($self._async_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._assert_description_(false,"SUnit grace time exhausted");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- })))._valueWithTimeout_(aNumber);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"timeout:",{aNumber:aNumber})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase);
- $core.addMethod(
- $core.method({
- selector: "allTestSelectors",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "allTestSelectors\x0a\x09| selectors |\x0a\x09selectors := self testSelectors.\x0a\x09self shouldInheritSelectors ifTrue: [\x0a\x09\x09selectors addAll: self superclass allTestSelectors ].\x0a\x09^ selectors asSet",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["testSelectors", "ifTrue:", "shouldInheritSelectors", "addAll:", "allTestSelectors", "superclass", "asSet"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var selectors;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- selectors=$self._testSelectors();
- if($core.assert($self._shouldInheritSelectors())){
- $recv(selectors)._addAll_($recv($self._superclass())._allTestSelectors());
- }
- return $recv(selectors)._asSet();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"allTestSelectors",{selectors:selectors})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase.a$cls);
- $core.addMethod(
- $core.method({
- selector: "buildSuite",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "buildSuite\x0a\x09^ self allTestSelectors collect: [ :each | self selector: each ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "allTestSelectors", "selector:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._allTestSelectors())._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._selector_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"buildSuite",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase.a$cls);
- $core.addMethod(
- $core.method({
- selector: "classTag",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "classTag\x0a\x09\x22Returns a tag or general category for this class.\x0a\x09Typically used to help tools do some reflection.\x0a\x09Helios, for example, uses this to decide what icon the class should display.\x22\x0a\x09\x0a\x09^ 'test'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "test";
- }; }),
- $globals.TestCase.a$cls);
- $core.addMethod(
- $core.method({
- selector: "isAbstract",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isAbstract\x0a\x09^ self name = TestCase name",
- referencedClasses: ["TestCase"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["=", "name"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv([$self._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["name"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv($globals.TestCase)._name());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isAbstract",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase.a$cls);
- $core.addMethod(
- $core.method({
- selector: "isTestClass",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isTestClass\x0a\x09^ self isAbstract not",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["not", "isAbstract"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._isAbstract())._not();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isTestClass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase.a$cls);
- $core.addMethod(
- $core.method({
- selector: "lookupHierarchyRoot",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "lookupHierarchyRoot\x0a\x09^ TestCase",
- referencedClasses: ["TestCase"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.TestCase;
- }; }),
- $globals.TestCase.a$cls);
- $core.addMethod(
- $core.method({
- selector: "selector:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aSelector"],
- source: "selector: aSelector\x0a\x09^ self new\x0a\x09\x09setTestSelector: aSelector;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["setTestSelector:", "new", "yourself"]
- }, function ($methodClass){ return function (aSelector){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._setTestSelector_(aSelector);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"selector:",{aSelector:aSelector})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase.a$cls);
- $core.addMethod(
- $core.method({
- selector: "shouldInheritSelectors",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "shouldInheritSelectors\x0a\x09^ self ~= self lookupHierarchyRoot",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["~=", "lookupHierarchyRoot"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self.__tild_eq($self._lookupHierarchyRoot());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shouldInheritSelectors",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase.a$cls);
- $core.addMethod(
- $core.method({
- selector: "testSelectors",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSelectors\x0a\x09^ self methodDictionary keys select: [ :each | each match: '^test' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["select:", "keys", "methodDictionary", "match:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($self._methodDictionary())._keys())._select_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._match_("^test");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSelectors",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestCase.a$cls);
- $core.addClass("TestContext", $globals.Object, "SUnit");
- $core.setSlots($globals.TestContext, ["testCase"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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).";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "execute:",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "execute: aBlock\x0a\x09| failed result |\x0a\x09\x0a\x09testCase context: self.\x0a\x09[\x0a\x09\x09failed := true.\x0a\x09\x09result := aBlock value.\x0a\x09\x09testCase isAsync ifFalse: [\x0a\x09\x09\x09testCase assert: result isThenable not description: testCase asString, ' returned promise without sending #timeout:' ].\x0a\x09\x09failed := false\x0a\x09]\x0a\x09\x09ensure: [\x0a\x09\x09\x09\x22testCase context: nil.\x22\x0a\x09\x09\x09\x0a\x09\x09\x09(failed and: [ testCase isAsync ]) ifTrue: [ testCase finished ].\x0a\x09\x09\x09testCase isAsync\x0a\x09\x09\x09\x09ifFalse: [ testCase tearDown ]\x0a\x09\x09\x09\x09ifTrue: [ result isThenable ifTrue: [\x0a\x09\x09\x09\x09\x09result\x0a\x09\x09\x09\x09\x09\x09then: [ testCase isAsync ifTrue: [ self execute: [ testCase finished ] ] ]\x0a\x09\x09\x09\x09\x09\x09catch: [ :error | testCase isAsync ifTrue: [ self execute: [ error signal ] ] ] ] ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["context:", "ensure:", "value", "ifFalse:", "isAsync", "assert:description:", "not", "isThenable", ",", "asString", "ifTrue:", "and:", "finished", "ifFalse:ifTrue:", "tearDown", "then:catch:", "execute:", "signal"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- var failed,result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $recv($self.testCase)._context_(self);
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- failed=true;
- result=$recv(aBlock)._value();
- if(!$core.assert([$recv($self.testCase)._isAsync()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["isAsync"]=1
- //>>excludeEnd("ctx");
- ][0])){
- $recv($self.testCase)._assert_description_($recv([$recv(result)._isThenable()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["isThenable"]=1
- //>>excludeEnd("ctx");
- ][0])._not(),$recv($recv($self.testCase)._asString()).__comma(" returned promise without sending #timeout:"));
- }
- failed=false;
- return failed;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._ensure_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert(failed)){
- $1=[$recv($self.testCase)._isAsync()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["isAsync"]=2
- //>>excludeEnd("ctx");
- ][0];
- } else {
- $1=false;
- }
- if($core.assert($1)){
- [$recv($self.testCase)._finished()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["finished"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- if($core.assert([$recv($self.testCase)._isAsync()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["isAsync"]=3
- //>>excludeEnd("ctx");
- ][0])){
- if($core.assert($recv(result)._isThenable())){
- return $recv(result)._then_catch_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv($self.testCase)._isAsync()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["isAsync"]=4
- //>>excludeEnd("ctx");
- ][0])){
- return [$self._execute_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx4) {
- //>>excludeEnd("ctx");
- return $recv($self.testCase)._finished();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx4) {$ctx4.fillBlock({},$ctx3,11)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["execute:"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,9)});
- //>>excludeEnd("ctx");
- }),(function(error){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($self.testCase)._isAsync())){
- return $self._execute_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx4) {
- //>>excludeEnd("ctx");
- return $recv(error)._signal();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx4) {$ctx4.fillBlock({},$ctx3,14)});
- //>>excludeEnd("ctx");
- }));
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({error:error},$ctx2,12)});
- //>>excludeEnd("ctx");
- }));
- }
- } else {
- return $recv($self.testCase)._tearDown();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"execute:",{aBlock:aBlock,failed:failed,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestContext);
- $core.addMethod(
- $core.method({
- selector: "start",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "start\x0a\x09self execute: [\x0a\x09\x09testCase setUp.\x0a\x09\x09testCase performTest ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["execute:", "setUp", "performTest"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._execute_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv($self.testCase)._setUp();
- return $recv($self.testCase)._performTest();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"start",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestContext);
- $core.addMethod(
- $core.method({
- selector: "testCase:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aTestCase"],
- source: "testCase: aTestCase\x0a\x09testCase := aTestCase",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aTestCase){
- var self=this,$self=this;
- $self.testCase=aTestCase;
- return self;
- }; }),
- $globals.TestContext);
- $core.addMethod(
- $core.method({
- selector: "testCase:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aTestCase"],
- source: "testCase: aTestCase\x0a\x09^ self new\x0a\x09\x09testCase: aTestCase;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["testCase:", "new", "yourself"]
- }, function ($methodClass){ return function (aTestCase){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._new();
- $recv($1)._testCase_(aTestCase);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCase:",{aTestCase:aTestCase})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestContext.a$cls);
- $core.addClass("ReportingTestContext", $globals.TestContext, "SUnit");
- $core.setSlots($globals.ReportingTestContext, ["finished", "result"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "execute:",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- 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 ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ensure:", "withErrorReporting:", "execute:", "ifFalse:", "isAsync", "increaseRuns", "value"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._withErrorReporting_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx3.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._execute_.call($self,aBlock))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._ensure_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv($self.testCase)._isAsync())){
- $recv($self.result)._increaseRuns();
- return $recv($self.finished)._value();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"execute:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ReportingTestContext);
- $core.addMethod(
- $core.method({
- selector: "finished:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "finished: aBlock\x0a\x09finished := aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- $self.finished=aBlock;
- return self;
- }; }),
- $globals.ReportingTestContext);
- $core.addMethod(
- $core.method({
- selector: "result:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aTestResult"],
- source: "result: aTestResult\x0a\x09result := aTestResult",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aTestResult){
- var self=this,$self=this;
- $self.result=aTestResult;
- return self;
- }; }),
- $globals.ReportingTestContext);
- $core.addMethod(
- $core.method({
- selector: "withErrorReporting:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- 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 ]",
- referencedClasses: ["TestFailure", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:do:", "addFailure:", "addError:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._on_do_($globals.TestFailure,(function(ex){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self.result)._addFailure_($self.testCase);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._on_do_($globals.Error,(function(ex){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self.result)._addError_($self.testCase);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,3)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["on:do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"withErrorReporting:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ReportingTestContext);
- $core.addMethod(
- $core.method({
- selector: "testCase:result:finished:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aTestCase", "aTestResult", "aBlock"],
- source: "testCase: aTestCase result: aTestResult finished: aBlock\x0a\x09^ (super testCase: aTestCase)\x0a\x09\x09result: aTestResult;\x0a\x09\x09finished: aBlock;\x0a\x09\x09yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["result:", "testCase:", "finished:", "yourself"]
- }, function ($methodClass){ return function (aTestCase,aTestResult,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._testCase_.call($self,aTestCase))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._result_(aTestResult);
- $recv($1)._finished_(aBlock);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCase:result:finished:",{aTestCase:aTestCase,aTestResult:aTestResult,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ReportingTestContext.a$cls);
- $core.addClass("TestFailure", $globals.Error, "SUnit");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addClass("TestResult", $globals.Object, "SUnit");
- $core.setSlots($globals.TestResult, ["timestamp", "runs", "errors", "failures", "total"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "addError:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anError"],
- source: "addError: anError\x0a\x09self errors add: anError",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "errors"]
- }, function ($methodClass){ return function (anError){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._errors())._add_(anError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addError:",{anError:anError})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestResult);
- $core.addMethod(
- $core.method({
- selector: "addFailure:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aFailure"],
- source: "addFailure: aFailure\x0a\x09self failures add: aFailure",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "failures"]
- }, function ($methodClass){ return function (aFailure){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._failures())._add_(aFailure);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addFailure:",{aFailure:aFailure})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestResult);
- $core.addMethod(
- $core.method({
- selector: "errors",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "errors\x0a\x09^ errors",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.errors;
- }; }),
- $globals.TestResult);
- $core.addMethod(
- $core.method({
- selector: "failures",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "failures\x0a\x09^ failures",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.failures;
- }; }),
- $globals.TestResult);
- $core.addMethod(
- $core.method({
- selector: "increaseRuns",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "increaseRuns\x0a\x09runs := runs + 1",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["+"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.runs=$recv($self.runs).__plus((1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"increaseRuns",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestResult);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x09timestamp := Date now.\x0a\x09runs := 0.\x0a\x09errors := Array new.\x0a\x09failures := Array new.\x0a\x09total := 0",
- referencedClasses: ["Date", "Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "now", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.timestamp=$recv($globals.Date)._now();
- $self.runs=(0);
- $self.errors=[$recv($globals.Array)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self.failures=$recv($globals.Array)._new();
- $self.total=(0);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestResult);
- $core.addMethod(
- $core.method({
- selector: "nextRunDo:",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "==", "runs", "total", "value:", "+"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv([$self._runs()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["runs"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq_eq($self._total()))){
- return $recv(aBlock)._value_($recv($self._runs()).__plus((1)));
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextRunDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestResult);
- $core.addMethod(
- $core.method({
- selector: "runCase:",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aTestCase"],
- 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 ]",
- referencedClasses: ["TestFailure", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:do:", "increaseRuns", "runCase", "addFailure:", "addError:"]
- }, function ($methodClass){ return function (aTestCase){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- $self._increaseRuns();
- return $recv(aTestCase)._runCase();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }))._on_do_($globals.TestFailure,(function(ex){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._addFailure_(aTestCase);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._on_do_($globals.Error,(function(ex){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._addError_(aTestCase);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({ex:ex},$ctx1,4)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["on:do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"runCase:",{aTestCase:aTestCase})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestResult);
- $core.addMethod(
- $core.method({
- selector: "runs",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "runs\x0a\x09^ runs",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.runs;
- }; }),
- $globals.TestResult);
- $core.addMethod(
- $core.method({
- selector: "status",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "status\x0a\x09^ self errors ifNotEmpty: [ 'error' ] ifEmpty: [\x0a\x09\x09self failures ifNotEmpty: [ 'failure' ] ifEmpty: [\x0a\x09\x09\x09'success' ]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotEmpty:ifEmpty:", "errors", "failures"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return [$recv($self._errors())._ifNotEmpty_ifEmpty_((function(){
- return "error";
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._failures())._ifNotEmpty_ifEmpty_((function(){
- return "failure";
- }),(function(){
- return "success";
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["ifNotEmpty:ifEmpty:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"status",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestResult);
- $core.addMethod(
- $core.method({
- selector: "timestamp",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "timestamp\x0a\x09^ timestamp",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.timestamp;
- }; }),
- $globals.TestResult);
- $core.addMethod(
- $core.method({
- selector: "total",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "total\x0a\x09^ total",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.total;
- }; }),
- $globals.TestResult);
- $core.addMethod(
- $core.method({
- selector: "total:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "total: aNumber\x0a\x09total := aNumber",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- $self.total=aNumber;
- return self;
- }; }),
- $globals.TestResult);
- $core.addClass("TestSuiteRunner", $globals.Object, "SUnit");
- $core.setSlots($globals.TestSuiteRunner, ["suite", "result", "announcer", "runNextTest"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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`.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "announcer",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "announcer\x0a\x09^ announcer",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.announcer;
- }; }),
- $globals.TestSuiteRunner);
- $core.addMethod(
- $core.method({
- selector: "contextOf:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anInteger"],
- source: "contextOf: anInteger\x0a\x09^ ReportingTestContext testCase: (suite at: anInteger) result: result finished: [ self resume ]",
- referencedClasses: ["ReportingTestContext"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["testCase:result:finished:", "at:", "resume"]
- }, function ($methodClass){ return function (anInteger){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.ReportingTestContext)._testCase_result_finished_($recv($self.suite)._at_(anInteger),$self.result,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._resume();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"contextOf:",{anInteger:anInteger})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestSuiteRunner);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ] ].",
- referencedClasses: ["Announcer", "TestResult"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "new", "runs", "ifTrue:", "<", "total", "start", "contextOf:", "+"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.announcer=[$recv($globals.Announcer)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self.result=$recv($globals.TestResult)._new();
- $self.runNextTest=(function(){
- var runs;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- runs=$recv($self.result)._runs();
- if($core.assert($recv(runs).__lt($recv($self.result)._total()))){
- return $recv($self._contextOf_($recv(runs).__plus((1))))._start();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({runs:runs},$ctx1,1)});
- //>>excludeEnd("ctx");
- });
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestSuiteRunner);
- $core.addMethod(
- $core.method({
- selector: "result",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "result\x0a\x09^ result",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.result;
- }; }),
- $globals.TestSuiteRunner);
- $core.addMethod(
- $core.method({
- selector: "resume",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "resume\x0a\x09runNextTest fork.\x0a\x09announcer announce: (ResultAnnouncement new result: result)",
- referencedClasses: ["ResultAnnouncement"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["fork", "announce:", "result:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.runNextTest)._fork();
- $recv($self.announcer)._announce_($recv($recv($globals.ResultAnnouncement)._new())._result_($self.result));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"resume",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestSuiteRunner);
- $core.addMethod(
- $core.method({
- selector: "run",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "run\x0a\x09result total: suite size.\x0a\x09self resume",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["total:", "size", "resume"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.result)._total_($recv($self.suite)._size());
- $self._resume();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"run",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestSuiteRunner);
- $core.addMethod(
- $core.method({
- selector: "suite:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "suite: aCollection\x0a\x09suite := aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- $self.suite=aCollection;
- return self;
- }; }),
- $globals.TestSuiteRunner);
- $core.addMethod(
- $core.method({
- selector: "new",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "new\x0a\x09self shouldNotImplement",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["shouldNotImplement"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._shouldNotImplement();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"new",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestSuiteRunner.a$cls);
- $core.addMethod(
- $core.method({
- selector: "on:",
- protocol: "instance creation",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "on: aCollection\x0a\x09^ super new suite: aCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["suite:", "new"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv([(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._new.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0])._suite_(aCollection);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"on:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TestSuiteRunner.a$cls);
- $core.addMethod(
- $core.method({
- selector: "isTestPackage",
- protocol: "*SUnit",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isTestPackage\x0a\x09^ self classes anySatisfy: [ :each | each isTestClass ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["anySatisfy:", "classes", "isTestClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._classes())._anySatisfy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._isTestClass();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isTestPackage",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Package);
- $core.addMethod(
- $core.method({
- selector: "isTestClass",
- protocol: "*SUnit",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isTestClass\x0a\x09^ false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return false;
- }; }),
- $globals.TBehaviorDefaults);
- });
- define('amber/core/Kernel-Tests',["amber/boot", "require", "amber/core/Kernel-Objects", "amber/core/SUnit"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Kernel-Tests");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("AnnouncementSubscriptionTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "testAddExtensionMethod",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["isDirty", "package", "class", "beClean", "compile:protocol:", "deny:", "removeCompiledMethod:", "ifTrue:", "beDirty"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var method,dirty;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- dirty=[$recv([$recv([$self._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0])._package()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["package"]=1
- //>>excludeEnd("ctx");
- ][0])._isDirty()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["isDirty"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv([$recv([$self._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=2
- //>>excludeEnd("ctx");
- ][0])._package()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["package"]=2
- //>>excludeEnd("ctx");
- ][0])._beClean();
- method=$recv([$self._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=3
- //>>excludeEnd("ctx");
- ][0])._compile_protocol_("doNothing","**not-a-package");
- $self._deny_($recv([$recv([$self._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=4
- //>>excludeEnd("ctx");
- ][0])._package()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["package"]=3
- //>>excludeEnd("ctx");
- ][0])._isDirty());
- $recv([$self._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=5
- //>>excludeEnd("ctx");
- ][0])._removeCompiledMethod_(method);
- if($core.assert(dirty)){
- $recv($recv($self._class())._package())._beDirty();
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAddExtensionMethod",{method:method,dirty:dirty})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AnnouncementSubscriptionTest);
- $core.addMethod(
- $core.method({
- selector: "testHandlesAnnouncement",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testHandlesAnnouncement\x0a\x09| subscription announcementClass1 announcementClass2 classBuilder |\x0a\x09\x0a\x09classBuilder := ClassBuilder new.\x0a\x09announcementClass1 := classBuilder addSubclassOf: SystemAnnouncement named: 'TestAnnouncement1' slots: #() package: 'Kernel-Tests'.\x0a\x09\x0a\x09subscription := AnnouncementSubscription new announcementClass: SystemAnnouncement.\x0a\x09\x22Test whether the same class triggers the announcement\x22\x0a\x09self assert: (subscription handlesAnnouncement: SystemAnnouncement new) equals: true.\x0a\x09\x22Test whether a subclass triggers the announcement\x22\x0a\x09self assert: (subscription handlesAnnouncement: announcementClass1 new) equals: true.\x0a\x09\x22Test whether an unrelated class does not trigger the announcement\x22\x0a\x09self assert: (subscription handlesAnnouncement: Object new) equals: false.\x0a\x09\x0a\x09classBuilder basicRemoveClass: announcementClass1.",
- referencedClasses: ["ClassBuilder", "SystemAnnouncement", "AnnouncementSubscription", "Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "addSubclassOf:named:slots:package:", "announcementClass:", "assert:equals:", "handlesAnnouncement:", "basicRemoveClass:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var subscription,announcementClass1,announcementClass2,classBuilder;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- classBuilder=[$recv($globals.ClassBuilder)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- announcementClass1=$recv(classBuilder)._addSubclassOf_named_slots_package_($globals.SystemAnnouncement,"TestAnnouncement1",[],"Kernel-Tests");
- subscription=$recv([$recv($globals.AnnouncementSubscription)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0])._announcementClass_($globals.SystemAnnouncement);
- [$self._assert_equals_([$recv(subscription)._handlesAnnouncement_([$recv($globals.SystemAnnouncement)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["handlesAnnouncement:"]=1
- //>>excludeEnd("ctx");
- ][0],true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(subscription)._handlesAnnouncement_([$recv(announcementClass1)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["handlesAnnouncement:"]=2
- //>>excludeEnd("ctx");
- ][0],true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv(subscription)._handlesAnnouncement_($recv($globals.Object)._new()),false);
- $recv(classBuilder)._basicRemoveClass_(announcementClass1);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testHandlesAnnouncement",{subscription:subscription,announcementClass1:announcementClass1,announcementClass2:announcementClass2,classBuilder:classBuilder})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AnnouncementSubscriptionTest);
- $core.addClass("AnnouncerTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "testOnDo",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: ["Announcer", "SystemAnnouncement"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "on:do:", "+", "announce:", "assert:equals:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var counter,announcer;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- counter=(0);
- announcer=[$recv($globals.Announcer)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(announcer)._on_do_($globals.SystemAnnouncement,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- counter=$recv(counter).__plus((1));
- return counter;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- [$recv(announcer)._announce_([$recv($globals.SystemAnnouncement)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["announce:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(counter,(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(announcer)._announce_($recv($globals.SystemAnnouncement)._new());
- $self._assert_equals_(counter,(2));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testOnDo",{counter:counter,announcer:announcer})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AnnouncerTest);
- $core.addMethod(
- $core.method({
- selector: "testOnDoFor",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: ["Announcer", "SystemAnnouncement"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "on:do:for:", "+", "announce:", "assert:equals:", "unsubscribe:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var counter,announcer;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- counter=(0);
- announcer=[$recv($globals.Announcer)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(announcer)._on_do_for_($globals.SystemAnnouncement,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- counter=$recv(counter).__plus((1));
- return counter;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),self);
- [$recv(announcer)._announce_([$recv($globals.SystemAnnouncement)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["announce:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(counter,(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(announcer)._announce_([$recv($globals.SystemAnnouncement)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["announce:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(counter,(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(announcer)._unsubscribe_(self);
- $recv(announcer)._announce_($recv($globals.SystemAnnouncement)._new());
- $self._assert_equals_(counter,(2));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testOnDoFor",{counter:counter,announcer:announcer})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AnnouncerTest);
- $core.addMethod(
- $core.method({
- selector: "testOnDoOnce",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: ["Announcer", "SystemAnnouncement"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "on:doOnce:", "+", "announce:", "assert:equals:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var counter,announcer;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- counter=(0);
- announcer=[$recv($globals.Announcer)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(announcer)._on_doOnce_($globals.SystemAnnouncement,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- counter=$recv(counter).__plus((1));
- return counter;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- [$recv(announcer)._announce_([$recv($globals.SystemAnnouncement)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["announce:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(counter,(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(announcer)._announce_($recv($globals.SystemAnnouncement)._new());
- $self._assert_equals_(counter,(1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testOnDoOnce",{counter:counter,announcer:announcer})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AnnouncerTest);
- $core.addClass("BlockClosureTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "localReturnOnDoCatch",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "localReturnOnDoCatch\x0a [ ^ 2 ] on: Error do: [].\x0a ^ 3",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:do:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- $recv((function(){
- throw $early=[(2)];
- }))._on_do_($globals.Error,(function(){
- }));
- return (3);
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"localReturnOnDoCatch",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "localReturnOnDoMiss",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "localReturnOnDoMiss\x0a [ ^ 2 ] on: Class do: [].\x0a ^ 3",
- referencedClasses: ["Class"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:do:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- $recv((function(){
- throw $early=[(2)];
- }))._on_do_($globals.Class,(function(){
- }));
- return (3);
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"localReturnOnDoMiss",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "testCanClearInterval",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCanClearInterval\x0a\x09self shouldnt: [ ([ Error new signal ] valueWithInterval: 0) clearInterval ] raise: Error",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["shouldnt:raise:", "clearInterval", "valueWithInterval:", "signal", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._shouldnt_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Error)._new())._signal();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }))._valueWithInterval_((0)))._clearInterval();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCanClearInterval",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "testCanClearTimeout",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCanClearTimeout\x0a\x09self shouldnt: [ ([ Error new signal ] valueWithTimeout: 0) clearTimeout ] raise: Error",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["shouldnt:raise:", "clearTimeout", "valueWithTimeout:", "signal", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._shouldnt_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Error)._new())._signal();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }))._valueWithTimeout_((0)))._clearTimeout();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCanClearTimeout",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "testCompiledSource",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCompiledSource\x0a\x09self assert: ([ 1+1 ] compiledSource includesSubString: 'function')",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "includesSubString:", "compiledSource", "+"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv($recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (1).__plus((1));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._compiledSource())._includesSubString_("function"));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCompiledSource",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "testCurrySelf",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCurrySelf\x0a\x09| curriedMethod array |\x0a\x09curriedMethod := [ :selfarg :x | selfarg at: x ] currySelf asCompiledMethod: 'foo:'.\x0a\x09curriedMethod protocol: '**test helper'.\x0a\x09array := #(3 1 4).\x0a\x09Array addCompiledMethod: curriedMethod.\x0a\x09[ self assert: (array foo: 2) equals: 1 ]\x0a\x09ensure: [ Array removeCompiledMethod: curriedMethod ]",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["asCompiledMethod:", "currySelf", "at:", "protocol:", "addCompiledMethod:", "ensure:", "assert:equals:", "foo:", "removeCompiledMethod:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var curriedMethod,array;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- curriedMethod=$recv($recv((function(selfarg,x){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(selfarg)._at_(x);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({selfarg:selfarg,x:x},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._currySelf())._asCompiledMethod_("foo:");
- $recv(curriedMethod)._protocol_("**test helper");
- array=[(3), (1), (4)];
- $recv($globals.Array)._addCompiledMethod_(curriedMethod);
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._assert_equals_($recv(array)._foo_((2)),(1));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }))._ensure_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.Array)._removeCompiledMethod_(curriedMethod);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCurrySelf",{curriedMethod:curriedMethod,array:array})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "testEnsure",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testEnsure\x0a\x09self assert: ([ 3 ] ensure: [ 4 ]) equals: 3",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "ensure:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv((function(){
- return (3);
- }))._ensure_((function(){
- return (4);
- })),(3));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testEnsure",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "testEnsureRaises",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testEnsureRaises\x0a\x09self should: [ [Error new signal ] ensure: [ true ]] raise: Error",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "ensure:", "signal", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Error)._new())._signal();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }))._ensure_((function(){
- return true;
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testEnsureRaises",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "testExceptionSemantics",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testExceptionSemantics\x0a\x09\x22See https://lolg.it/amber/amber/issues/314\x22\x0a\x09self timeout: 100.\x0a\x09\x0a\x09(self async: [\x0a\x09\x09[\x0a\x09\x09\x09self assert: true.\x0a\x09\x09\x09Error signal.\x0a\x09\x09\x09\x22The following should *not* be run\x22\x0a\x09\x09\x09self deny: true.\x0a\x09\x09\x09self finished.\x0a\x09\x09] on: Error do: [ :ex | self finished ]\x0a\x09]) valueWithTimeout: 0",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:", "valueWithTimeout:", "async:", "on:do:", "assert:", "signal", "deny:", "finished"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._timeout_((100));
- $recv($self._async_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- $self._assert_(true);
- $recv($globals.Error)._signal();
- $self._deny_(true);
- return [$self._finished()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["finished"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }))._on_do_($globals.Error,(function(ex){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._finished();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({ex:ex},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))._valueWithTimeout_((0));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testExceptionSemantics",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "testLocalReturnOnDoCatch",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testLocalReturnOnDoCatch\x0a\x09self assert: self localReturnOnDoCatch equals: 2",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "localReturnOnDoCatch"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($self._localReturnOnDoCatch(),(2));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testLocalReturnOnDoCatch",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "testLocalReturnOnDoMiss",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testLocalReturnOnDoMiss\x0a\x09self assert: self localReturnOnDoMiss equals: 2",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "localReturnOnDoMiss"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($self._localReturnOnDoMiss(),(2));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testLocalReturnOnDoMiss",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "testNewWithValues",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNewWithValues\x0a<inlineJS: '\x0a\x09function TestConstructor(arg1, arg2, arg3) {}\x0a\x09TestConstructor.prototype.name = \x22theTestPrototype\x22;\x0a\x0a\x09var wrappedConstructor = $recv(TestConstructor);\x0a\x09var result = wrappedConstructor._newWithValues_([1, 2, 3]);\x0a\x09$self._assert_(result instanceof TestConstructor);\x0a\x09$self._assert_equals_(result.name, \x22theTestPrototype\x22);\x0a\x0a\x09/* newWithValues: cannot help if the argument list is wrong, and should warn that a mistake was made. */\x0a\x09$self._should_raise_(function () {wrappedConstructor._newWithValues_(\x22single argument\x22);}, $globals.Error);\x0a'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09function TestConstructor(arg1, arg2, arg3) {}\x0a\x09TestConstructor.prototype.name = \x22theTestPrototype\x22;\x0a\x0a\x09var wrappedConstructor = $recv(TestConstructor);\x0a\x09var result = wrappedConstructor._newWithValues_([1, 2, 3]);\x0a\x09$self._assert_(result instanceof TestConstructor);\x0a\x09$self._assert_equals_(result.name, \x22theTestPrototype\x22);\x0a\x0a\x09/* newWithValues: cannot help if the argument list is wrong, and should warn that a mistake was made. */\x0a\x09$self._should_raise_(function () {wrappedConstructor._newWithValues_(\x22single argument\x22);}, $globals.Error);"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- function TestConstructor(arg1, arg2, arg3) {}
- TestConstructor.prototype.name = "theTestPrototype";
- var wrappedConstructor = $recv(TestConstructor);
- var result = wrappedConstructor._newWithValues_([1, 2, 3]);
- $self._assert_(result instanceof TestConstructor);
- $self._assert_equals_(result.name, "theTestPrototype");
- /* newWithValues: cannot help if the argument list is wrong, and should warn that a mistake was made. */
- $self._should_raise_(function () {wrappedConstructor._newWithValues_("single argument");}, $globals.Error);;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNewWithValues",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "testNumArgs",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNumArgs\x0a\x09self assert: [] numArgs equals: 0.\x0a\x09self assert: [ :a :b | ] numArgs equals: 2",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "numArgs"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv((function(){
- }))._numArgs()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["numArgs"]=1
- //>>excludeEnd("ctx");
- ][0],(0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv((function(a,b){
- }))._numArgs(),(2));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNumArgs",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "testOnDo",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testOnDo\x0a\x09self assert: ([ Error new signal ] on: Error do: [ :ex | true ])",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "on:do:", "signal", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Error)._new())._signal();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._on_do_($globals.Error,(function(ex){
- return true;
- })));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testOnDo",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "testValue",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "value", "+", "value:", "value:value:", "*"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [(1).__plus((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["+"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._value()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value"]=1
- //>>excludeEnd("ctx");
- ][0],(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv((function(x){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(x).__plus((1));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,2)});
- //>>excludeEnd("ctx");
- }))._value_((2)),(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv((function(x,y){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(x).__star(y);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({x:x,y:y},$ctx1,3)});
- //>>excludeEnd("ctx");
- }))._value_value_((2),(4)),(8))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv((function(a,b,c){
- return (1);
- }))._value(),(1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testValue",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "testValueWithPossibleArguments",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "valueWithPossibleArguments:", "+"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv((function(){
- return (1);
- }))._valueWithPossibleArguments_([(3), (4)])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["valueWithPossibleArguments:"]=1
- //>>excludeEnd("ctx");
- ][0],(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv((function(a){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(a).__plus((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["+"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({a:a},$ctx1,2)});
- //>>excludeEnd("ctx");
- }))._valueWithPossibleArguments_([(3), (4)])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["valueWithPossibleArguments:"]=2
- //>>excludeEnd("ctx");
- ][0],(7))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv((function(a,b){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(a).__plus(b);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({a:a,b:b},$ctx1,3)});
- //>>excludeEnd("ctx");
- }))._valueWithPossibleArguments_([(3), (4), (5)]),(7));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testValueWithPossibleArguments",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "testWhileFalse",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["whileFalse:", ">", "+", "assert:equals:", "whileFalse"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var i;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- i=(0);
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(i).__gt((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[">"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._whileFalse_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- i=[$recv(i).__plus((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["+"]=1
- //>>excludeEnd("ctx");
- ][0];
- return i;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- [$self._assert_equals_(i,(6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- i=(0);
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- i=$recv(i).__plus((1));
- return $recv(i).__gt((5));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }))._whileFalse();
- $self._assert_equals_(i,(6));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testWhileFalse",{i:i})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addMethod(
- $core.method({
- selector: "testWhileTrue",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["whileTrue:", "<", "+", "assert:equals:", "whileTrue"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var i;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- i=(0);
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(i).__lt((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["<"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._whileTrue_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- i=[$recv(i).__plus((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["+"]=1
- //>>excludeEnd("ctx");
- ][0];
- return i;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- [$self._assert_equals_(i,(5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- i=(0);
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- i=$recv(i).__plus((1));
- return $recv(i).__lt((5));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }))._whileTrue();
- $self._assert_equals_(i,(5));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testWhileTrue",{i:i})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BlockClosureTest);
- $core.addClass("BooleanTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "testEquality",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deny:", "=", "assert:", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._deny_([(0).__eq(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([false.__eq((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_(["".__eq(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([false.__eq("")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([true.__eq(true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=5
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([false.__eq(true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=6
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_([true.__eq(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=7
- //>>excludeEnd("ctx");
- ][0]);
- [$self._assert_([false.__eq(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=8
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv([true._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq(true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=9
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_($recv([true._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=2
- //>>excludeEnd("ctx");
- ][0]).__eq(true._yourself()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testEquality",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BooleanTest);
- $core.addMethod(
- $core.method({
- selector: "testIdentity",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deny:", "==", "assert:", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._deny_([(0).__eq_eq(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([false.__eq_eq((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_(["".__eq_eq(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([false.__eq_eq("")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([true.__eq_eq(true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=5
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([false.__eq_eq(true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=6
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_([true.__eq_eq(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=7
- //>>excludeEnd("ctx");
- ][0]);
- [$self._assert_([false.__eq_eq(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=8
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv([true._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq_eq(true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=9
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_($recv([true._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=2
- //>>excludeEnd("ctx");
- ][0]).__eq_eq(true._yourself()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIdentity",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BooleanTest);
- $core.addMethod(
- $core.method({
- selector: "testIfTrueIfFalse",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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'.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "ifTrue:", "ifFalse:", "ifTrue:ifFalse:", "ifFalse:ifTrue:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3,$4,$5,$6,$7,$8;
- if($core.assert(true)){
- $1="alternative block";
- }
- [$self._assert_equals_($1,"alternative block")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- if(!$core.assert(true)){
- $2="alternative block";
- }
- [$self._assert_equals_($2,nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert(false)){
- $3="alternative block";
- }
- [$self._assert_equals_($3,nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- if(!$core.assert(false)){
- $4="alternative block";
- }
- [$self._assert_equals_($4,"alternative block")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert(false)){
- $5="alternative block";
- } else {
- $5="alternative block2";
- }
- [$self._assert_equals_($5,"alternative block2")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=5
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert(false)){
- $6="alternative block2";
- } else {
- $6="alternative block";
- }
- [$self._assert_equals_($6,"alternative block")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=6
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert(true)){
- $7="alternative block";
- } else {
- $7="alternative block2";
- }
- [$self._assert_equals_($7,"alternative block")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=7
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert(true)){
- $8="alternative block2";
- } else {
- $8="alternative block";
- }
- $self._assert_equals_($8,"alternative block2");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIfTrueIfFalse",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BooleanTest);
- $core.addMethod(
- $core.method({
- selector: "testIfTrueIfFalseWithBoxing",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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'.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "ifTrue:", "yourself", "ifFalse:", "ifTrue:ifFalse:", "ifFalse:ifTrue:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3,$4,$5,$6,$7,$8;
- if($core.assert([true._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0])){
- $1="alternative block";
- }
- [$self._assert_equals_($1,"alternative block")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- if(!$core.assert([true._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=2
- //>>excludeEnd("ctx");
- ][0])){
- $2="alternative block";
- }
- [$self._assert_equals_($2,nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert([false._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=3
- //>>excludeEnd("ctx");
- ][0])){
- $3="alternative block";
- }
- [$self._assert_equals_($3,nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- if(!$core.assert([false._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=4
- //>>excludeEnd("ctx");
- ][0])){
- $4="alternative block";
- }
- [$self._assert_equals_($4,"alternative block")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert([false._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=5
- //>>excludeEnd("ctx");
- ][0])){
- $5="alternative block";
- } else {
- $5="alternative block2";
- }
- [$self._assert_equals_($5,"alternative block2")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=5
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert([false._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=6
- //>>excludeEnd("ctx");
- ][0])){
- $6="alternative block2";
- } else {
- $6="alternative block";
- }
- [$self._assert_equals_($6,"alternative block")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=6
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert([true._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=7
- //>>excludeEnd("ctx");
- ][0])){
- $7="alternative block";
- } else {
- $7="alternative block2";
- }
- [$self._assert_equals_($7,"alternative block")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=7
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert(true._yourself())){
- $8="alternative block2";
- } else {
- $8="alternative block";
- }
- $self._assert_equals_($8,"alternative block2");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIfTrueIfFalseWithBoxing",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BooleanTest);
- $core.addMethod(
- $core.method({
- selector: "testLogic",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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))",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "&", "deny:", "|", ">"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_([true.__and(true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["&"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([true.__and(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["&"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([false.__and(true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["&"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([false.__and(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["&"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([true.__or(true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["|"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([true.__or(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["|"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([false.__or(true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["|"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([false.__or(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["|"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([true.__and([(1).__gt((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["&"]=5
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=5
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([$recv([(1).__gt((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=2
- //>>excludeEnd("ctx");
- ][0]).__and(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["&"]=6
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_($recv([(1).__gt((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=3
- //>>excludeEnd("ctx");
- ][0]).__and([(1).__gt((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=4
- //>>excludeEnd("ctx");
- ][0]));
- [$self._assert_([false.__or([(1).__gt((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=5
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["|"]=5
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=6
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv([(1).__gt((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=6
- //>>excludeEnd("ctx");
- ][0]).__or(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["|"]=6
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=7
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_($recv([(1).__gt((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=7
- //>>excludeEnd("ctx");
- ][0]).__or((1).__gt((2))));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testLogic",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BooleanTest);
- $core.addMethod(
- $core.method({
- selector: "testLogicKeywords",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ])",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "and:", "deny:", "or:", ">"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14;
- if($core.assert(true)){
- $1=true;
- } else {
- $1=false;
- }
- [$self._assert_($1)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert(true)){
- $2=false;
- } else {
- $2=false;
- }
- [$self._deny_($2)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert(false)){
- $3=true;
- } else {
- $3=false;
- }
- [$self._deny_($3)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=2
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert(false)){
- $4=false;
- } else {
- $4=false;
- }
- [$self._deny_($4)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=3
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert(true)){
- $5=true;
- } else {
- $5=true;
- }
- [$self._assert_($5)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert(true)){
- $6=true;
- } else {
- $6=false;
- }
- [$self._assert_($6)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=3
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert(false)){
- $7=true;
- } else {
- $7=true;
- }
- [$self._assert_($7)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=4
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert(false)){
- $8=true;
- } else {
- $8=false;
- }
- [$self._deny_($8)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=4
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert(true)){
- $9=[(1).__gt((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- $9=false;
- }
- [$self._assert_($9)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=5
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert([(1).__gt((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=2
- //>>excludeEnd("ctx");
- ][0])){
- $10=false;
- } else {
- $10=false;
- }
- [$self._deny_($10)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=5
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert([(1).__gt((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=3
- //>>excludeEnd("ctx");
- ][0])){
- $11=[(1).__gt((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=4
- //>>excludeEnd("ctx");
- ][0];
- } else {
- $11=false;
- }
- $self._deny_($11);
- if($core.assert(false)){
- $12=true;
- } else {
- $12=[(1).__gt((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=5
- //>>excludeEnd("ctx");
- ][0];
- }
- [$self._assert_($12)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=6
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert([(1).__gt((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=6
- //>>excludeEnd("ctx");
- ][0])){
- $13=true;
- } else {
- $13=false;
- }
- [$self._assert_($13)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=7
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert([(1).__gt((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=7
- //>>excludeEnd("ctx");
- ][0])){
- $14=true;
- } else {
- $14=(1).__gt((2));
- }
- $self._assert_($14);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testLogicKeywords",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BooleanTest);
- $core.addMethod(
- $core.method({
- selector: "testNonBooleanError",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNonBooleanError\x0a\x09self should: [ '' ifTrue: [] ifFalse: [] ] raise: NonBooleanReceiver",
- referencedClasses: ["NonBooleanReceiver"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "ifTrue:ifFalse:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert("")){
- return nil;
- } else {
- return nil;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.NonBooleanReceiver);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNonBooleanError",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BooleanTest);
- $core.addClass("ClassBuilderTest", $globals.TestCase, "Kernel-Tests");
- $core.setSlots($globals.ClassBuilderTest, ["builder", "theClass"]);
- $core.addMethod(
- $core.method({
- selector: "setUp",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "setUp\x0a\x09builder := ClassBuilder new",
- referencedClasses: ["ClassBuilder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.builder=$recv($globals.ClassBuilder)._new();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setUp",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilderTest);
- $core.addMethod(
- $core.method({
- selector: "tearDown",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "tearDown\x0a\x09self tearDownTheClass.\x0a\x09theClass ifNotNil: [\x0a\x09\x09self deny: (theClass package classes includes: theClass).\x0a\x09\x09self assert: (Smalltalk globals at: theClass name) equals: nil ]",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["tearDownTheClass", "ifNotNil:", "deny:", "includes:", "classes", "package", "assert:equals:", "at:", "globals", "name"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self._tearDownTheClass();
- $1=$self.theClass;
- if($1 == null || $1.a$nil){
- $1;
- } else {
- $self._deny_($recv($recv($recv($self.theClass)._package())._classes())._includes_($self.theClass));
- $self._assert_equals_($recv($recv($globals.Smalltalk)._globals())._at_($recv($self.theClass)._name()),nil);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"tearDown",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilderTest);
- $core.addMethod(
- $core.method({
- selector: "testAddTrait",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAddTrait\x0a\x09theClass := builder addTraitNamed: 'ObjectMock2' package: 'Kernel-Tests'.\x0a\x09self assert: theClass name equals: 'ObjectMock2'.\x0a\x09self assert: (theClass package classes occurrencesOf: theClass) equals: 1.\x0a\x09self assert: theClass package equals: ObjectMock package",
- referencedClasses: ["ObjectMock"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addTraitNamed:package:", "assert:equals:", "name", "occurrencesOf:", "classes", "package"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.theClass=$recv($self.builder)._addTraitNamed_package_("ObjectMock2","Kernel-Tests");
- [$self._assert_equals_($recv($self.theClass)._name(),"ObjectMock2")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv($recv([$recv($self.theClass)._package()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["package"]=1
- //>>excludeEnd("ctx");
- ][0])._classes())._occurrencesOf_($self.theClass),(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_([$recv($self.theClass)._package()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["package"]=2
- //>>excludeEnd("ctx");
- ][0],$recv($globals.ObjectMock)._package());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAddTrait",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilderTest);
- $core.addMethod(
- $core.method({
- selector: "testClassCopy",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testClassCopy\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09self assert: theClass name equals: 'ObjectMock2'.\x0a\x09self assert: theClass isClassCopyOf: ObjectMock",
- referencedClasses: ["ObjectMock"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyClass:named:", "assert:equals:", "name", "assert:isClassCopyOf:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
- $self._assert_equals_($recv($self.theClass)._name(),"ObjectMock2");
- $self._assert_isClassCopyOf_($self.theClass,$globals.ObjectMock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testClassCopy",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilderTest);
- $core.addMethod(
- $core.method({
- selector: "testClassMigration",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testClassMigration\x0a\x09| instance oldClass |\x0a\x09\x0a\x09oldClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09instance := (Smalltalk globals at: 'ObjectMock2') new.\x0a\x09\x0a\x09\x22Change the superclass of ObjectMock2\x22\x0a\x09theClass := ObjectMock subclass: #ObjectMock2\x0a\x09\x09instanceVariableNames: ''\x0a\x09\x09package: 'Kernel-Tests'.\x0a\x09\x0a\x09self deny: oldClass == ObjectMock2.\x0a\x09\x0a\x09self assert: ObjectMock2 superclass == ObjectMock.\x0a\x09self assert: ObjectMock2 slots isEmpty.\x0a\x09self assert: ObjectMock2 selectors equals: oldClass selectors.\x0a\x09self assert: ObjectMock2 comment equals: oldClass comment.\x0a\x09self assert: ObjectMock2 package name equals: 'Kernel-Tests'.\x0a\x09self assert: (ObjectMock2 package classes includes: ObjectMock2).\x0a\x09\x0a\x09self deny: instance class == ObjectMock2.\x0a\x09\x0a\x09self assert: (Smalltalk globals at: instance class name) isNil",
- referencedClasses: ["ObjectMock", "Smalltalk", "ObjectMock2"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyClass:named:", "new", "at:", "globals", "subclass:instanceVariableNames:package:", "deny:", "==", "assert:", "superclass", "isEmpty", "slots", "assert:equals:", "selectors", "comment", "name", "package", "includes:", "classes", "class", "isNil"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var instance,oldClass;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- oldClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
- instance=$recv([$recv([$recv($globals.Smalltalk)._globals()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["globals"]=1
- //>>excludeEnd("ctx");
- ][0])._at_("ObjectMock2")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:"]=1
- //>>excludeEnd("ctx");
- ][0])._new();
- $self.theClass=$recv($globals.ObjectMock)._subclass_instanceVariableNames_package_("ObjectMock2","","Kernel-Tests");
- [$self._deny_([$recv(oldClass).__eq_eq($globals.ObjectMock2)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv($recv($globals.ObjectMock2)._superclass()).__eq_eq($globals.ObjectMock)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_($recv($recv($globals.ObjectMock2)._slots())._isEmpty())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($globals.ObjectMock2)._selectors()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["selectors"]=1
- //>>excludeEnd("ctx");
- ][0],$recv(oldClass)._selectors())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($globals.ObjectMock2)._comment()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["comment"]=1
- //>>excludeEnd("ctx");
- ][0],$recv(oldClass)._comment())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_([$recv([$recv($globals.ObjectMock2)._package()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["package"]=1
- //>>excludeEnd("ctx");
- ][0])._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["name"]=1
- //>>excludeEnd("ctx");
- ][0],"Kernel-Tests");
- [$self._assert_($recv($recv($recv($globals.ObjectMock2)._package())._classes())._includes_($globals.ObjectMock2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_($recv([$recv(instance)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq_eq($globals.ObjectMock2));
- $self._assert_($recv($recv($recv($globals.Smalltalk)._globals())._at_($recv($recv(instance)._class())._name()))._isNil());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testClassMigration",{instance:instance,oldClass:oldClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilderTest);
- $core.addMethod(
- $core.method({
- selector: "testClassMigrationWithClassSlots",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testClassMigrationWithClassSlots\x0a\x09\x0a\x09builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09ObjectMock2 class slots: #(foo bar).\x0a\x09\x0a\x09\x22Change the superclass of ObjectMock2\x22\x0a\x09theClass := ObjectMock subclass: #ObjectMock2\x0a\x09\x09instanceVariableNames: ''\x0a\x09\x09package: 'Kernel-Tests'.\x0a\x09\x0a\x09self assert: ObjectMock2 class slots equals: #('foo' 'bar')",
- referencedClasses: ["ObjectMock", "ObjectMock2"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyClass:named:", "slots:", "class", "subclass:instanceVariableNames:package:", "assert:equals:", "slots"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
- $recv([$recv($globals.ObjectMock2)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0])._slots_(["foo", "bar"]);
- $self.theClass=$recv($globals.ObjectMock)._subclass_instanceVariableNames_package_("ObjectMock2","","Kernel-Tests");
- $self._assert_equals_($recv($recv($globals.ObjectMock2)._class())._slots(),["foo", "bar"]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testClassMigrationWithClassSlots",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilderTest);
- $core.addMethod(
- $core.method({
- selector: "testClassMigrationWithSubclasses",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testClassMigrationWithSubclasses\x0a\x09\x0a\x09builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09ObjectMock2 subclass: 'ObjectMock3' instanceVariableNames: '' package: 'Kernel-Tests'.\x0a\x09ObjectMock3 subclass: 'ObjectMock4' instanceVariableNames: '' package: 'Kernel-Tests'.\x0a\x09\x0a\x09\x22Change the superclass of ObjectMock2\x22\x0a\x09theClass := ObjectMock subclass: #ObjectMock2\x0a\x09\x09instanceVariableNames: ''\x0a\x09\x09package: 'Kernel-Tests'.\x0a\x09\x0a\x09self assert: ObjectMock subclasses equals: {ObjectMock2}.\x0a\x09self assert: ObjectMock2 subclasses equals: {ObjectMock3}.\x0a\x09self assert: ObjectMock3 subclasses equals: {ObjectMock4}",
- referencedClasses: ["ObjectMock", "ObjectMock2", "ObjectMock3", "ObjectMock4"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyClass:named:", "subclass:instanceVariableNames:package:", "assert:equals:", "subclasses"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
- [$recv($globals.ObjectMock2)._subclass_instanceVariableNames_package_("ObjectMock3","","Kernel-Tests")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["subclass:instanceVariableNames:package:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($globals.ObjectMock3)._subclass_instanceVariableNames_package_("ObjectMock4","","Kernel-Tests")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["subclass:instanceVariableNames:package:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self.theClass=$recv($globals.ObjectMock)._subclass_instanceVariableNames_package_("ObjectMock2","","Kernel-Tests");
- [$self._assert_equals_([$recv($globals.ObjectMock)._subclasses()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["subclasses"]=1
- //>>excludeEnd("ctx");
- ][0],[$globals.ObjectMock2])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($globals.ObjectMock2)._subclasses()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["subclasses"]=2
- //>>excludeEnd("ctx");
- ][0],[$globals.ObjectMock3])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($globals.ObjectMock3)._subclasses(),[$globals.ObjectMock4]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testClassMigrationWithSubclasses",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilderTest);
- $core.addMethod(
- $core.method({
- selector: "testSubclass",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSubclass\x0a\x09theClass := builder addSubclassOf: ObjectMock named: 'ObjectMock2' slots: #(foo bar) package: 'Kernel-Tests'.\x0a\x09self assert: theClass superclass equals: ObjectMock.\x0a\x09self assert: theClass slots equals: #(foo bar).\x0a\x09self assert: theClass name equals: 'ObjectMock2'.\x0a\x09self assert: (theClass package classes occurrencesOf: theClass) equals: 1.\x0a\x09self assert: theClass package equals: ObjectMock package.\x0a\x09self assert: theClass methodDictionary keys size equals: 0",
- referencedClasses: ["ObjectMock"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addSubclassOf:named:slots:package:", "assert:equals:", "superclass", "slots", "name", "occurrencesOf:", "classes", "package", "size", "keys", "methodDictionary"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.theClass=$recv($self.builder)._addSubclassOf_named_slots_package_($globals.ObjectMock,"ObjectMock2",["foo", "bar"],"Kernel-Tests");
- [$self._assert_equals_($recv($self.theClass)._superclass(),$globals.ObjectMock)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv($self.theClass)._slots(),["foo", "bar"])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv($self.theClass)._name(),"ObjectMock2")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv($recv([$recv($self.theClass)._package()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["package"]=1
- //>>excludeEnd("ctx");
- ][0])._classes())._occurrencesOf_($self.theClass),(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($self.theClass)._package()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["package"]=2
- //>>excludeEnd("ctx");
- ][0],$recv($globals.ObjectMock)._package())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($recv($recv($self.theClass)._methodDictionary())._keys())._size(),(0));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSubclass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassBuilderTest);
- $core.addMethod(
- $core.method({
- selector: "theClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theClass\x0a\x09^ theClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.theClass;
- }; }),
- $globals.ClassBuilderTest);
- $core.addClass("ClassTest", $globals.TestCase, "Kernel-Tests");
- $core.setSlots($globals.ClassTest, ["builder", "theClass"]);
- $core.addMethod(
- $core.method({
- selector: "augmentMethodInstantiationOf:withAttachments:",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aMethod", "aHashedCollection"],
- source: "augmentMethodInstantiationOf: aMethod withAttachments: aHashedCollection\x0a\x09| plain |\x0a\x09plain := aMethod instantiateFn.\x0a\x09aMethod instantiateFn: [ :arg |\x0a\x09\x09(plain value: arg)\x0a\x09\x09\x09basicAt: 'a$atx' put: aHashedCollection;\x0a\x09\x09\x09yourself ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["instantiateFn", "instantiateFn:", "basicAt:put:", "value:", "yourself"]
- }, function ($methodClass){ return function (aMethod,aHashedCollection){
- var self=this,$self=this;
- var plain;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- plain=$recv(aMethod)._instantiateFn();
- $recv(aMethod)._instantiateFn_((function(arg){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $1=$recv(plain)._value_(arg);
- $recv($1)._basicAt_put_("a$atx",aHashedCollection);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({arg:arg},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"augmentMethodInstantiationOf:withAttachments:",{aMethod:aMethod,aHashedCollection:aHashedCollection,plain:plain})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "jsConstructor",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "jsConstructor\x0a\x09<inlineJS: '\x0a\x09\x09function Foo(){}\x0a\x09\x09Foo.prototype.valueOf = function () {return 4;};\x0a\x09\x09return Foo;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09function Foo(){}\x0a\x09\x09Foo.prototype.valueOf = function () {return 4;};\x0a\x09\x09return Foo;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- function Foo(){}
- Foo.prototype.valueOf = function () {return 4;};
- return Foo;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"jsConstructor",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "jsConstructorWithAction",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "jsConstructorWithAction\x0a\x09<inlineJS: '\x0a\x09\x09function Foo(aFoo){this.foo = aFoo;}\x0a\x09\x09return Foo;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09function Foo(aFoo){this.foo = aFoo;}\x0a\x09\x09return Foo;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- function Foo(aFoo){this.foo = aFoo;}
- return Foo;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"jsConstructorWithAction",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "setUp",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "setUp\x0a\x09builder := ClassBuilder new",
- referencedClasses: ["ClassBuilder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.builder=$recv($globals.ClassBuilder)._new();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setUp",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "testAllSubclasses",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAllSubclasses\x0a\x09| subclasses index |\x0a\x0a\x09subclasses := Object subclasses.\x0a\x09index := 1.\x0a\x09[ index > subclasses size ]\x0a\x09\x09whileFalse: [ subclasses addAll: (subclasses at: index) subclasses.\x0a\x09\x09\x09index := index + 1 ].\x0a\x0a\x09self assert: Object allSubclasses equals: subclasses",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclasses", "whileFalse:", ">", "size", "addAll:", "at:", "+", "assert:equals:", "allSubclasses"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var subclasses,index;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- subclasses=[$recv($globals.Object)._subclasses()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["subclasses"]=1
- //>>excludeEnd("ctx");
- ][0];
- index=(1);
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(index).__gt($recv(subclasses)._size());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._whileFalse_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv(subclasses)._addAll_($recv($recv(subclasses)._at_(index))._subclasses());
- index=$recv(index).__plus((1));
- return index;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $self._assert_equals_($recv($globals.Object)._allSubclasses(),subclasses);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAllSubclasses",{subclasses:subclasses,index:index})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "testAlternateConstructorViaSelector",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAlternateConstructorViaSelector\x0a\x09| instance block |\x0a\x09block := ObjectMock alternateConstructorViaSelector: #foo:.\x0a\x0a\x09instance := block newValue: 4.\x0a\x09self assert: instance class == ObjectMock.\x0a\x09self assert: instance foo equals: 4.\x0a\x09self shouldnt: [ instance foo: 9 ] raise: Error.\x0a\x09self assert: instance foo equals: 9",
- referencedClasses: ["ObjectMock", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["alternateConstructorViaSelector:", "newValue:", "assert:", "==", "class", "assert:equals:", "foo", "shouldnt:raise:", "foo:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var instance,block;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- block=$recv($globals.ObjectMock)._alternateConstructorViaSelector_("foo:");
- instance=$recv(block)._newValue_((4));
- $self._assert_($recv($recv(instance)._class()).__eq_eq($globals.ObjectMock));
- [$self._assert_equals_([$recv(instance)._foo()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["foo"]=1
- //>>excludeEnd("ctx");
- ][0],(4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._shouldnt_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(instance)._foo_((9));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- $self._assert_equals_($recv(instance)._foo(),(9));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAlternateConstructorViaSelector",{instance:instance,block:block})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "testApplySuperConstructor",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testApplySuperConstructor\x0a\x09| instance constructor |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09constructor := self jsConstructorWithAction.\x0a\x09theClass beJavaScriptSubclassOf: constructor.\x0a\x09Compiler new\x0a\x09\x09install: 'bar: anObject\x0a\x09\x09\x09ObjectMock2\x0a\x09\x09\x09\x09applySuperConstructorOn: self\x0a\x09\x09\x09\x09withArguments: {anObject}'\x0a\x09\x09forClass: theClass\x0a\x09\x09protocol: 'tests'.\x0a\x09\x22testing specific to late-coupled detached root class\x22\x0a\x09instance := (theClass alternateConstructorViaSelector: #bar:) newValue: 7.\x0a\x09self assert: instance class == theClass.\x0a\x09self assert: instance isJavaScriptInstanceOf: constructor.\x0a\x09self assert: instance foo equals: 7",
- referencedClasses: ["ObjectMock", "Compiler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyClass:named:", "jsConstructorWithAction", "beJavaScriptSubclassOf:", "install:forClass:protocol:", "new", "newValue:", "alternateConstructorViaSelector:", "assert:", "==", "class", "assert:isJavaScriptInstanceOf:", "assert:equals:", "foo"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var instance,constructor;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
- constructor=$self._jsConstructorWithAction();
- $recv($self.theClass)._beJavaScriptSubclassOf_(constructor);
- $recv($recv($globals.Compiler)._new())._install_forClass_protocol_("bar: anObject\x0a\x09\x09\x09ObjectMock2\x0a\x09\x09\x09\x09applySuperConstructorOn: self\x0a\x09\x09\x09\x09withArguments: {anObject}",$self.theClass,"tests");
- instance=$recv($recv($self.theClass)._alternateConstructorViaSelector_("bar:"))._newValue_((7));
- $self._assert_($recv($recv(instance)._class()).__eq_eq($self.theClass));
- $self._assert_isJavaScriptInstanceOf_(instance,constructor);
- $self._assert_equals_($recv(instance)._foo(),(7));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testApplySuperConstructor",{instance:instance,constructor:constructor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "testBeJavaScriptSubclassOf",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testBeJavaScriptSubclassOf\x0a\x09| instance constructor |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09constructor := self jsConstructor.\x0a\x09theClass beJavaScriptSubclassOf: constructor.\x0a\x09self assert: theClass name equals: 'ObjectMock2'.\x0a\x09self assert: theClass isClassCopyOf: ObjectMock.\x0a\x09\x22testing specific to late-coupled detached root class\x22\x0a\x09instance := theClass new.\x0a\x09self assert: instance class == theClass.\x0a\x09self assert: instance isJavaScriptInstanceOf: constructor.\x0a\x09self assert: instance value equals: 4.\x0a\x09self shouldnt: [ instance foo: 9 ] raise: Error.\x0a\x09self assert: instance foo equals: 9",
- referencedClasses: ["ObjectMock", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyClass:named:", "jsConstructor", "beJavaScriptSubclassOf:", "assert:equals:", "name", "assert:isClassCopyOf:", "new", "assert:", "==", "class", "assert:isJavaScriptInstanceOf:", "value", "shouldnt:raise:", "foo:", "foo"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var instance,constructor;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
- constructor=$self._jsConstructor();
- $recv($self.theClass)._beJavaScriptSubclassOf_(constructor);
- [$self._assert_equals_($recv($self.theClass)._name(),"ObjectMock2")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_isClassCopyOf_($self.theClass,$globals.ObjectMock);
- instance=$recv($self.theClass)._new();
- $self._assert_($recv($recv(instance)._class()).__eq_eq($self.theClass));
- $self._assert_isJavaScriptInstanceOf_(instance,constructor);
- [$self._assert_equals_($recv(instance)._value(),(4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._shouldnt_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(instance)._foo_((9));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- $self._assert_equals_($recv(instance)._foo(),(9));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testBeJavaScriptSubclassOf",{instance:instance,constructor:constructor})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "testMetaclassSubclasses",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testMetaclassSubclasses\x0a\x09| subclasses |\x0a\x0a\x09subclasses := (Object class instanceClass subclasses \x0a\x09\x09select: [ :each | each isMetaclass not ])\x0a\x09\x09collect: [ :each | each theMetaClass ].\x0a\x0a\x09self assert: Object class subclasses equals: subclasses",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "select:", "subclasses", "instanceClass", "class", "not", "isMetaclass", "theMetaClass", "assert:equals:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var subclasses;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- subclasses=$recv($recv([$recv($recv([$recv($globals.Object)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0])._instanceClass())._subclasses()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["subclasses"]=1
- //>>excludeEnd("ctx");
- ][0])._select_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv(each)._isMetaclass())._not();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._theMetaClass();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $self._assert_equals_($recv($recv($globals.Object)._class())._subclasses(),subclasses);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMetaclassSubclasses",{subclasses:subclasses})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "testMethodAttachmentsAreAdded",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testMethodAttachmentsAreAdded\x0a\x09| instance theMethod anObject |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09anObject := #{#foo -> 'oof'}.\x0a\x09theMethod := Compiler new\x0a\x09\x09compile: 'bar' forClass: ObjectMock2 protocol: '**test'.\x0a\x09self\x0a\x09\x09augmentMethodInstantiationOf: theMethod\x0a\x09\x09withAttachments: #{#a -> 42. #b -> anObject}.\x0a\x09ObjectMock2 addCompiledMethod: theMethod.\x0a\x09self assert: (ObjectMock2 new basicAt: #a) equals: 42.\x0a\x09self assert: (ObjectMock2 new basicAt: #b) equals: anObject",
- referencedClasses: ["ObjectMock", "Compiler", "ObjectMock2"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyClass:named:", "compile:forClass:protocol:", "new", "augmentMethodInstantiationOf:withAttachments:", "addCompiledMethod:", "assert:equals:", "basicAt:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var instance,theMethod,anObject;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
- anObject=$globals.HashedCollection._newFromPairs_(["foo","oof"]);
- theMethod=$recv([$recv($globals.Compiler)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])._compile_forClass_protocol_("bar",$globals.ObjectMock2,"**test");
- $self._augmentMethodInstantiationOf_withAttachments_(theMethod,$globals.HashedCollection._newFromPairs_(["a",(42),"b",anObject]));
- $recv($globals.ObjectMock2)._addCompiledMethod_(theMethod);
- [$self._assert_equals_([$recv([$recv($globals.ObjectMock2)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0])._basicAt_("a")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["basicAt:"]=1
- //>>excludeEnd("ctx");
- ][0],(42))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($recv($globals.ObjectMock2)._new())._basicAt_("b"),anObject);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMethodAttachmentsAreAdded",{instance:instance,theMethod:theMethod,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "testMethodAttachmentsAreRemoved",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testMethodAttachmentsAreRemoved\x0a\x09| instance theMethod anObject |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09anObject := #{#foo -> 'oof'}.\x0a\x09theMethod := Compiler new\x0a\x09\x09compile: 'bar' forClass: ObjectMock2 protocol: '**test'.\x0a\x09self\x0a\x09\x09augmentMethodInstantiationOf: theMethod\x0a\x09\x09withAttachments: #{#a -> 42. #b -> anObject}.\x0a\x09ObjectMock2 addCompiledMethod: theMethod.\x0a\x09theMethod := Compiler new\x0a\x09\x09compile: 'bar' forClass: ObjectMock2 protocol: '**test'.\x0a\x09ObjectMock2 addCompiledMethod: theMethod.\x0a\x09self assert: (ObjectMock2 new basicAt: #a) equals: nil.\x0a\x09self assert: (ObjectMock2 new basicAt: #b) equals: nil",
- referencedClasses: ["ObjectMock", "Compiler", "ObjectMock2"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyClass:named:", "compile:forClass:protocol:", "new", "augmentMethodInstantiationOf:withAttachments:", "addCompiledMethod:", "assert:equals:", "basicAt:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var instance,theMethod,anObject;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
- anObject=$globals.HashedCollection._newFromPairs_(["foo","oof"]);
- theMethod=[$recv([$recv($globals.Compiler)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])._compile_forClass_protocol_("bar",$globals.ObjectMock2,"**test")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["compile:forClass:protocol:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._augmentMethodInstantiationOf_withAttachments_(theMethod,$globals.HashedCollection._newFromPairs_(["a",(42),"b",anObject]));
- [$recv($globals.ObjectMock2)._addCompiledMethod_(theMethod)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["addCompiledMethod:"]=1
- //>>excludeEnd("ctx");
- ][0];
- theMethod=$recv([$recv($globals.Compiler)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0])._compile_forClass_protocol_("bar",$globals.ObjectMock2,"**test");
- $recv($globals.ObjectMock2)._addCompiledMethod_(theMethod);
- [$self._assert_equals_([$recv([$recv($globals.ObjectMock2)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0])._basicAt_("a")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["basicAt:"]=1
- //>>excludeEnd("ctx");
- ][0],nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($recv($globals.ObjectMock2)._new())._basicAt_("b"),nil);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMethodAttachmentsAreRemoved",{instance:instance,theMethod:theMethod,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "testMethodAttachmentsAreRemoved2",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testMethodAttachmentsAreRemoved2\x0a\x09| instance theMethod anObject |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09anObject := #{#foo -> 'oof'}.\x0a\x09theMethod := Compiler new\x0a\x09\x09compile: 'bar' forClass: ObjectMock2 protocol: '**test'.\x0a\x09self\x0a\x09\x09augmentMethodInstantiationOf: theMethod\x0a\x09\x09withAttachments: #{#a -> 42. #b -> anObject}.\x0a\x09ObjectMock2 addCompiledMethod: theMethod.\x0a\x09ObjectMock2 new bar.\x0a\x09ObjectMock2 removeCompiledMethod: theMethod.\x0a\x09self assert: (ObjectMock2 new basicAt: #a) equals: nil.\x0a\x09self assert: (ObjectMock2 new basicAt: #b) equals: nil",
- referencedClasses: ["ObjectMock", "Compiler", "ObjectMock2"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyClass:named:", "compile:forClass:protocol:", "new", "augmentMethodInstantiationOf:withAttachments:", "addCompiledMethod:", "bar", "removeCompiledMethod:", "assert:equals:", "basicAt:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var instance,theMethod,anObject;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
- anObject=$globals.HashedCollection._newFromPairs_(["foo","oof"]);
- theMethod=$recv([$recv($globals.Compiler)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])._compile_forClass_protocol_("bar",$globals.ObjectMock2,"**test");
- $self._augmentMethodInstantiationOf_withAttachments_(theMethod,$globals.HashedCollection._newFromPairs_(["a",(42),"b",anObject]));
- $recv($globals.ObjectMock2)._addCompiledMethod_(theMethod);
- $recv([$recv($globals.ObjectMock2)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0])._bar();
- $recv($globals.ObjectMock2)._removeCompiledMethod_(theMethod);
- [$self._assert_equals_([$recv([$recv($globals.ObjectMock2)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0])._basicAt_("a")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["basicAt:"]=1
- //>>excludeEnd("ctx");
- ][0],nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($recv($globals.ObjectMock2)._new())._basicAt_("b"),nil);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMethodAttachmentsAreRemoved2",{instance:instance,theMethod:theMethod,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "testMethodAttachmentsAreReplaced",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testMethodAttachmentsAreReplaced\x0a\x09| instance theMethod anObject |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09anObject := #{#foo -> 'oof'}.\x0a\x09theMethod := Compiler new\x0a\x09\x09compile: 'bar' forClass: ObjectMock2 protocol: '**test'.\x0a\x09self\x0a\x09\x09augmentMethodInstantiationOf: theMethod\x0a\x09\x09withAttachments: #{#a -> 42. #b -> anObject}.\x0a\x09ObjectMock2 addCompiledMethod: theMethod.\x0a\x09theMethod := Compiler new\x0a\x09\x09compile: 'bar' forClass: ObjectMock2 protocol: '**test'.\x0a\x09self\x0a\x09\x09augmentMethodInstantiationOf: theMethod\x0a\x09\x09withAttachments: #{#a -> 6. #c -> [^9]}.\x0a\x09ObjectMock2 addCompiledMethod: theMethod.\x0a\x09self assert: (ObjectMock2 new basicAt: #a) equals: 6.\x0a\x09self assert: (ObjectMock2 new basicAt: #b) equals: nil.\x0a\x09self assert: (ObjectMock2 new basicPerform: #c) equals: 9",
- referencedClasses: ["ObjectMock", "Compiler", "ObjectMock2"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyClass:named:", "compile:forClass:protocol:", "new", "augmentMethodInstantiationOf:withAttachments:", "addCompiledMethod:", "assert:equals:", "basicAt:", "basicPerform:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var instance,theMethod,anObject;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
- anObject=$globals.HashedCollection._newFromPairs_(["foo","oof"]);
- theMethod=[$recv([$recv($globals.Compiler)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])._compile_forClass_protocol_("bar",$globals.ObjectMock2,"**test")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["compile:forClass:protocol:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._augmentMethodInstantiationOf_withAttachments_(theMethod,$globals.HashedCollection._newFromPairs_(["a",(42),"b",anObject]))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["augmentMethodInstantiationOf:withAttachments:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($globals.ObjectMock2)._addCompiledMethod_(theMethod)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["addCompiledMethod:"]=1
- //>>excludeEnd("ctx");
- ][0];
- theMethod=$recv([$recv($globals.Compiler)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0])._compile_forClass_protocol_("bar",$globals.ObjectMock2,"**test");
- $self._augmentMethodInstantiationOf_withAttachments_(theMethod,$globals.HashedCollection._newFromPairs_(["a",(6),"c",(function(){
- throw $early=[(9)];
- })]));
- $recv($globals.ObjectMock2)._addCompiledMethod_(theMethod);
- [$self._assert_equals_([$recv([$recv($globals.ObjectMock2)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0])._basicAt_("a")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["basicAt:"]=1
- //>>excludeEnd("ctx");
- ][0],(6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv([$recv($globals.ObjectMock2)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=4
- //>>excludeEnd("ctx");
- ][0])._basicAt_("b"),nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($recv($globals.ObjectMock2)._new())._basicPerform_("c"),(9));
- return self;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMethodAttachmentsAreReplaced",{instance:instance,theMethod:theMethod,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "testRespondsTo",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRespondsTo\x0a\x09self assert: (Object new respondsTo: #class).\x0a\x09self deny: (Object new respondsTo: #foo).\x0a\x09self assert: (Object respondsTo: #new)",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "respondsTo:", "new", "deny:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_([$recv([$recv($globals.Object)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])._respondsTo_("class")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["respondsTo:"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_([$recv($recv($globals.Object)._new())._respondsTo_("foo")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["respondsTo:"]=2
- //>>excludeEnd("ctx");
- ][0]);
- $self._assert_($recv($globals.Object)._respondsTo_("new"));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRespondsTo",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "testSetJavaScriptConstructor",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSetJavaScriptConstructor\x0a\x09| instance |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09theClass javaScriptConstructor: self jsConstructor.\x0a\x09self assert: theClass name equals: 'ObjectMock2'.\x0a\x09self assert: theClass isClassCopyOf: ObjectMock.\x0a\x09\x22testing specific to late-coupled detached root class\x22\x0a\x09instance := theClass new.\x0a\x09self assert: instance class == theClass.\x0a\x09self assert: instance value equals: 4.\x0a\x09self shouldnt: [ instance foo: 9 ] raise: Error.\x0a\x09self assert: instance foo equals: 9",
- referencedClasses: ["ObjectMock", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyClass:named:", "javaScriptConstructor:", "jsConstructor", "assert:equals:", "name", "assert:isClassCopyOf:", "new", "assert:", "==", "class", "value", "shouldnt:raise:", "foo:", "foo"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var instance;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
- $recv($self.theClass)._javaScriptConstructor_($self._jsConstructor());
- [$self._assert_equals_($recv($self.theClass)._name(),"ObjectMock2")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_isClassCopyOf_($self.theClass,$globals.ObjectMock);
- instance=$recv($self.theClass)._new();
- $self._assert_($recv($recv(instance)._class()).__eq_eq($self.theClass));
- [$self._assert_equals_($recv(instance)._value(),(4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._shouldnt_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(instance)._foo_((9));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- $self._assert_equals_($recv(instance)._foo(),(9));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSetJavaScriptConstructor",{instance:instance})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "testTrickySetJavaScriptConstructor",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testTrickySetJavaScriptConstructor\x0a\x09| instance |\x0a\x09theClass := builder copyClass: ObjectMock named: 'ObjectMock2'.\x0a\x09theClass javaScriptConstructor: self trickyJsConstructor.\x0a\x09self assert: theClass name equals: 'ObjectMock2'.\x0a\x09self assert: theClass isClassCopyOf: ObjectMock.\x0a\x09\x22testing specific to late-coupled detached root class\x22\x0a\x09instance := theClass new.\x0a\x09self assert: instance class == theClass.\x0a\x09self assert: instance value equals: 4.\x0a\x09self shouldnt: [ instance foo: 9 ] raise: Error.\x0a\x09self assert: instance foo equals: 9",
- referencedClasses: ["ObjectMock", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["copyClass:named:", "javaScriptConstructor:", "trickyJsConstructor", "assert:equals:", "name", "assert:isClassCopyOf:", "new", "assert:", "==", "class", "value", "shouldnt:raise:", "foo:", "foo"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var instance;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.theClass=$recv($self.builder)._copyClass_named_($globals.ObjectMock,"ObjectMock2");
- $recv($self.theClass)._javaScriptConstructor_($self._trickyJsConstructor());
- [$self._assert_equals_($recv($self.theClass)._name(),"ObjectMock2")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_isClassCopyOf_($self.theClass,$globals.ObjectMock);
- instance=$recv($self.theClass)._new();
- $self._assert_($recv($recv(instance)._class()).__eq_eq($self.theClass));
- [$self._assert_equals_($recv(instance)._value(),(4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._shouldnt_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(instance)._foo_((9));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- $self._assert_equals_($recv(instance)._foo(),(9));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testTrickySetJavaScriptConstructor",{instance:instance})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "theClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theClass\x0a\x09^ theClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.theClass;
- }; }),
- $globals.ClassTest);
- $core.addMethod(
- $core.method({
- selector: "trickyJsConstructor",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "trickyJsConstructor\x0a\x09<inlineJS: '\x0a\x09\x09function Foo(){}\x0a\x09\x09Foo.prototype.valueOf = function () {return 4;};\x0a\x09\x09Foo.prototype._foo = function () {return \x22bar\x22;};\x0a\x09\x09return Foo;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09function Foo(){}\x0a\x09\x09Foo.prototype.valueOf = function () {return 4;};\x0a\x09\x09Foo.prototype._foo = function () {return \x22bar\x22;};\x0a\x09\x09return Foo;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- function Foo(){}
- Foo.prototype.valueOf = function () {return 4;};
- Foo.prototype._foo = function () {return "bar";};
- return Foo;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"trickyJsConstructor",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ClassTest);
- $core.addClass("CollectionTest", $globals.TestCase, "Kernel-Tests");
- $core.setSlots($globals.CollectionTest, ["sampleBlock"]);
- $core.addMethod(
- $core.method({
- selector: "assertSameContents:as:",
- protocol: "convenience",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection", "anotherCollection"],
- 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)) ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "=", "size", "do:", "occurrencesOf:"]
- }, function ($methodClass){ return function (aCollection,anotherCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_([$recv([$recv(aCollection)._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv(anotherCollection)._size())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aCollection)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._assert_($recv([$recv(aCollection)._occurrencesOf_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["occurrencesOf:"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv(anotherCollection)._occurrencesOf_(each)));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"assertSameContents:as:",{aCollection:aCollection,anotherCollection:anotherCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collection",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collection\x0a\x09\x22Answers pre-filled collection of type tested.\x22\x0a\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collection",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionClass",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionClass\x0a\x09\x22Answers class of collection type tested\x22\x0a\x0a\x09^ self class collectionClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collectionClass", "class"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._class())._collectionClass();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionClass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionOfPrintStrings",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionOfPrintStrings\x0a\x09\x22Answers self collection but with values\x0a\x09changed to their printStrings\x22\x0a\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionOfPrintStrings",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionSize",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionSize\x0a\x09\x22Answers size of self collection.\x22\x0a\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionSize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionWithDuplicates",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionWithDuplicates\x0a\x09\x22Answers pre-filled collection of type tested,\x0a\x09with exactly six distinct elements,\x0a\x09some of them appearing multiple times, if possible.\x22\x0a\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionWithDuplicates",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionWithNewValue",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionWithNewValue",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x0a\x09sampleBlock := []",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.sampleBlock=(function(){
- });
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "sampleNewValue",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "N";
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "sampleNewValueAsCollection",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["with:", "collectionClass", "sampleNewValue"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._collectionClass())._with_($self._sampleNewValue());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sampleNewValueAsCollection",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testAddAll",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "addAll:", "collection", "new", "collectionClass", "yourself", "sampleNewValueAsCollection", "collectionWithNewValue", "assertSameContents:as:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3,$4,$5;
- $1=[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._addAll_([$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=1
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["addAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($1)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0],[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $2=[$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=2
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._addAll_([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["addAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($2)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=2
- //>>excludeEnd("ctx");
- ][0],[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $3=[$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=3
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv($3)._addAll_([$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=4
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["addAll:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($3)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=3
- //>>excludeEnd("ctx");
- ][0],$recv($self._collectionClass())._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $4=[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=5
- //>>excludeEnd("ctx");
- ][0];
- [$recv($4)._addAll_([$self._sampleNewValueAsCollection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sampleNewValueAsCollection"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["addAll:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_([$recv($4)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=4
- //>>excludeEnd("ctx");
- ][0],[$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=1
- //>>excludeEnd("ctx");
- ][0]);
- $5=$self._sampleNewValueAsCollection();
- $recv($5)._addAll_($self._collection());
- $self._assertSameContents_as_($recv($5)._yourself(),$self._collectionWithNewValue());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAddAll",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testAllSatisfy",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ])",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collection", "anyOne", "assert:", "allSatisfy:", "includes:", "deny:", "~="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var collection,anyOne;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- collection=$self._collection();
- anyOne=$recv(collection)._anyOne();
- $self._assert_([$recv(collection)._allSatisfy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(collection)._includes_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["allSatisfy:"]=1
- //>>excludeEnd("ctx");
- ][0]);
- $self._deny_($recv(collection)._allSatisfy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each).__tild_eq(anyOne);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- })));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAllSatisfy",{collection:collection,anyOne:anyOne})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testAnyOne",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAnyOne\x0a\x09self should: [ self collectionClass new anyOne ] raise: Error.\x0a\x09self assert: (self collection includes: self collection anyOne)",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "anyOne", "new", "collectionClass", "assert:", "includes:", "collection"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv($recv($self._collectionClass())._new())._anyOne()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["anyOne"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- $self._assert_($recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._includes_($recv($self._collection())._anyOne()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAnyOne",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testAnySatisfy",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ])",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["anyOne", "collection", "assert:", "anySatisfy:", "=", "deny:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var anyOne;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- anyOne=$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._anyOne();
- $self._assert_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])._anySatisfy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(each).__eq(anyOne)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["anySatisfy:"]=1
- //>>excludeEnd("ctx");
- ][0]);
- $self._deny_($recv($self._collection())._anySatisfy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each).__eq($recv($globals.Object)._new());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- })));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAnySatisfy",{anyOne:anyOne})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testAsArray",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAsArray\x0a\x09self\x0a\x09\x09assertSameContents: self collection\x0a\x09\x09as: self collection asArray",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assertSameContents:as:", "collection", "asArray"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assertSameContents_as_([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0],$recv($self._collection())._asArray());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAsArray",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testAsOrderedCollection",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAsOrderedCollection\x0a\x09self\x0a\x09\x09assertSameContents: self collection\x0a\x09\x09as: self collection asOrderedCollection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assertSameContents:as:", "collection", "asOrderedCollection"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assertSameContents_as_([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0],$recv($self._collection())._asOrderedCollection());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAsOrderedCollection",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testAsSet",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAsSet\x0a\x09| c set |\x0a\x09c := self collectionWithDuplicates.\x0a\x09set := c asSet.\x0a\x09self assert: set size equals: 6.\x0a\x09c do: [ :each |\x0a\x09\x09self assert: (set includes: each) ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collectionWithDuplicates", "asSet", "assert:equals:", "size", "do:", "assert:", "includes:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var c,set;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- c=$self._collectionWithDuplicates();
- set=$recv(c)._asSet();
- $self._assert_equals_($recv(set)._size(),(6));
- $recv(c)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._assert_($recv(set)._includes_(each));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAsSet",{c:c,set:set})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testCollect",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "collect:", "collection", "collectionWithNewValue", "new", "collectionClass", "printString", "detect:", "sampleNewValue", "collectionOfPrintStrings"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._collect_((function(each){
- return each;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collect:"]=1
- //>>excludeEnd("ctx");
- ][0],[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=1
- //>>excludeEnd("ctx");
- ][0])._collect_((function(each){
- return each;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collect:"]=2
- //>>excludeEnd("ctx");
- ][0],$self._collectionWithNewValue())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=1
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(each)._printString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["printString"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collect:"]=3
- //>>excludeEnd("ctx");
- ][0],$recv($self._collectionClass())._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])._collect_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["sampleNewValue"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collect:"]=4
- //>>excludeEnd("ctx");
- ][0])._detect_((function(){
- return true;
- })),$self._sampleNewValue())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($self._collection())._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._printString();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,6)});
- //>>excludeEnd("ctx");
- })),$self._collectionOfPrintStrings());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCollect",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testComma",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", ",", "collection", "new", "collectionClass", "sampleNewValueAsCollection", "collectionWithNewValue"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0]).__comma([$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=1
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0],[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=2
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0]).__comma([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0],[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=3
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0]).__comma([$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=4
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0],$recv($self._collectionClass())._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($self._collection()).__comma($self._sampleNewValueAsCollection()),$self._collectionWithNewValue());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testComma",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testCopy",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCopy\x0a\x09self assert: self collectionClass new copy equals: self collectionClass new.\x0a\x09self assert: self collection copy equals: self collection.\x0a\x09self assert: self collectionWithNewValue copy equals: self collectionWithNewValue.\x0a\x09\x0a\x09self deny: self collectionClass new copy = self collection.\x0a\x09self deny: self collection copy = self collectionClass new.\x0a\x09self deny: self collection copy = self collectionWithNewValue",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "copy", "new", "collectionClass", "collection", "collectionWithNewValue", "deny:", "="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=1
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])._copy()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["copy"]=1
- //>>excludeEnd("ctx");
- ][0],[$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=2
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._copy()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["copy"]=2
- //>>excludeEnd("ctx");
- ][0],[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_([$recv([$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=1
- //>>excludeEnd("ctx");
- ][0])._copy()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["copy"]=3
- //>>excludeEnd("ctx");
- ][0],[$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=2
- //>>excludeEnd("ctx");
- ][0]);
- [$self._deny_([$recv([$recv([$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=3
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0])._copy()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["copy"]=4
- //>>excludeEnd("ctx");
- ][0]).__eq([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([$recv([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0])._copy()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["copy"]=5
- //>>excludeEnd("ctx");
- ][0]).__eq($recv($self._collectionClass())._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_($recv($recv($self._collection())._copy()).__eq($self._collectionWithNewValue()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCopy",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testCopyEmpty",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCopyEmpty\x0a\x09self assert: self collectionClass new copyEmpty equals: self collectionClass new.\x0a\x09self assert: self collection copyEmpty equals: self collectionClass new.\x0a\x09self assert: self collectionWithNewValue copyEmpty equals: self collectionClass new",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "copyEmpty", "new", "collectionClass", "collection", "collectionWithNewValue"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=1
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])._copyEmpty()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["copyEmpty"]=1
- //>>excludeEnd("ctx");
- ][0],[$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=2
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($self._collection())._copyEmpty()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["copyEmpty"]=2
- //>>excludeEnd("ctx");
- ][0],[$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=3
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($self._collectionWithNewValue())._copyEmpty(),$recv($self._collectionClass())._new());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCopyEmpty",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testCopySeparates",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCopySeparates\x0a\x09| original copy |\x0a\x09original := self collection.\x0a\x09copy := original copy.\x0a\x09copy addAll: self sampleNewValueAsCollection.\x0a\x09self assert: original = self collection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collection", "copy", "addAll:", "sampleNewValueAsCollection", "assert:", "="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var original,copy;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- original=[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0];
- copy=$recv(original)._copy();
- $recv(copy)._addAll_($self._sampleNewValueAsCollection());
- $self._assert_($recv(original).__eq($self._collection()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCopySeparates",{original:original,copy:copy})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testDetect",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["shouldnt:raise:", "detect:", "collection", "should:raise:", "assert:equals:", "sampleNewValueAsCollection", "sampleNewValue", "collectionWithNewValue", "="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._shouldnt_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._detect_((function(){
- return true;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["detect:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])._detect_((function(){
- return false;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["detect:"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }),$globals.Error)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($self._sampleNewValueAsCollection())._detect_((function(){
- return true;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["detect:"]=3
- //>>excludeEnd("ctx");
- ][0],[$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sampleNewValue"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_([$recv($self._collectionWithNewValue())._detect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(each).__eq([$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["sampleNewValue"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,6)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["detect:"]=4
- //>>excludeEnd("ctx");
- ][0],[$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sampleNewValue"]=3
- //>>excludeEnd("ctx");
- ][0]);
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._collection())._detect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(each).__eq($self._sampleNewValue());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,8)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDetect",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testDetectIfNone",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "assert:", "~=", "detect:ifNone:", "collection", "assert:equals:", "sampleNewValueAsCollection", "sampleNewValue", "collectionWithNewValue", "="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var sentinel;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- sentinel=$recv($globals.Object)._new();
- $self._assert_($recv([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._detect_ifNone_((function(){
- return true;
- }),(function(){
- return sentinel;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["detect:ifNone:"]=1
- //>>excludeEnd("ctx");
- ][0]).__tild_eq(sentinel));
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])._detect_ifNone_((function(){
- return false;
- }),(function(){
- return sentinel;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["detect:ifNone:"]=2
- //>>excludeEnd("ctx");
- ][0],sentinel)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($self._sampleNewValueAsCollection())._detect_ifNone_((function(){
- return true;
- }),(function(){
- return sentinel;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["detect:ifNone:"]=3
- //>>excludeEnd("ctx");
- ][0],[$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sampleNewValue"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($self._collectionWithNewValue())._detect_ifNone_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(each).__eq([$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["sampleNewValue"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,7)});
- //>>excludeEnd("ctx");
- }),(function(){
- return sentinel;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["detect:ifNone:"]=4
- //>>excludeEnd("ctx");
- ][0],[$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sampleNewValue"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($self._collection())._detect_ifNone_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each).__eq($self._sampleNewValue());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,9)});
- //>>excludeEnd("ctx");
- }),(function(){
- return sentinel;
- })),sentinel);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDetectIfNone",{sentinel:sentinel})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testDo",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["OrderedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "do:", "collection", "add:", "assertSameContents:as:", "collectionWithDuplicates"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var newCollection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- newCollection=[$recv($globals.OrderedCollection)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(newCollection)._add_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assertSameContents_as_($self._collection(),newCollection)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assertSameContents:as:"]=1
- //>>excludeEnd("ctx");
- ][0];
- newCollection=$recv($globals.OrderedCollection)._new();
- $recv([$self._collectionWithDuplicates()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithDuplicates"]=1
- //>>excludeEnd("ctx");
- ][0])._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(newCollection)._add_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $self._assertSameContents_as_($self._collectionWithDuplicates(),newCollection);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDo",{newCollection:newCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testEquality",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testEquality\x0a\x09self assert: self collectionClass new equals: self collectionClass new.\x0a\x09self assert: self collection equals: self collection.\x0a\x09self assert: self collectionWithNewValue equals: self collectionWithNewValue.\x0a\x09\x0a\x09self deny: self collectionClass new = self collection.\x0a\x09self deny: self collection = self collectionClass new.\x0a\x09self deny: self collection = self collectionWithNewValue",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "new", "collectionClass", "collection", "collectionWithNewValue", "deny:", "="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=1
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0],[$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=2
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0],[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_([$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=1
- //>>excludeEnd("ctx");
- ][0],[$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=2
- //>>excludeEnd("ctx");
- ][0]);
- [$self._deny_([$recv([$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=3
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0]).__eq([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0]).__eq($recv($self._collectionClass())._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_($recv($self._collection()).__eq($self._collectionWithNewValue()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testEquality",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testIfEmptyFamily",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "ifEmpty:", "new", "collectionClass", "collection", "ifNotEmpty:", "ifEmpty:ifNotEmpty:", "ifNotEmpty:ifEmpty:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=1
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])._ifEmpty_((function(){
- return (42);
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["ifEmpty:"]=1
- //>>excludeEnd("ctx");
- ][0],(42))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._ifEmpty_((function(){
- return (42);
- })),[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=2
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0])._ifNotEmpty_((function(){
- return (42);
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["ifNotEmpty:"]=1
- //>>excludeEnd("ctx");
- ][0],[$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=3
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])._ifNotEmpty_((function(){
- return (42);
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["ifNotEmpty:"]=2
- //>>excludeEnd("ctx");
- ][0],(42))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0])._ifNotEmpty_((function(col){
- return col;
- })),[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=5
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=5
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=4
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=4
- //>>excludeEnd("ctx");
- ][0])._ifEmpty_ifNotEmpty_((function(){
- return (42);
- }),(function(){
- return (999);
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["ifEmpty:ifNotEmpty:"]=1
- //>>excludeEnd("ctx");
- ][0],(42))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=6
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=6
- //>>excludeEnd("ctx");
- ][0])._ifEmpty_ifNotEmpty_((function(){
- return (42);
- }),(function(){
- return (999);
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["ifEmpty:ifNotEmpty:"]=2
- //>>excludeEnd("ctx");
- ][0],(999))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=7
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=7
- //>>excludeEnd("ctx");
- ][0])._ifEmpty_ifNotEmpty_((function(){
- return (42);
- }),(function(col){
- return col;
- })),[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=8
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=8
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($recv($self._collectionClass())._new())._ifNotEmpty_ifEmpty_((function(){
- return (42);
- }),(function(){
- return (999);
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["ifNotEmpty:ifEmpty:"]=1
- //>>excludeEnd("ctx");
- ][0],(999))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=9
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=9
- //>>excludeEnd("ctx");
- ][0])._ifNotEmpty_ifEmpty_((function(){
- return (42);
- }),(function(){
- return (999);
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["ifNotEmpty:ifEmpty:"]=2
- //>>excludeEnd("ctx");
- ][0],(42))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=10
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=10
- //>>excludeEnd("ctx");
- ][0])._ifNotEmpty_ifEmpty_((function(col){
- return col;
- }),(function(){
- return (999);
- })),$self._collection());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIfEmptyFamily",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testIsEmpty",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testIsEmpty\x0a\x09self assert: self collectionClass new isEmpty.\x0a\x09self deny: self collection isEmpty",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "isEmpty", "new", "collectionClass", "deny:", "collection"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_([$recv($recv($self._collectionClass())._new())._isEmpty()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["isEmpty"]=1
- //>>excludeEnd("ctx");
- ][0]);
- $self._deny_($recv($self._collection())._isEmpty());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIsEmpty",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testNoneSatisfy",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ])",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["anyOne", "collection", "deny:", "noneSatisfy:", "=", "assert:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var anyOne;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- anyOne=$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._anyOne();
- $self._deny_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])._noneSatisfy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(each).__eq(anyOne)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["noneSatisfy:"]=1
- //>>excludeEnd("ctx");
- ][0]);
- $self._assert_($recv($self._collection())._noneSatisfy_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each).__eq($recv($globals.Object)._new());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- })));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNoneSatisfy",{anyOne:anyOne})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testRegression1224",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRegression1224\x0a\x09self assert: (self collectionClass new\x0a\x09\x09remove: self sampleNewValue ifAbsent: [];\x0a\x09\x09yourself) size equals: 0",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "size", "remove:ifAbsent:", "new", "collectionClass", "sampleNewValue", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($self._collectionClass())._new();
- $recv($1)._remove_ifAbsent_($self._sampleNewValue(),(function(){
- }));
- $self._assert_equals_($recv($recv($1)._yourself())._size(),(0));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRegression1224",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testRemoveAll",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRemoveAll\x0a\x09self assert: (self collection removeAll; yourself) equals: self collectionClass new",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "removeAll", "collection", "yourself", "new", "collectionClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._collection();
- $recv($1)._removeAll();
- $self._assert_equals_($recv($1)._yourself(),$recv($self._collectionClass())._new());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRemoveAll",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testSelect",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "select:", "collection", "new", "collectionClass", "collectionWithNewValue", "=", "sampleNewValue", "sampleNewValueAsCollection", "~="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._select_((function(){
- return false;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["select:"]=1
- //>>excludeEnd("ctx");
- ][0],[$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=1
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])._select_((function(){
- return true;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["select:"]=2
- //>>excludeEnd("ctx");
- ][0],[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=1
- //>>excludeEnd("ctx");
- ][0])._select_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(each).__eq([$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["sampleNewValue"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["select:"]=3
- //>>excludeEnd("ctx");
- ][0],$self._sampleNewValueAsCollection())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=2
- //>>excludeEnd("ctx");
- ][0])._select_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(each).__tild_eq([$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["sampleNewValue"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["~="]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["select:"]=4
- //>>excludeEnd("ctx");
- ][0],[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=5
- //>>excludeEnd("ctx");
- ][0])._select_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each).__eq([$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["sampleNewValue"]=3
- //>>excludeEnd("ctx");
- ][0]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,5)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["select:"]=5
- //>>excludeEnd("ctx");
- ][0],$recv($self._collectionClass())._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($self._collectionWithNewValue())._select_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each).__tild_eq($self._sampleNewValue());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,6)});
- //>>excludeEnd("ctx");
- })),$self._collection());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSelect",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testSelectThenCollect",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSelectThenCollect\x0a\x09self assert: (self collection select: [ false ] thenCollect: #isString) equals: self collectionClass new.\x0a\x09self assert: (self collection select: [ true ] thenCollect: [:x|x]) equals: self collection.\x0a\x09self assert: (self collection select: [ :each | each = self sampleNewValue ] thenCollect: [:x|x]) equals: self collectionClass new.\x0a\x09self assert: (self collectionWithNewValue select: [ :each | each ~= self sampleNewValue ] thenCollect: #printString) equals: self collectionOfPrintStrings",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "select:thenCollect:", "collection", "new", "collectionClass", "=", "sampleNewValue", "collectionWithNewValue", "~=", "collectionOfPrintStrings"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._select_thenCollect_((function(){
- return false;
- }),"isString")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["select:thenCollect:"]=1
- //>>excludeEnd("ctx");
- ][0],[$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=1
- //>>excludeEnd("ctx");
- ][0])._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])._select_thenCollect_((function(){
- return true;
- }),(function(x){
- return x;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["select:thenCollect:"]=2
- //>>excludeEnd("ctx");
- ][0],[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($self._collection())._select_thenCollect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each).__eq([$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["sampleNewValue"]=1
- //>>excludeEnd("ctx");
- ][0]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
- //>>excludeEnd("ctx");
- }),(function(x){
- return x;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["select:thenCollect:"]=3
- //>>excludeEnd("ctx");
- ][0],$recv($self._collectionClass())._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($self._collectionWithNewValue())._select_thenCollect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each).__tild_eq($self._sampleNewValue());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,6)});
- //>>excludeEnd("ctx");
- }),"printString"),$self._collectionOfPrintStrings());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSelectThenCollect",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testSingle",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSingle\x0a\x09self should: [ self collectionClass new single ] raise: Error.\x0a\x09self should: [ self collection single ] raise: Error.\x0a\x09self assert: self sampleNewValueAsCollection single equals: self sampleNewValue",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "single", "new", "collectionClass", "collection", "assert:equals:", "sampleNewValueAsCollection", "sampleNewValue"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv($recv($self._collectionClass())._new())._single()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["single"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv($self._collection())._single()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["single"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- $self._assert_equals_($recv($self._sampleNewValueAsCollection())._single(),$self._sampleNewValue());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSingle",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testSize",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "size", "new", "collectionClass", "sampleNewValueAsCollection", "collection", "collectionSize"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv($recv($self._collectionClass())._new())._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=1
- //>>excludeEnd("ctx");
- ][0],(0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($self._sampleNewValueAsCollection())._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=2
- //>>excludeEnd("ctx");
- ][0],(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($self._collection())._size(),$self._collectionSize());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionClass",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionClass\x0a\x09\x22Answers class of collection type tested,\x0a\x09or nil if test is abstract\x22\x0a\x0a\x09^ nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return nil;
- }; }),
- $globals.CollectionTest.a$cls);
- $core.addMethod(
- $core.method({
- selector: "isAbstract",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isAbstract\x0a\x09^ self collectionClass isNil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["isNil", "collectionClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._collectionClass())._isNil();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isAbstract",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.CollectionTest.a$cls);
- $core.addClass("AssociativeCollectionTest", $globals.CollectionTest, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "collectionKeys",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionKeys\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionKeys",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionValues",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionValues\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionValues",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "nonIndexesDo:",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "nonIndexesDo: aBlock\x0a\x09aBlock value: 5.\x0a\x09aBlock value: [].\x0a\x09aBlock value: Object new.\x0a\x09aBlock value: 'z'",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:", "new"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv(aBlock)._value_((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aBlock)._value_((function(){
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aBlock)._value_($recv($globals.Object)._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv(aBlock)._value_("z");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nonIndexesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "sampleNewIndex",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sampleNewIndex\x0a\x09^ 'new'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "new";
- }; }),
- $globals.AssociativeCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "samplesDo:",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "samplesDo: aBlock\x0a\x09aBlock value: 'a' value: 2",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:value:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aBlock)._value_value_("a",(2));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testAddAll",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["testAddAll", "assert:equals:", "addAll:", "collection", "yourself", "collectionWithNewValue"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3;
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._testAddAll.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $1=[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._addAll_([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["addAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($1)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0],[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $2=[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._addAll_([$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["addAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($2)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=2
- //>>excludeEnd("ctx");
- ][0],[$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $3=[$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv($3)._addAll_($self._collection());
- $self._assert_equals_($recv($3)._yourself(),$self._collectionWithNewValue());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAddAll",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testAsDictionary",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAsDictionary\x0aself assert: ( self collectionClass new asDictionary isMemberOf: Dictionary ).",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "isMemberOf:", "asDictionary", "new", "collectionClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv($recv($recv($self._collectionClass())._new())._asDictionary())._isMemberOf_($globals.Dictionary));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAsDictionary",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testAsHashedCollection",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAsHashedCollection\x0aself assert: ( self collectionClass new asHashedCollection isMemberOf: HashedCollection ).",
- referencedClasses: ["HashedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "isMemberOf:", "asHashedCollection", "new", "collectionClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv($recv($recv($self._collectionClass())._new())._asHashedCollection())._isMemberOf_($globals.HashedCollection));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAsHashedCollection",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testFrom",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 }.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["->", "assertSameContents:as:", "from:", "collectionClass", "class"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var associations;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- associations=[["a".__minus_gt((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["->"]=1
- //>>excludeEnd("ctx");
- ][0],"b".__minus_gt((2))];
- $self._assertSameContents_as_($recv($recv($self._class())._collectionClass())._from_(associations),$globals.HashedCollection._newFromPairs_(["a",(1),"b",(2)]));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testFrom",{associations:associations})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testKeys",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "isEmpty", "keys", "new", "collectionClass", "assertSameContents:as:", "collection", "collectionKeys", "collectionWithNewValue", ",", "sampleNewIndex"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv([$recv($recv($self._collectionClass())._new())._keys()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["keys"]=1
- //>>excludeEnd("ctx");
- ][0])._isEmpty());
- [$self._assertSameContents_as_([$recv($self._collection())._keys()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["keys"]=2
- //>>excludeEnd("ctx");
- ][0],[$self._collectionKeys()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionKeys"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assertSameContents:as:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assertSameContents_as_($recv($self._collectionWithNewValue())._keys(),$recv($self._collectionKeys()).__comma([$self._sampleNewIndex()]));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testKeys",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testNewFromPairs",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 }.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assertSameContents:as:", "newFromPairs:", "collectionClass", "class"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var flattenedAssociations;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- flattenedAssociations=["a",(1),"b",(2)];
- $self._assertSameContents_as_($recv($recv($self._class())._collectionClass())._newFromPairs_(flattenedAssociations),$globals.HashedCollection._newFromPairs_(["a",(1),"b",(2)]));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNewFromPairs",{flattenedAssociations:flattenedAssociations})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testPrintString",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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'')'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "at:put:", "new", "collectionClass", "printString", ",", "name"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv([$self._collectionClass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionClass"]=1
- //>>excludeEnd("ctx");
- ][0])._new();
- [$recv($1)._at_put_("firstname","James")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._at_put_("lastname","Bond");
- $self._assert_equals_($recv($1)._printString(),[$recv("a ".__comma($recv($self._collectionClass())._name())).__comma(" ('firstname' -> 'James' , 'lastname' -> 'Bond')")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPrintString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testRemoveKey",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nonIndexesDo:", "collection", "should:raise:", "removeKey:", "assert:equals:", "samplesDo:", "deny:", "=", "collectionWithNewValue", "sampleNewIndex", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self._nonIndexesDo_((function(each){
- var collection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- collection=[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [$recv(collection)._removeKey_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["removeKey:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return [$self._assert_equals_(collection,[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each,collection:collection},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $self._samplesDo_((function(index,value){
- var collection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- collection=[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(collection)._removeKey_(index)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["removeKey:"]=2
- //>>excludeEnd("ctx");
- ][0],value)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- return $self._deny_($recv(collection).__eq([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0]));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({index:index,value:value,collection:collection},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- $1=$self._collectionWithNewValue();
- $recv($1)._removeKey_($self._sampleNewIndex());
- $self._assert_equals_($recv($1)._yourself(),$self._collection());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRemoveKey",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testRemoveKeyIfAbsent",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nonIndexesDo:", "collection", "assert:equals:", "removeKey:ifAbsent:", "sampleNewValue", "samplesDo:", "deny:", "=", "collectionWithNewValue", "sampleNewIndex", "assert:", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self._nonIndexesDo_((function(each){
- var collection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- collection=[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(collection)._removeKey_ifAbsent_(each,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["sampleNewValue"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["removeKey:ifAbsent:"]=1
- //>>excludeEnd("ctx");
- ][0],[$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["sampleNewValue"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return [$self._assert_equals_(collection,[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each,collection:collection},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $self._samplesDo_((function(index,value){
- var collection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- collection=[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(collection)._removeKey_ifAbsent_(index,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._sampleNewValue();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["removeKey:ifAbsent:"]=2
- //>>excludeEnd("ctx");
- ][0],value)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- return $self._deny_($recv(collection).__eq([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0]));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({index:index,value:value,collection:collection},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- $1=$self._collectionWithNewValue();
- $recv($1)._removeKey_ifAbsent_($self._sampleNewIndex(),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._assert_(false);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
- //>>excludeEnd("ctx");
- }));
- $self._assert_equals_($recv($1)._yourself(),$self._collection());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRemoveKeyIfAbsent",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testUnorderedComma",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testUnorderedComma\x0a\x09self assert: self collection, self collection equals: self collection.\x0a\x09self assert: self sampleNewValueAsCollection, self collection equals: self collectionWithNewValue.\x0a\x09self assert: self collection, self collectionWithNewValue equals: self collectionWithNewValue.\x0a\x09self assert: self collectionWithNewValue, self collection equals: self collectionWithNewValue",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", ",", "collection", "sampleNewValueAsCollection", "collectionWithNewValue"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0]).__comma([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0],[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($self._sampleNewValueAsCollection()).__comma([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0],[$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=5
- //>>excludeEnd("ctx");
- ][0]).__comma([$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0],[$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv([$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=4
- //>>excludeEnd("ctx");
- ][0]).__comma($self._collection()),$self._collectionWithNewValue());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testUnorderedComma",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testValues",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "isEmpty", "values", "new", "collectionClass", "assertSameContents:as:", "collection", "collectionValues", "collectionWithNewValue", ",", "sampleNewValue"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv([$recv($recv($self._collectionClass())._new())._values()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["values"]=1
- //>>excludeEnd("ctx");
- ][0])._isEmpty());
- [$self._assertSameContents_as_([$recv($self._collection())._values()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["values"]=2
- //>>excludeEnd("ctx");
- ][0],[$self._collectionValues()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionValues"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assertSameContents:as:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assertSameContents_as_($recv($self._collectionWithNewValue())._values(),$recv($self._collectionValues()).__comma([$self._sampleNewValue()]));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testValues",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AssociativeCollectionTest);
- $core.addClass("DictionaryTest", $globals.AssociativeCollectionTest, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "collection",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collection\x0a\x09^ Dictionary new\x0a\x09\x09at: 1 put: 1;\x0a\x09\x09at: 'a' put: 2;\x0a\x09\x09at: true put: 3;\x0a\x09\x09at: 1@3 put: -4;\x0a\x09\x09at: sampleBlock put: 9;\x0a\x09\x09yourself",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "new", "@", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.Dictionary)._new();
- [$recv($1)._at_put_((1),(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_("a",(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_(true,(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_((1).__at((3)),(-4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._at_put_($self.sampleBlock,(9));
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collection",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DictionaryTest);
- $core.addMethod(
- $core.method({
- selector: "collectionKeys",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionKeys\x0a\x09^ {1. 'a'. true. 1@3. sampleBlock}",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["@"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return [(1),"a",true,(1).__at((3)),$self.sampleBlock];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionKeys",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DictionaryTest);
- $core.addMethod(
- $core.method({
- selector: "collectionOfPrintStrings",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionOfPrintStrings\x0a\x09^ Dictionary new\x0a\x09\x09at: 1 put: '1';\x0a\x09\x09at: 'a' put: '2';\x0a\x09\x09at: true put: '3';\x0a\x09\x09at: 1@3 put: '-4';\x0a\x09\x09at: sampleBlock put: '9';\x0a\x09\x09yourself",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "new", "@", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.Dictionary)._new();
- [$recv($1)._at_put_((1),"1")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_("a","2")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_(true,"3")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_((1).__at((3)),"-4")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._at_put_($self.sampleBlock,"9");
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionOfPrintStrings",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DictionaryTest);
- $core.addMethod(
- $core.method({
- selector: "collectionSize",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionSize\x0a\x09^ 5",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return (5);
- }; }),
- $globals.DictionaryTest);
- $core.addMethod(
- $core.method({
- selector: "collectionValues",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionValues\x0a\x09^ {1. 2. 3. -4. 9}",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return [(1),(2),(3),(-4),(9)];
- }; }),
- $globals.DictionaryTest);
- $core.addMethod(
- $core.method({
- selector: "collectionWithDuplicates",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionWithDuplicates\x0a\x09^ Dictionary new\x0a\x09\x09at: 1 put: 1;\x0a\x09\x09at: 'a' put: 2;\x0a\x09\x09at: true put: 3;\x0a\x09\x09at: 4 put: -4;\x0a\x09\x09at: sampleBlock put: 9;\x0a\x09\x09at: 'b' put: 1;\x0a\x09\x09at: 3 put: 3;\x0a\x09\x09at: false put: 12;\x0a\x09\x09yourself",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "new", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.Dictionary)._new();
- [$recv($1)._at_put_((1),(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_("a",(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_(true,(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_((4),(-4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_($self.sampleBlock,(9))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=5
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_("b",(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=6
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_((3),(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=7
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._at_put_(false,(12));
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionWithDuplicates",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DictionaryTest);
- $core.addMethod(
- $core.method({
- selector: "collectionWithNewValue",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionWithNewValue\x0a\x09^ Dictionary new\x0a\x09\x09at: 1 put: 1;\x0a\x09\x09at: 'a' put: 2;\x0a\x09\x09at: true put: 3;\x0a\x09\x09at: 1@3 put: -4;\x0a\x09\x09at: sampleBlock put: 9;\x0a\x09\x09at: 'new' put: 'N';\x0a\x09\x09yourself",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "new", "@", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.Dictionary)._new();
- [$recv($1)._at_put_((1),(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_("a",(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_(true,(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_((1).__at((3)),(-4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._at_put_($self.sampleBlock,(9))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._at_put_("new","N");
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionWithNewValue",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DictionaryTest);
- $core.addMethod(
- $core.method({
- selector: "sampleNewValueAsCollection",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sampleNewValueAsCollection\x0a\x09^ Dictionary new\x0a\x09\x09at: 'new' put: 'N';\x0a\x09\x09yourself",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:put:", "new", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.Dictionary)._new();
- $recv($1)._at_put_("new","N");
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sampleNewValueAsCollection",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DictionaryTest);
- $core.addMethod(
- $core.method({
- selector: "samplesDo:",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "samplesDo: aBlock\x0a\x09super samplesDo: aBlock.\x0a\x09aBlock value: true value: 3.\x0a\x09aBlock value: 1@3 value: -4.\x0a\x09aBlock value: sampleBlock value: 9",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["samplesDo:", "value:value:", "@"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._samplesDo_.call($self,aBlock))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aBlock)._value_value_(true,(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value:value:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aBlock)._value_value_((1).__at((3)),(-4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value:value:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(aBlock)._value_value_($self.sampleBlock,(9));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DictionaryTest);
- $core.addMethod(
- $core.method({
- selector: "testAccessing",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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)",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "at:put:", "assert:equals:", "at:", "at:ifAbsent:", "deny:", "=", "assert:", "includesKey:", "@"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var d;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- d=$recv($globals.Dictionary)._new();
- [$recv(d)._at_put_("hello","world")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(d)._at_("hello")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:"]=1
- //>>excludeEnd("ctx");
- ][0],"world")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(d)._at_ifAbsent_("hello",(function(){
- return nil;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:ifAbsent:"]=1
- //>>excludeEnd("ctx");
- ][0],"world")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_($recv($recv(d)._at_ifAbsent_("foo",(function(){
- return nil;
- }))).__eq("world"))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv(d)._includesKey_("hello")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["includesKey:"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([$recv(d)._includesKey_("foo")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["includesKey:"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(d)._at_put_((1),(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:put:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(d)._at_((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:"]=2
- //>>excludeEnd("ctx");
- ][0],(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv(d)._at_put_([(1).__at((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=1
- //>>excludeEnd("ctx");
- ][0],(3));
- $self._assert_equals_($recv(d)._at_([(1).__at((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=2
- //>>excludeEnd("ctx");
- ][0]),(3));
- $self._assert_([$recv(d)._includesKey_([(1).__at((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["includesKey:"]=3
- //>>excludeEnd("ctx");
- ][0]);
- $self._deny_($recv(d)._includesKey_((3).__at((1))));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAccessing",{d:d})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DictionaryTest);
- $core.addMethod(
- $core.method({
- selector: "testDynamicDictionaries",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDynamicDictionaries\x0a\x09self assert: #{'hello' -> 1} asDictionary equals: (Dictionary with: 'hello' -> 1)",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "asDictionary", "with:", "->"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv($globals.HashedCollection._newFromPairs_(["hello",(1)]))._asDictionary(),$recv($globals.Dictionary)._with_("hello".__minus_gt((1))));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaries",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DictionaryTest);
- $core.addMethod(
- $core.method({
- selector: "collectionClass",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionClass\x0a\x09^ Dictionary",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.Dictionary;
- }; }),
- $globals.DictionaryTest.a$cls);
- $core.addClass("HashedCollectionTest", $globals.AssociativeCollectionTest, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "collection",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collection\x0a\x09^ #{ 'b' -> 1. 'a' -> 2. 'c' -> 3. 'd' -> -4 }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.HashedCollection._newFromPairs_(["b",(1),"a",(2),"c",(3),"d",(-4)]);
- }; }),
- $globals.HashedCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionKeys",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionKeys\x0a\x09^ { 'b'. 'a'. 'c'. 'd' }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return ["b","a","c","d"];
- }; }),
- $globals.HashedCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionOfPrintStrings",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionOfPrintStrings\x0a\x09^ #{ 'b' -> '1'. 'a' -> '2'. 'c' -> '3'. 'd' -> '-4' }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.HashedCollection._newFromPairs_(["b","1","a","2","c","3","d","-4"]);
- }; }),
- $globals.HashedCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionSize",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionSize\x0a\x09^ 4",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return (4);
- }; }),
- $globals.HashedCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionValues",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionValues\x0a\x09^ { 1. 2. 3. -4 }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return [(1),(2),(3),(-4)];
- }; }),
- $globals.HashedCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionWithDuplicates",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionWithDuplicates\x0a\x09^ #{ 'b' -> 1. 'a' -> 2. 'c' -> 3. 'd' -> -4. 'e' -> 1. 'f' -> 2. 'g' -> 10. 'h' -> 0 }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.HashedCollection._newFromPairs_(["b",(1),"a",(2),"c",(3),"d",(-4),"e",(1),"f",(2),"g",(10),"h",(0)]);
- }; }),
- $globals.HashedCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionWithNewValue",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionWithNewValue\x0a\x09^ #{ 'b' -> 1. 'a' -> 2. 'c' -> 3. 'd' -> -4. 'new' -> 'N' }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.HashedCollection._newFromPairs_(["b",(1),"a",(2),"c",(3),"d",(-4),"new","N"]);
- }; }),
- $globals.HashedCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "sampleNewValueAsCollection",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sampleNewValueAsCollection\x0a\x09^ #{ 'new' -> 'N' }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.HashedCollection._newFromPairs_(["new","N"]);
- }; }),
- $globals.HashedCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testDynamicDictionaries",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDynamicDictionaries\x0a\x09self assert: #{'hello' -> 1} asHashedCollection equals: (HashedCollection with: 'hello' -> 1)",
- referencedClasses: ["HashedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "asHashedCollection", "with:", "->"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv($globals.HashedCollection._newFromPairs_(["hello",(1)]))._asHashedCollection(),$recv($globals.HashedCollection)._with_("hello".__minus_gt((1))));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaries",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.HashedCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionClass",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionClass\x0a\x09^ HashedCollection",
- referencedClasses: ["HashedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.HashedCollection;
- }; }),
- $globals.HashedCollectionTest.a$cls);
- $core.addClass("SequenceableCollectionTest", $globals.CollectionTest, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "collectionFirst",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionFirst\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionFirst",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionFirstTwo",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionFirstTwo\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionFirstTwo",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionLast",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionLast\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionLast",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "collectionLastTwo",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionLastTwo\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionLastTwo",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "nonIndexesDo:",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "nonIndexesDo: aBlock\x0a\x09aBlock value: 0.\x0a\x09aBlock value: self collectionSize + 1.\x0a\x09aBlock value: 'z'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:", "+", "collectionSize"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv(aBlock)._value_((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aBlock)._value_($recv($self._collectionSize()).__plus((1)))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(aBlock)._value_("z");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nonIndexesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "samplesDo:",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "samplesDo: aBlock\x0a\x09aBlock value: 1 value: self collectionFirst.\x0a\x09aBlock value: self collectionSize value: self collectionLast",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:value:", "collectionFirst", "collectionSize", "collectionLast"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv(aBlock)._value_value_((1),$self._collectionFirst())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value:value:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aBlock)._value_value_($self._collectionSize(),$self._collectionLast());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testBeginsWith",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "beginsWith:", "collection", "new", "collectionClass", "collectionFirstTwo", "deny:", "collectionLastTwo"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._beginsWith_($recv($self._collectionClass())._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["beginsWith:"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])._beginsWith_([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["beginsWith:"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0])._beginsWith_($self._collectionFirstTwo())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["beginsWith:"]=3
- //>>excludeEnd("ctx");
- ][0]);
- $self._deny_($recv($self._collection())._beginsWith_($self._collectionLastTwo()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testBeginsWith",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testEndsWith",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "endsWith:", "collection", "new", "collectionClass", "collectionLastTwo", "deny:", "collectionFirstTwo"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._endsWith_($recv($self._collectionClass())._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["endsWith:"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])._endsWith_([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["endsWith:"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0])._endsWith_($self._collectionLastTwo())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["endsWith:"]=3
- //>>excludeEnd("ctx");
- ][0]);
- $self._deny_($recv($self._collection())._endsWith_($self._collectionFirstTwo()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testEndsWith",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testFirst",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testFirst\x0a\x09self assert: self collection first equals: self collectionFirst",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "first", "collection", "collectionFirst"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv($self._collection())._first(),$self._collectionFirst());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testFirst",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testFirstN",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "first:", "collection", "collectionFirstTwo", "new", "collectionClass", "collectionSize", "should:raise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._first_((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["first:"]=1
- //>>excludeEnd("ctx");
- ][0],$self._collectionFirstTwo())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])._first_((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["first:"]=2
- //>>excludeEnd("ctx");
- ][0],$recv($self._collectionClass())._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])._first_($self._collectionSize())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["first:"]=3
- //>>excludeEnd("ctx");
- ][0],[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0]);
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._collection())._first_((33));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testFirstN",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testFourth",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testFourth\x0a\x09self assert: (self collection fourth) equals: (self collection at: 4)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "fourth", "collection", "at:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._fourth(),$recv($self._collection())._at_((4)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testFourth",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testIndexOfStartingAt",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ]",
- referencedClasses: ["JSON"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "samplesDo:", "assert:equals:", "indexOf:startingAt:", "collection", "+"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var jsNull;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- jsNull=$recv($globals.JSON)._parse_("null");
- $self._samplesDo_((function(index,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._indexOf_startingAt_(value,(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["indexOf:startingAt:"]=1
- //>>excludeEnd("ctx");
- ][0],index)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])._indexOf_startingAt_(value,index)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["indexOf:startingAt:"]=2
- //>>excludeEnd("ctx");
- ][0],index)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- return $self._assert_equals_($recv($self._collection())._indexOf_startingAt_(value,$recv(index).__plus((1))),(0));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIndexOfStartingAt",{jsNull:jsNull})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testIndexOfStartingAtWithNull",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ]",
- referencedClasses: ["JSON"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "samplesDo:", "collection", "at:put:", "assert:equals:", "indexOf:startingAt:", "+"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var jsNull;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- jsNull=$recv($globals.JSON)._parse_("null");
- $self._samplesDo_((function(index,value){
- var collection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- collection=$self._collection();
- $recv(collection)._at_put_(index,jsNull);
- [$self._assert_equals_([$recv(collection)._indexOf_startingAt_(jsNull,(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["indexOf:startingAt:"]=1
- //>>excludeEnd("ctx");
- ][0],index)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(collection)._indexOf_startingAt_(jsNull,index)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["indexOf:startingAt:"]=2
- //>>excludeEnd("ctx");
- ][0],index)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- return $self._assert_equals_($recv(collection)._indexOf_startingAt_(jsNull,$recv(index).__plus((1))),(0));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({index:index,value:value,collection:collection},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIndexOfStartingAtWithNull",{jsNull:jsNull})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testLast",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testLast\x0a\x09self assert: self collection last equals: self collectionLast",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "last", "collection", "collectionLast"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv($self._collection())._last(),$self._collectionLast());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testLast",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testLastN",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "last:", "collection", "collectionLastTwo", "new", "collectionClass", "collectionSize", "should:raise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._last_((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["last:"]=1
- //>>excludeEnd("ctx");
- ][0],$self._collectionLastTwo())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])._last_((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["last:"]=2
- //>>excludeEnd("ctx");
- ][0],$recv($self._collectionClass())._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])._last_($self._collectionSize())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["last:"]=3
- //>>excludeEnd("ctx");
- ][0],[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0]);
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._collection())._last_((33));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testLastN",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testOrderedComma",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testOrderedComma\x0a\x09self assertSameContents: self sampleNewValueAsCollection, self collection as: self collectionWithNewValue",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assertSameContents:as:", ",", "sampleNewValueAsCollection", "collection", "collectionWithNewValue"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assertSameContents_as_($recv($self._sampleNewValueAsCollection()).__comma($self._collection()),$self._collectionWithNewValue());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testOrderedComma",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testSecond",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSecond\x0a\x09self assert: (self collection second) equals: (self collection at: 2)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "second", "collection", "at:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._second(),$recv($self._collection())._at_((2)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSecond",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testThird",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testThird\x0a\x09self assert: (self collection third) equals: (self collection at: 3)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "third", "collection", "at:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._third(),$recv($self._collection())._at_((3)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testThird",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SequenceableCollectionTest);
- $core.addClass("ArrayTest", $globals.SequenceableCollectionTest, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "collection",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collection\x0a\x09^ #(1 2 3 -4)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return [(1), (2), (3), (-4)];
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "collectionFirst",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionFirst\x0a\x09^ 1",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return (1);
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "collectionFirstTwo",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionFirstTwo\x0a\x09^ #(1 2)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return [(1), (2)];
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "collectionLast",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionLast\x0a\x09^ -4",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return (-4);
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "collectionLastTwo",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionLastTwo\x0a\x09^ #(3 -4)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return [(3), (-4)];
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "collectionOfPrintStrings",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionOfPrintStrings\x0a\x09^ #('1' '2' '3' '-4')",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return ["1", "2", "3", "-4"];
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "collectionSize",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionSize\x0a\x09^ 4",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return (4);
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "collectionWithDuplicates",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionWithDuplicates\x0a\x09^ #('a' 'b' 'c' 1 2 1 'a' ())",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return ["a", "b", "c", (1), (2), (1), "a", []];
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "collectionWithNewValue",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionWithNewValue\x0a\x09^ #(1 2 3 -4 'N')",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return [(1), (2), (3), (-4), "N"];
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "sampleNewIndex",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sampleNewIndex\x0a\x09^ 5",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return (5);
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "samplesDo:",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "samplesDo: aBlock\x0a\x09super samplesDo: aBlock.\x0a\x09aBlock value: 3 value: 3.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["samplesDo:", "value:value:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._samplesDo_.call($self,aBlock))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $recv(aBlock)._value_value_((3),(3));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "testAdd",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAdd \x0a\x09| array | \x0a\x09array := self collection. \x0a\x09array add: 6.\x0a\x09\x0a\x09self assert: array last equals: 6",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collection", "add:", "assert:equals:", "last"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var array;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- array=$self._collection();
- $recv(array)._add_((6));
- $self._assert_equals_($recv(array)._last(),(6));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAdd",{array:array})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "testAddFirst",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAddFirst\x0a\x09self assert: (self collection addFirst: 0; yourself) first equals: 0",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "first", "addFirst:", "collection", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._collection();
- $recv($1)._addFirst_((0));
- $self._assert_equals_($recv($recv($1)._yourself())._first(),(0));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAddFirst",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "testPrintString",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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)'.",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "assert:equals:", "printString", "add:", "remove:", "addLast:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var array;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- array=$recv($globals.Array)._new();
- [$self._assert_equals_([$recv(array)._printString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printString"]=1
- //>>excludeEnd("ctx");
- ][0],"an Array ()")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $1=array;
- [$recv($1)._add_((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._add_((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(array)._printString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printString"]=2
- //>>excludeEnd("ctx");
- ][0],"an Array (1 3)")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(array)._add_("foo");
- [$self._assert_equals_([$recv(array)._printString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printString"]=3
- //>>excludeEnd("ctx");
- ][0],"an Array (1 3 'foo')")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $2=array;
- [$recv($2)._remove_((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["remove:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._remove_((3));
- [$self._assert_equals_([$recv(array)._printString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printString"]=4
- //>>excludeEnd("ctx");
- ][0],"an Array ('foo')")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv(array)._addLast_((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["addLast:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(array)._printString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printString"]=5
- //>>excludeEnd("ctx");
- ][0],"an Array ('foo' 3)")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $recv(array)._addLast_((3));
- $self._assert_equals_($recv(array)._printString(),"an Array ('foo' 3 3)");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPrintString",{array:array})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "testRemove",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["remove:", "assert:equals:", "should:raise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var array;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- array=[(1), (2), (3), (4), (5)];
- [$recv(array)._remove_((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["remove:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_(array,[(1), (2), (4), (5)]);
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(array)._remove_((3));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRemove",{array:array})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "testRemoveFromTo",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "removeFrom:to:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([[(1), (2), (3), (4)]._removeFrom_to_((1),(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["removeFrom:to:"]=1
- //>>excludeEnd("ctx");
- ][0],[(4)])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([[(1), (2), (3), (4)]._removeFrom_to_((2),(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["removeFrom:to:"]=2
- //>>excludeEnd("ctx");
- ][0],[(1), (4)])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_([(1), (2), (3), (4)]._removeFrom_to_((2),(4)),[(1)]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRemoveFromTo",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "testRemoveIndex",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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: #()",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "removeIndex:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([[(1), (2), (3), (4)]._removeIndex_((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["removeIndex:"]=1
- //>>excludeEnd("ctx");
- ][0],[(1), (3), (4)])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([[(1), (2), (3), (4)]._removeIndex_((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["removeIndex:"]=2
- //>>excludeEnd("ctx");
- ][0],[(2), (3), (4)])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_(["hello"]._removeIndex_((1)),[]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRemoveIndex",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "testRemoveLast",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRemoveLast \x0a\x09| array |\x0a\x09array := #(1 2). \x0a\x09array removeLast.\x0a\x09\x0a\x09self assert: array last equals: 1",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["removeLast", "assert:equals:", "last"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var array;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- array=[(1), (2)];
- $recv(array)._removeLast();
- $self._assert_equals_($recv(array)._last(),(1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRemoveLast",{array:array})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "testReversed",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testReversed\x0a\x09|array|\x0a\x09array := #(5 4 3 2 1). \x0a\x09self assert: (array reversed) equals: #(1 2 3 4 5)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "reversed"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var array;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- array=[(5), (4), (3), (2), (1)];
- $self._assert_equals_($recv(array)._reversed(),[(1), (2), (3), (4), (5)]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testReversed",{array:array})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "testSort",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSort\x0a\x09| array |\x0a\x09array := #(10 1 5). \x0a\x09array sort.\x0a\x09self assert: array equals: #(1 5 10)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["sort", "assert:equals:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var array;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- array=[(10), (1), (5)];
- $recv(array)._sort();
- $self._assert_equals_(array,[(1), (5), (10)]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSort",{array:array})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ArrayTest);
- $core.addMethod(
- $core.method({
- selector: "collectionClass",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionClass\x0a\x09^ Array",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.Array;
- }; }),
- $globals.ArrayTest.a$cls);
- $core.addClass("StringTest", $globals.SequenceableCollectionTest, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "collection",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collection\x0a\x09^ 'helLo'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "helLo";
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "collectionFirst",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionFirst\x0a\x09^ 'h'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "h";
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "collectionFirstTwo",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionFirstTwo\x0a\x09^ 'he'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "he";
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "collectionLast",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionLast\x0a\x09^ 'o'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "o";
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "collectionLastTwo",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionLastTwo\x0a\x09^ 'Lo'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "Lo";
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "collectionOfPrintStrings",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionOfPrintStrings\x0a\x09^ '''h''''e''''l''''L''''o'''",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "'h''e''l''L''o'";
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "collectionSize",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionSize\x0a\x09^ 5",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return (5);
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "collectionWithDuplicates",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionWithDuplicates\x0a\x09^ 'abbaerten'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "abbaerten";
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "collectionWithNewValue",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionWithNewValue\x0a\x09^ 'helLoN'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "helLoN";
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "sampleNewValueAsCollection",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "sampleNewValueAsCollection\x0a\x09^ 'N'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "N";
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "samplesDo:",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "samplesDo: aBlock\x0a\x09super samplesDo: aBlock.\x0a\x09aBlock value: 3 value: 'l'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["samplesDo:", "value:value:"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._samplesDo_.call($self,aBlock))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $recv(aBlock)._value_value_((3),"l");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testAddAll",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAddAll\x0a\x09\x22String instances are read-only\x22\x0a\x09self should: [ self collection addAll: self collection ] raise: Error",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "addAll:", "collection"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._addAll_($self._collection());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAddAll",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testAddRemove",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAddRemove\x0a\x09self should: [ 'hello' add: 'a' ] raise: Error.\x0a\x09self should: [ 'hello' remove: 'h' ] raise: Error",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "add:", "remove:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return "hello"._add_("a");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return "hello"._remove_("h");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAddRemove",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testAsArray",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAsArray\x0a\x09self assert: 'hello' asArray equals: #('h' 'e' 'l' 'l' 'o').",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "asArray"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_("hello"._asArray(),["h", "e", "l", "l", "o"]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAsArray",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testAsLowerCase",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAsLowerCase\x0a\x09self assert: 'JACKIE' asLowercase equals: 'jackie'.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "asLowercase"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_("JACKIE"._asLowercase(),"jackie");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAsLowerCase",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testAsNumber",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "asNumber"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_(["3"._asNumber()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asNumber"]=1
- //>>excludeEnd("ctx");
- ][0],(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(["-3"._asNumber()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asNumber"]=2
- //>>excludeEnd("ctx");
- ][0],(-3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_("-1.5"._asNumber(),(-1.5));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAsNumber",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testAsUpperCase",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAsUpperCase\x0a\x09self assert: 'jackie' asUppercase equals: 'JACKIE'.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "asUppercase"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_("jackie"._asUppercase(),"JACKIE");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAsUpperCase",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testAsciiValue",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "asciiValue"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var characterA,characterU;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- characterA="A";
- characterU="U";
- [$self._assert_equals_([$recv(characterA)._asciiValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asciiValue"]=1
- //>>excludeEnd("ctx");
- ][0],(65))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv(characterU)._asciiValue(),(85));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAsciiValue",{characterA:characterA,characterU:characterU})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testAtIfAbsentPut",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAtIfAbsentPut\x0a\x09\x22String instances are read-only\x22\x0a\x09self should: [ 'hello' at: 6 ifAbsentPut: [ 'a' ] ] raise: Error",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "at:ifAbsentPut:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return "hello"._at_ifAbsentPut_((6),(function(){
- return "a";
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAtIfAbsentPut",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testAtPut",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAtPut\x0a\x09\x22String instances are read-only\x22\x0a\x09self should: [ 'hello' at: 1 put: 'a' ] raise: Error",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "at:put:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return "hello"._at_put_((1),"a");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAtPut",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testCapitalized",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "capitalized", "isCapitalized"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_(["test"._capitalized()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["capitalized"]=1
- //>>excludeEnd("ctx");
- ][0],"Test")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(["Test"._capitalized()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["capitalized"]=2
- //>>excludeEnd("ctx");
- ][0],"Test")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(""._capitalized(),"")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(["Test"._isCapitalized()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["isCapitalized"]=1
- //>>excludeEnd("ctx");
- ][0],true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_("test"._isCapitalized(),false);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCapitalized",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testCharCodeAt",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "charCodeAt:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_(["jackie"._charCodeAt_((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["charCodeAt:"]=1
- //>>excludeEnd("ctx");
- ][0],(106))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(["jackie"._charCodeAt_((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["charCodeAt:"]=2
- //>>excludeEnd("ctx");
- ][0],(97))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(["jackie"._charCodeAt_((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["charCodeAt:"]=3
- //>>excludeEnd("ctx");
- ][0],(99))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(["jackie"._charCodeAt_((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["charCodeAt:"]=4
- //>>excludeEnd("ctx");
- ][0],(107))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(["jackie"._charCodeAt_((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["charCodeAt:"]=5
- //>>excludeEnd("ctx");
- ][0],(105))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_("jackie"._charCodeAt_((6)),(101));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCharCodeAt",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testCopyFromTo",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCopyFromTo\x0a\x09self assert: ('jackie' copyFrom: 1 to: 3) equals: 'jac'.\x0a\x09self assert: ('jackie' copyFrom: 4 to: 6) equals: 'kie'.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "copyFrom:to:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_(["jackie"._copyFrom_to_((1),(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["copyFrom:to:"]=1
- //>>excludeEnd("ctx");
- ][0],"jac")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_("jackie"._copyFrom_to_((4),(6)),"kie");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCopyFromTo",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testCopySeparates",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCopySeparates\x0a\x09\x22String instances are immutable\x22\x0a\x09self assert: self collection copy == self collection",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "==", "copy", "collection"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv($recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._copy()).__eq_eq($self._collection()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCopySeparates",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testCopyWithoutAll",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCopyWithoutAll\x0a\x09self\x0a\x09\x09assert: ('*hello* *world*' copyWithoutAll: '*')\x0a\x09\x09equals: 'hello world'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "copyWithoutAll:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_("*hello* *world*"._copyWithoutAll_("*"),"hello world");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCopyWithoutAll",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testEquality",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "deny:", "=", "at:ifAbsent:", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_("hello","hello")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_(["hello".__eq("world")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_(["hello".__eq([]._at_ifAbsent_((1),(function(){
- })))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_("hello",["hello"._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_("hello"._yourself(),"hello");
- $self._deny_("".__eq((0)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testEquality",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testIdentity",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "==", "deny:", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_(["hello".__eq_eq("hello")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_(["hello".__eq_eq("world")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_(["hello".__eq_eq(["hello"._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_([$recv("hello"._yourself()).__eq_eq("hello")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=4
- //>>excludeEnd("ctx");
- ][0]);
- $self._deny_("".__eq_eq((0)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIdentity",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testIncludesSubString",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testIncludesSubString\x0a\x09self assert: ('amber' includesSubString: 'ber').\x0a\x09self deny: ('amber' includesSubString: 'zork').",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "includesSubString:", "deny:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_(["amber"._includesSubString_("ber")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["includesSubString:"]=1
- //>>excludeEnd("ctx");
- ][0]);
- $self._deny_("amber"._includesSubString_("zork"));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIncludesSubString",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testIndexOfStartingAtWithNull",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testIndexOfStartingAtWithNull\x0a\x09\x22String cannot hold JS null\x22",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testIndexOfWithNull",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testIndexOfWithNull\x0a\x09\x22String cannot hold JS null\x22",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testIsVowel",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "isVowel"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var vowel,consonant;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- vowel="u";
- consonant="z";
- [$self._assert_equals_([$recv(vowel)._isVowel()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["isVowel"]=1
- //>>excludeEnd("ctx");
- ][0],true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv(consonant)._isVowel(),false);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIsVowel",{vowel:vowel,consonant:consonant})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testJoin",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testJoin\x0a\x09self assert: (',' join: #('hello' 'world')) equals: 'hello,world'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "join:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_(","._join_(["hello", "world"]),"hello,world");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testJoin",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testRegression1224",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRegression1224\x0a\x09\x22String instances are read-only\x22\x0a\x09self should: [ (self collectionClass new\x0a\x09\x09remove: self sampleNewValue ifAbsent: [];\x0a\x09\x09yourself) size ] raise: Error",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "size", "remove:ifAbsent:", "new", "collectionClass", "sampleNewValue", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $1=$recv($self._collectionClass())._new();
- $recv($1)._remove_ifAbsent_($self._sampleNewValue(),(function(){
- }));
- return $recv($recv($1)._yourself())._size();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRegression1224",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testRemoveAll",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRemoveAll\x0a\x09self should: [ self collection removeAll ] raise: Error",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "removeAll", "collection"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._collection())._removeAll();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRemoveAll",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testReversed",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testReversed\x0a\x09self assert: 'jackiechan' reversed equals: 'nahceikcaj'.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "reversed"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_("jackiechan"._reversed(),"nahceikcaj");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testReversed",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testStreamContents",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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'",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "streamContents:", "nextPutAll:", "space"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv($globals.String)._streamContents_((function(aStream){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(aStream)._nextPutAll_("hello")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["nextPutAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(aStream)._space();
- return $recv(aStream)._nextPutAll_("world");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({aStream:aStream},$ctx1,1)});
- //>>excludeEnd("ctx");
- })),"hello world");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testStreamContents",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testSubStrings",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSubStrings\x0a\x09self assert: ('jackiechan' subStrings: 'ie') equals: #( 'jack' 'chan' ).",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "subStrings:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_("jackiechan"._subStrings_("ie"),["jack", "chan"]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSubStrings",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testTrim",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testTrim\x0a\x09self assert: ' jackie' trimLeft equals: 'jackie'.\x0a\x09self assert: 'jackie ' trimRight equals: 'jackie'.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "trimLeft", "trimRight"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_(" jackie"._trimLeft(),"jackie")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_("jackie "._trimRight(),"jackie");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testTrim",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "testValue",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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')",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "value:", "collect:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_("asString"._value_((1)),"1")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_([(1), (2), (3)]._collect_("asString"),["1", "2", "3"]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testValue",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StringTest);
- $core.addMethod(
- $core.method({
- selector: "collectionClass",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionClass\x0a\x09^ String",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.String;
- }; }),
- $globals.StringTest.a$cls);
- $core.addClass("SetTest", $globals.CollectionTest, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "collection",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collection\x0a\x09^ Set new\x0a\x09\x09add: Smalltalk;\x0a\x09\x09add: nil;\x0a\x09\x09add: 3@3;\x0a\x09\x09add: false;\x0a\x09\x09add: sampleBlock;\x0a\x09\x09yourself",
- referencedClasses: ["Set", "Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "new", "@", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.Set)._new();
- [$recv($1)._add_($globals.Smalltalk)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._add_(nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._add_((3).__at((3)))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._add_(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._add_($self.sampleBlock);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collection",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "collectionOfPrintStrings",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionOfPrintStrings\x0a\x09^ Set new\x0a\x09\x09add: 'a SmalltalkImage';\x0a\x09\x09add: 'nil';\x0a\x09\x09add: '3@3';\x0a\x09\x09add: 'false';\x0a\x09\x09add: 'a BlockClosure';\x0a\x09\x09yourself",
- referencedClasses: ["Set"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "new", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.Set)._new();
- [$recv($1)._add_("a SmalltalkImage")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._add_("nil")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._add_("3@3")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._add_("false")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._add_("a BlockClosure");
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionOfPrintStrings",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "collectionSize",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionSize\x0a\x09^ 5",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return (5);
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "collectionWithDuplicates",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionWithDuplicates\x0a\x09\x22Set has no duplicates\x22\x0a\x09^ self collection add: 0; yourself",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "collection", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._collection();
- $recv($1)._add_((0));
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionWithDuplicates",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "collectionWithNewValue",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionWithNewValue\x0a\x09^ Set new\x0a\x09\x09add: Smalltalk;\x0a\x09\x09add: nil;\x0a\x09\x09add: 3@3;\x0a\x09\x09add: 'N';\x0a\x09\x09add: false;\x0a\x09\x09add: sampleBlock;\x0a\x09\x09yourself",
- referencedClasses: ["Set", "Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "new", "@", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.Set)._new();
- [$recv($1)._add_($globals.Smalltalk)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._add_(nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._add_((3).__at((3)))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._add_("N")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._add_(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._add_($self.sampleBlock);
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionWithNewValue",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "testAddAll",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["testAddAll", "assert:equals:", "addAll:", "collection", "yourself", "collectionWithNewValue"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3;
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._testAddAll.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $1=[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._addAll_([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["addAll:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($1)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0],[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $2=[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv($2)._addAll_([$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["addAll:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($2)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=2
- //>>excludeEnd("ctx");
- ][0],[$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $3=[$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv($3)._addAll_($self._collection());
- $self._assert_equals_($recv($3)._yourself(),$self._collectionWithNewValue());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAddAll",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "testAddRemove",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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)",
- referencedClasses: ["Set"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "assert:", "isEmpty", "add:", "includes:", "remove:", "deny:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var set;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- set=$recv($globals.Set)._new();
- [$self._assert_($recv(set)._isEmpty())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(set)._add_((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv(set)._includes_((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["includes:"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(set)._add_((5));
- $self._assert_([$recv(set)._includes_((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["includes:"]=2
- //>>excludeEnd("ctx");
- ][0]);
- $recv(set)._remove_((3));
- $self._deny_($recv(set)._includes_((3)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAddRemove",{set:set})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "testAt",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAt\x0a\x09self should: [ Set new at: 1 put: 2 ] raise: Error",
- referencedClasses: ["Set", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "at:put:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Set)._new())._at_put_((1),(2));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAt",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "testCollect",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCollect\x0a\x09super testCollect.\x0a\x09self assert: (#(5 6 8) asSet collect: [ :x | x \x5c\x5c 3 ]) equals: #(0 2) asSet",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["testCollect", "assert:equals:", "collect:", "asSet", "\x5c\x5c"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._testCollect.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv([[(5), (6), (8)]._asSet()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asSet"]=1
- //>>excludeEnd("ctx");
- ][0])._collect_((function(x){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(x).__backslash_backslash((3));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
- //>>excludeEnd("ctx");
- })),[(0), (2)]._asSet());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCollect",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "testComparing",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "asSet", "deny:", "="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([[(0), (2)]._asSet()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asSet"]=1
- //>>excludeEnd("ctx");
- ][0],[[(0), (2)]._asSet()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asSet"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_([[(2), (0)]._asSet()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asSet"]=3
- //>>excludeEnd("ctx");
- ][0],[[(0), (2)]._asSet()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asSet"]=4
- //>>excludeEnd("ctx");
- ][0]);
- [$self._deny_([$recv([[(0), (2), (3)]._asSet()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asSet"]=5
- //>>excludeEnd("ctx");
- ][0]).__eq([[(0), (2)]._asSet()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asSet"]=6
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_($recv([[(1), (2)]._asSet()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asSet"]=7
- //>>excludeEnd("ctx");
- ][0]).__eq([(0), (2)]._asSet()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testComparing",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "testPrintString",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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'')'",
- referencedClasses: ["Set"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "assert:equals:", "printString", "add:", "remove:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var set;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- set=$recv($globals.Set)._new();
- [$self._assert_equals_([$recv(set)._printString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printString"]=1
- //>>excludeEnd("ctx");
- ][0],"a Set ()")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $1=set;
- [$recv($1)._add_((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._add_((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(set)._printString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printString"]=2
- //>>excludeEnd("ctx");
- ][0],"a Set (1 3)")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(set)._add_("foo")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(set)._printString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printString"]=3
- //>>excludeEnd("ctx");
- ][0],"a Set (1 3 'foo')")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $2=set;
- [$recv($2)._remove_((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["remove:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._remove_((3));
- [$self._assert_equals_([$recv(set)._printString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printString"]=4
- //>>excludeEnd("ctx");
- ][0],"a Set ('foo')")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv(set)._add_((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(set)._printString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printString"]=5
- //>>excludeEnd("ctx");
- ][0],"a Set (3 'foo')")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $recv(set)._add_((3));
- $self._assert_equals_($recv(set)._printString(),"a Set (3 'foo')");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPrintString",{set:set})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "testRegression1225",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRegression1225\x0a\x09self assert: (#(1 2 3) asSet add: 3) equals: 3",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "add:", "asSet"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv([(1), (2), (3)]._asSet())._add_((3)),(3));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRegression1225",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "testRegression1226",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRegression1226\x0a\x09self assert: (#(1 2 3) asSet remove: 3) equals: 3",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "remove:", "asSet"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv([(1), (2), (3)]._asSet())._remove_((3)),(3));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRegression1226",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "testRegression1227",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRegression1227\x0a\x09self assert: (#(1 2 3) asSet remove: 4 ifAbsent: [5]) equals: 5",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "remove:ifAbsent:", "asSet"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv([(1), (2), (3)]._asSet())._remove_ifAbsent_((4),(function(){
- return (5);
- })),(5));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRegression1227",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "testRegression1228",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRegression1228\x0a\x09self should: [#(1 2 3) asSet remove: 4] raise: Error",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "remove:", "asSet"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv([(1), (2), (3)]._asSet())._remove_((4));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRegression1228",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "testRegression1245",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRegression1245\x0a\x09self assert: ({Object. String} asSet remove: String) equals: String",
- referencedClasses: ["Object", "String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "remove:", "asSet"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv($recv([$globals.Object,$globals.String])._asSet())._remove_($globals.String),$globals.String);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRegression1245",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "testUnboxedObjects",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testUnboxedObjects\x0a\x09self assert: {'foo' yourself. 'foo' yourself} asSet asArray equals: #('foo')",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "asArray", "asSet", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv($recv([["foo"._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0],"foo"._yourself()])._asSet())._asArray(),["foo"]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testUnboxedObjects",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "testUnicity",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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')",
- referencedClasses: ["Set"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "add:", "assert:equals:", "size", "asArray"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var set;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- set=$recv($globals.Set)._new();
- [$recv(set)._add_((21))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(set)._add_("hello")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(set)._add_((21))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["add:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(set)._size()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["size"]=1
- //>>excludeEnd("ctx");
- ][0],(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(set)._add_("hello");
- [$self._assert_equals_($recv(set)._size(),(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv(set)._asArray(),[(21), "hello"]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testUnicity",{set:set})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "testUnorderedComma",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testUnorderedComma\x0a\x09self assert: self collection, self collection equals: self collection.\x0a\x09self assert: self sampleNewValueAsCollection, self collection equals: self collectionWithNewValue.\x0a\x09self assert: self collection, self collectionWithNewValue equals: self collectionWithNewValue.\x0a\x09self assert: self collectionWithNewValue, self collection equals: self collectionWithNewValue",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", ",", "collection", "sampleNewValueAsCollection", "collectionWithNewValue"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0]).__comma([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0],[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($self._sampleNewValueAsCollection()).__comma([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0],[$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=5
- //>>excludeEnd("ctx");
- ][0]).__comma([$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0],[$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv([$self._collectionWithNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collectionWithNewValue"]=4
- //>>excludeEnd("ctx");
- ][0]).__comma($self._collection()),$self._collectionWithNewValue());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testUnorderedComma",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SetTest);
- $core.addMethod(
- $core.method({
- selector: "collectionClass",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionClass\x0a\x09^ Set",
- referencedClasses: ["Set"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.Set;
- }; }),
- $globals.SetTest.a$cls);
- $core.addClass("ConsoleTranscriptTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "testShow",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: ["Transcript", "ConsoleTranscript", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["current", "register:", "new", "shouldnt:raise:", "show:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var originalTranscript;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- originalTranscript=$recv($globals.Transcript)._current();
- [$recv($globals.Transcript)._register_($recv($globals.ConsoleTranscript)._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["register:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._shouldnt_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv($globals.Transcript)._show_("Hello console!")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["show:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["shouldnt:raise:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._shouldnt_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.Transcript)._show_(console);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- $recv($globals.Transcript)._register_(originalTranscript);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testShow",{originalTranscript:originalTranscript})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ConsoleTranscriptTest);
- $core.addClass("DateTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "testEquality",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testEquality\x0a\x09| now |\x0a\x09now := Date new.\x0a\x0a\x09self assert: now = now.\x0a\x0a\x09self deny: now = (Date fromMilliseconds: 0).\x0a\x0a\x09self assert: (Date fromMilliseconds: 12345678) = (Date fromMilliseconds: 12345678).\x0a\x09self assert: now = (Date fromMilliseconds: now asMilliseconds).\x0a\x09self assert: (Date fromMilliseconds: now asMilliseconds) = now",
- referencedClasses: ["Date"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "assert:", "=", "deny:", "fromMilliseconds:", "asMilliseconds"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var now;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- now=$recv($globals.Date)._new();
- [$self._assert_([$recv(now).__eq(now)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_([$recv(now).__eq([$recv($globals.Date)._fromMilliseconds_((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["fromMilliseconds:"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=2
- //>>excludeEnd("ctx");
- ][0]);
- [$self._assert_([$recv([$recv($globals.Date)._fromMilliseconds_((12345678))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["fromMilliseconds:"]=2
- //>>excludeEnd("ctx");
- ][0]).__eq([$recv($globals.Date)._fromMilliseconds_((12345678))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["fromMilliseconds:"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv(now).__eq([$recv($globals.Date)._fromMilliseconds_([$recv(now)._asMilliseconds()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asMilliseconds"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["fromMilliseconds:"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_($recv($recv($globals.Date)._fromMilliseconds_($recv(now)._asMilliseconds())).__eq(now));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testEquality",{now:now})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DateTest);
- $core.addMethod(
- $core.method({
- selector: "testIdentity",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testIdentity\x0a\x09| now |\x0a\x09now := Date new.\x0a\x0a\x09self assert: now == now.\x0a\x0a\x09self deny: now == (Date fromMilliseconds: 0).\x0a\x0a\x09self deny: (Date fromMilliseconds: 12345678) == (Date fromMilliseconds: 12345678).\x0a\x09self deny: now == (Date fromMilliseconds: now asMilliseconds).\x0a\x09self deny: (Date fromMilliseconds: now asMilliseconds) == now",
- referencedClasses: ["Date"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "assert:", "==", "deny:", "fromMilliseconds:", "asMilliseconds"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var now;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- now=$recv($globals.Date)._new();
- $self._assert_([$recv(now).__eq_eq(now)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=1
- //>>excludeEnd("ctx");
- ][0]);
- [$self._deny_([$recv(now).__eq_eq([$recv($globals.Date)._fromMilliseconds_((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["fromMilliseconds:"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([$recv([$recv($globals.Date)._fromMilliseconds_((12345678))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["fromMilliseconds:"]=2
- //>>excludeEnd("ctx");
- ][0]).__eq_eq([$recv($globals.Date)._fromMilliseconds_((12345678))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["fromMilliseconds:"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([$recv(now).__eq_eq([$recv($globals.Date)._fromMilliseconds_([$recv(now)._asMilliseconds()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["asMilliseconds"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["fromMilliseconds:"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_($recv($recv($globals.Date)._fromMilliseconds_($recv(now)._asMilliseconds())).__eq_eq(now));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIdentity",{now:now})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DateTest);
- $core.addMethod(
- $core.method({
- selector: "testPlusAndMinus",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testPlusAndMinus\x0a\x09| a b now zeroDuration |\x0a\x09a := Date fromString: '1974-07-12 14:30'.\x0a\x09now := Date now.\x0a\x09b := Date fromString: '2616-03-06'.\x0a\x09zeroDuration := 0.\x0a\x0a\x09self assert: {a-a. now-now. b-b} asSet equals: (Set with: zeroDuration).\x0a\x09self assert: now + (b - now) equals: b.\x0a\x09self assert: a + (b - a) equals: b.\x0a\x09self assert: now + (a - now) equals: a.\x0a\x09self assert: a + ((now - a) + (b - now)) equals: b",
- referencedClasses: ["Date", "Set"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["fromString:", "now", "assert:equals:", "asSet", "-", "with:", "+"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var a,b,now,zeroDuration;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- a=[$recv($globals.Date)._fromString_("1974-07-12 14:30")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["fromString:"]=1
- //>>excludeEnd("ctx");
- ][0];
- now=$recv($globals.Date)._now();
- b=$recv($globals.Date)._fromString_("2616-03-06");
- zeroDuration=(0);
- [$self._assert_equals_($recv([[$recv(a).__minus(a)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["-"]=1
- //>>excludeEnd("ctx");
- ][0],[$recv(now).__minus(now)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["-"]=2
- //>>excludeEnd("ctx");
- ][0],[$recv(b).__minus(b)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["-"]=3
- //>>excludeEnd("ctx");
- ][0]])._asSet(),$recv($globals.Set)._with_(zeroDuration))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(now).__plus([$recv(b).__minus(now)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["-"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["+"]=1
- //>>excludeEnd("ctx");
- ][0],b)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(a).__plus([$recv(b).__minus(a)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["-"]=5
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["+"]=2
- //>>excludeEnd("ctx");
- ][0],b)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(now).__plus([$recv(a).__minus(now)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["-"]=6
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["+"]=3
- //>>excludeEnd("ctx");
- ][0],a)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_([$recv(a).__plus($recv([$recv(now).__minus(a)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["-"]=7
- //>>excludeEnd("ctx");
- ][0]).__plus($recv(b).__minus(now)))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["+"]=4
- //>>excludeEnd("ctx");
- ][0],b);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPlusAndMinus",{a:a,b:b,now:now,zeroDuration:zeroDuration})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.DateTest);
- $core.addClass("JSObjectProxyTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "jsObject",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "jsObject\x0a\x09<inlineJS: \x0a\x09\x09'return {a: 1, b: function() {return 2;}, c: function(object) {return object;}, d: \x22\x22, \x22e\x22: null, \x22f\x22: void 0}'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return {a: 1, b: function() {return 2;}, c: function(object) {return object;}, d: \x22\x22, \x22e\x22: null, \x22f\x22: void 0}"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return {a: 1, b: function() {return 2;}, c: function(object) {return object;}, d: "", "e": null, "f": void 0};
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"jsObject",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "jsUndefined",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "jsUndefined\x0a\x09<inlineJS: 'return'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"jsUndefined",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testAtIfAbsent",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["jsObject", "assert:equals:", "at:ifAbsent:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var testObject;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- testObject=$self._jsObject();
- [$self._assert_equals_([$recv(testObject)._at_ifAbsent_("abc",(function(){
- return "Property does not exist";
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:ifAbsent:"]=1
- //>>excludeEnd("ctx");
- ][0],"Property does not exist")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(testObject)._at_ifAbsent_("e",(function(){
- return "Property does not exist";
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:ifAbsent:"]=2
- //>>excludeEnd("ctx");
- ][0],nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(testObject)._at_ifAbsent_("a",(function(){
- return "Property does not exist";
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:ifAbsent:"]=3
- //>>excludeEnd("ctx");
- ][0],(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv(testObject)._at_ifAbsent_("f",(function(){
- return "Property does not exist";
- })),nil);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAtIfAbsent",{testObject:testObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testAtIfPresent",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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'.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["jsObject", "assert:equals:", "at:ifPresent:", ",", "asString"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var testObject;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- testObject=$self._jsObject();
- [$self._assert_equals_([$recv(testObject)._at_ifPresent_("abc",(function(x){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return ["hello ".__comma([$recv(x)._asString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["asString"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:ifPresent:"]=1
- //>>excludeEnd("ctx");
- ][0],nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(testObject)._at_ifPresent_("e",(function(x){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return ["hello ".__comma([$recv(x)._asString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["asString"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,2)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:ifPresent:"]=2
- //>>excludeEnd("ctx");
- ][0],"hello nil")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(testObject)._at_ifPresent_("a",(function(x){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return ["hello ".__comma([$recv(x)._asString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["asString"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,3)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:ifPresent:"]=3
- //>>excludeEnd("ctx");
- ][0],"hello 1")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv(testObject)._at_ifPresent_("f",(function(x){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return "hello ".__comma($recv(x)._asString());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,4)});
- //>>excludeEnd("ctx");
- })),"hello nil");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAtIfPresent",{testObject:testObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testAtIfPresentIfAbsent",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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'.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["jsObject", "assert:equals:", "at:ifPresent:ifAbsent:", ",", "asString"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var testObject;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- testObject=$self._jsObject();
- [$self._assert_equals_([$recv(testObject)._at_ifPresent_ifAbsent_("abc",(function(x){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return ["hello ".__comma([$recv(x)._asString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["asString"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- return "not present";
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:ifPresent:ifAbsent:"]=1
- //>>excludeEnd("ctx");
- ][0],"not present")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(testObject)._at_ifPresent_ifAbsent_("e",(function(x){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return ["hello ".__comma([$recv(x)._asString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["asString"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,3)});
- //>>excludeEnd("ctx");
- }),(function(){
- return "not present";
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:ifPresent:ifAbsent:"]=2
- //>>excludeEnd("ctx");
- ][0],"hello nil")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(testObject)._at_ifPresent_ifAbsent_("a",(function(x){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return ["hello ".__comma([$recv(x)._asString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["asString"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,5)});
- //>>excludeEnd("ctx");
- }),(function(){
- return "not present";
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:ifPresent:ifAbsent:"]=3
- //>>excludeEnd("ctx");
- ][0],"hello 1")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv(testObject)._at_ifPresent_ifAbsent_("f",(function(x){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return "hello ".__comma($recv(x)._asString());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,7)});
- //>>excludeEnd("ctx");
- }),(function(){
- return "not present";
- })),"hello nil");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAtIfPresentIfAbsent",{testObject:testObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testAtPut",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["jsObject", "assert:", "~=", "at:", "assert:equals:", "at:put:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var testObject;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- testObject=$self._jsObject();
- $self._assert_($recv([$recv(testObject)._at_("abc")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:"]=1
- //>>excludeEnd("ctx");
- ][0]).__tild_eq("xyz"));
- [$self._assert_equals_($recv(testObject)._at_put_("abc","xyz"),"xyz")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv(testObject)._at_("abc"),"xyz");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAtPut",{testObject:testObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testComparison",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "indexOf:", "assert:", "=", "deny:", "new", "jsObject"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv([console,(2)])._indexOf_(console),(1));
- $self._assert_([$recv(console).__eq(console)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0]);
- [$self._deny_([$recv(console).__eq($recv($globals.Object)._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_($recv(console).__eq($self._jsObject()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testComparison",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testDNU",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDNU\x0a\x09self should: [ self jsObject foo ] raise: MessageNotUnderstood",
- referencedClasses: ["MessageNotUnderstood"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "foo", "jsObject"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._jsObject())._foo();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDNU",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testDNUWithAllowJavaScriptCalls",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDNUWithAllowJavaScriptCalls\x0a\x09| jsObject |\x0a\x09jsObject := #().\x0a\x09jsObject basicAt: 'allowJavaScriptCalls' put: true.\x0a\x09self should: [ jsObject foo ] raise: MessageNotUnderstood",
- referencedClasses: ["MessageNotUnderstood"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["basicAt:put:", "should:raise:", "foo"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var jsObject;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- jsObject=[];
- $recv(jsObject)._basicAt_put_("allowJavaScriptCalls",true);
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(jsObject)._foo();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDNUWithAllowJavaScriptCalls",{jsObject:jsObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testMessageSend",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "a", "jsObject", "b", "c:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_($recv([$self._jsObject()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["jsObject"]=1
- //>>excludeEnd("ctx");
- ][0])._a(),(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv([$self._jsObject()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["jsObject"]=2
- //>>excludeEnd("ctx");
- ][0])._b(),(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($self._jsObject())._c_((3)),(3));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMessageSend",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testMethodWithArguments",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testMethodWithArguments\x0a\x09self assert: (self jsObject c: 1) equals: 1",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "c:", "jsObject"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv($self._jsObject())._c_((1)),(1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMethodWithArguments",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testNull",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNull\x0a\x09self assert: JSObjectProxy null isNil.\x0a\x09self\x0a\x09\x09assert: (JSON stringify: #{#foo -> JSObjectProxy null})\x0a\x09\x09equals: '{\x22foo\x22:null}'",
- referencedClasses: ["JSObjectProxy", "JSON"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "isNil", "null", "assert:equals:", "stringify:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv([$recv($globals.JSObjectProxy)._null()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["null"]=1
- //>>excludeEnd("ctx");
- ][0])._isNil());
- $self._assert_equals_($recv($globals.JSON)._stringify_($globals.HashedCollection._newFromPairs_(["foo",$recv($globals.JSObjectProxy)._null()])),"{\x22foo\x22:null}");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNull",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testPrinting",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testPrinting\x0a\x09self assert: self jsObject printString equals: '[object Object]'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "printString", "jsObject"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv($self._jsObject())._printString(),"[object Object]");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPrinting",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testPropertyThatReturnsEmptyString",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["jsObject", "assert:equals:", "d", "d:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var object;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- object=$self._jsObject();
- [$self._assert_equals_([$recv(object)._d()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["d"]=1
- //>>excludeEnd("ctx");
- ][0],"")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(object)._d_("hello");
- $self._assert_equals_($recv(object)._d(),"hello");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPropertyThatReturnsEmptyString",{object:object})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testPropertyThatReturnsUndefined",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testPropertyThatReturnsUndefined\x0a\x09| object |\x0a\x0a\x09object := self jsObject.\x0a\x09self shouldnt: [ object e ] raise: MessageNotUnderstood.\x0a\x09self assert: object e isNil",
- referencedClasses: ["MessageNotUnderstood"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["jsObject", "shouldnt:raise:", "e", "assert:", "isNil"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var object;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- object=$self._jsObject();
- $self._shouldnt_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(object)._e()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["e"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood);
- $self._assert_($recv($recv(object)._e())._isNil());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPropertyThatReturnsUndefined",{object:object})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testSetPropertyWithFalsyValue",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSetPropertyWithFalsyValue\x0a\x09| jsObject |\x0a\x09jsObject := self jsObject.\x0a\x09self assert: (jsObject a) equals: 1.\x0a\x0a\x09jsObject a: JSObjectProxy null.\x0a\x09self assert: (jsObject a) equals: nil.\x0a\x09jsObject a: 0.\x0a\x09self assert: (jsObject a) equals: 0.\x0a\x09jsObject a: self jsUndefined.\x0a\x09self assert: (jsObject a) equals: nil.\x0a\x09jsObject a: ''.\x0a\x09self assert: (jsObject a) equals: ''.\x0a\x09jsObject a: false.\x0a\x09self assert: (jsObject a) equals: false",
- referencedClasses: ["JSObjectProxy"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["jsObject", "assert:equals:", "a", "a:", "null", "jsUndefined"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var jsObject;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- jsObject=$self._jsObject();
- [$self._assert_equals_([$recv(jsObject)._a()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["a"]=1
- //>>excludeEnd("ctx");
- ][0],(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(jsObject)._a_($recv($globals.JSObjectProxy)._null())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["a:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(jsObject)._a()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["a"]=2
- //>>excludeEnd("ctx");
- ][0],nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(jsObject)._a_((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["a:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(jsObject)._a()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["a"]=3
- //>>excludeEnd("ctx");
- ][0],(0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$recv(jsObject)._a_($self._jsUndefined())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["a:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(jsObject)._a()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["a"]=4
- //>>excludeEnd("ctx");
- ][0],nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv(jsObject)._a_("")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["a:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(jsObject)._a()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["a"]=5
- //>>excludeEnd("ctx");
- ][0],"")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $recv(jsObject)._a_(false);
- $self._assert_equals_($recv(jsObject)._a(),false);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSetPropertyWithFalsyValue",{jsObject:jsObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testUndefined",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testUndefined\x0a\x09self assert: JSObjectProxy undefined isNil.\x0a\x09self\x0a\x09\x09assert: (JSON stringify: #{#foo -> JSObjectProxy undefined})\x0a\x09\x09equals: '{}'",
- referencedClasses: ["JSObjectProxy", "JSON"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "isNil", "undefined", "assert:equals:", "stringify:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv([$recv($globals.JSObjectProxy)._undefined()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["undefined"]=1
- //>>excludeEnd("ctx");
- ][0])._isNil());
- $self._assert_equals_($recv($globals.JSON)._stringify_($globals.HashedCollection._newFromPairs_(["foo",$recv($globals.JSObjectProxy)._undefined()])),"{}");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testUndefined",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testValue",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testValue\x0a\x09| testObject |\x0a\x09testObject := self jsObject.\x0a\x09testObject at: 'value' put: 'aValue'.\x0a\x09self assert: testObject value equals: 'aValue'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["jsObject", "at:put:", "assert:equals:", "value"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var testObject;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- testObject=$self._jsObject();
- $recv(testObject)._at_put_("value","aValue");
- $self._assert_equals_($recv(testObject)._value(),"aValue");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testValue",{testObject:testObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addMethod(
- $core.method({
- selector: "testYourself",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testYourself\x0a\x09| object |\x0a\x09object := self jsObject\x0a\x09\x09d: 'test';\x0a\x09\x09yourself.\x0a\x0a\x09self assert: object d equals: 'test'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["d:", "jsObject", "yourself", "assert:equals:", "d"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var object;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._jsObject();
- $recv($1)._d_("test");
- object=$recv($1)._yourself();
- $self._assert_equals_($recv(object)._d(),"test");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testYourself",{object:object})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JSObjectProxyTest);
- $core.addClass("JavaScriptExceptionTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "testCatchingException",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCatchingException\x0a\x09[ self throwException ]\x0a\x09\x09on: Error\x0a\x09\x09do: [ :error |\x0a\x09\x09\x09self assert: error exception = 'test' ]",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:do:", "throwException", "assert:", "=", "exception"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._throwException();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._on_do_($globals.Error,(function(error){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._assert_($recv($recv(error)._exception()).__eq("test"));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCatchingException",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JavaScriptExceptionTest);
- $core.addMethod(
- $core.method({
- selector: "testRaisingException",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRaisingException\x0a\x09self should: [ self throwException ] raise: JavaScriptException",
- referencedClasses: ["JavaScriptException"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "throwException"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._throwException();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.JavaScriptException);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRaisingException",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JavaScriptExceptionTest);
- $core.addMethod(
- $core.method({
- selector: "throwException",
- protocol: "helpers",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "throwException\x0a\x09<inlineJS: 'throw \x22test\x22'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["throw \x22test\x22"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- throw "test";
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"throwException",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.JavaScriptExceptionTest);
- $core.addClass("MessageSendTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "testValue",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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'",
- referencedClasses: ["MessageSend", "Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["receiver:", "new", "selector:", "yourself", "assert:equals:", "value"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var messageSend;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[$recv($globals.MessageSend)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._receiver_($recv($globals.Object)._new());
- $recv($1)._selector_("asString");
- messageSend=$recv($1)._yourself();
- $self._assert_equals_($recv(messageSend)._value(),"an Object");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testValue",{messageSend:messageSend})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MessageSendTest);
- $core.addMethod(
- $core.method({
- selector: "testValueWithArguments",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["MessageSend"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["receiver:", "new", "selector:", "yourself", "assert:equals:", "value:", "valueWithPossibleArguments:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var messageSend;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.MessageSend)._new();
- $recv($1)._receiver_((2));
- $recv($1)._selector_("+");
- messageSend=$recv($1)._yourself();
- [$self._assert_equals_($recv(messageSend)._value_((3)),(5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv(messageSend)._valueWithPossibleArguments_([(4)]),(6));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testValueWithArguments",{messageSend:messageSend})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MessageSendTest);
- $core.addClass("MethodInheritanceTest", $globals.TestCase, "Kernel-Tests");
- $core.setSlots($globals.MethodInheritanceTest, ["receiverTop", "receiverMiddle", "receiverBottom", "method", "performBlock"]);
- $core.addMethod(
- $core.method({
- selector: "codeGeneratorClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "codeGeneratorClass\x0a\x09^ CodeGenerator",
- referencedClasses: ["CodeGenerator"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.CodeGenerator;
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "compiler",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "compiler\x0a\x09^ Compiler new\x0a\x09\x09codeGeneratorClass: self codeGeneratorClass;\x0a\x09\x09yourself",
- referencedClasses: ["Compiler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["codeGeneratorClass:", "new", "codeGeneratorClass", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.Compiler)._new();
- $recv($1)._codeGeneratorClass_($self._codeGeneratorClass());
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"compiler",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "deinstallBottom",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "deinstallBottom\x0a\x09self targetClassBottom removeCompiledMethod: method",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["removeCompiledMethod:", "targetClassBottom"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._targetClassBottom())._removeCompiledMethod_($self.method);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"deinstallBottom",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "deinstallMiddle",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "deinstallMiddle\x0a\x09self targetClassMiddle removeCompiledMethod: method",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["removeCompiledMethod:", "targetClassMiddle"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._targetClassMiddle())._removeCompiledMethod_($self.method);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"deinstallMiddle",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "deinstallTop",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "deinstallTop\x0a\x09self targetClassTop removeCompiledMethod: method",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["removeCompiledMethod:", "targetClassTop"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._targetClassTop())._removeCompiledMethod_($self.method);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"deinstallTop",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "installBottom:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "installBottom: aString\x0a\x09method := self compiler install: aString forClass: self targetClassBottom protocol: 'tests'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["install:forClass:protocol:", "compiler", "targetClassBottom"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.method=$recv($self._compiler())._install_forClass_protocol_(aString,$self._targetClassBottom(),"tests");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"installBottom:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "installMiddle:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "installMiddle: aString\x0a\x09method := self compiler install: aString forClass: self targetClassMiddle protocol: 'tests'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["install:forClass:protocol:", "compiler", "targetClassMiddle"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.method=$recv($self._compiler())._install_forClass_protocol_(aString,$self._targetClassMiddle(),"tests");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"installMiddle:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "installTop:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "installTop: aString\x0a\x09method := self compiler install: aString forClass: self targetClassTop protocol: 'tests'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["install:forClass:protocol:", "compiler", "targetClassTop"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.method=$recv($self._compiler())._install_forClass_protocol_(aString,$self._targetClassTop(),"tests");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"installTop:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "setUp",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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' ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "targetClassTop", "targetClassMiddle", "targetClassBottom", "error:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiverTop=[$recv($self._targetClassTop())._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self.receiverMiddle=[$recv($self._targetClassMiddle())._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self.receiverBottom=$recv($self._targetClassBottom())._new();
- $self.method=nil;
- $self.performBlock=(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._error_("performBlock not initialized");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- });
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setUp",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "shouldMNU",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "shouldMNU\x0a\x09self shouldMNUTop.\x0a\x09self shouldMNUMiddle.\x0a\x09self shouldMNUBottom",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["shouldMNUTop", "shouldMNUMiddle", "shouldMNUBottom"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._shouldMNUTop();
- $self._shouldMNUMiddle();
- $self._shouldMNUBottom();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shouldMNU",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "shouldMNUBottom",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "shouldMNUBottom\x0a\x09self should: [ performBlock value: receiverBottom ] raise: MessageNotUnderstood",
- referencedClasses: ["MessageNotUnderstood"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "value:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self.performBlock)._value_($self.receiverBottom);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shouldMNUBottom",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "shouldMNUMiddle",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "shouldMNUMiddle\x0a\x09self should: [ performBlock value: receiverMiddle ] raise: MessageNotUnderstood",
- referencedClasses: ["MessageNotUnderstood"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "value:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self.performBlock)._value_($self.receiverMiddle);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shouldMNUMiddle",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "shouldMNUTop",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "shouldMNUTop\x0a\x09self should: [ performBlock value: receiverTop ] raise: MessageNotUnderstood",
- referencedClasses: ["MessageNotUnderstood"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "value:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self.performBlock)._value_($self.receiverTop);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shouldMNUTop",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "shouldReturn:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- 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 }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:", "assert:equals:"]
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- var result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- result=[$recv($self.performBlock)._value_($self.receiverTop)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(["top",anObject],["top",result])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- result=[$recv($self.performBlock)._value_($self.receiverMiddle)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(["middle",anObject],["middle",result])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- result=$recv($self.performBlock)._value_($self.receiverBottom);
- $self._assert_equals_(["bottom",anObject],["bottom",result]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shouldReturn:",{anObject:anObject,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "shouldReturn:and:and:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "anObject2", "anObject3"],
- 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 }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:", "assert:equals:"]
- }, function ($methodClass){ return function (anObject,anObject2,anObject3){
- var self=this,$self=this;
- var result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- result=[$recv($self.performBlock)._value_($self.receiverTop)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(["top",anObject],["top",result])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- result=[$recv($self.performBlock)._value_($self.receiverMiddle)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(["middle",anObject2],["middle",result])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- result=$recv($self.performBlock)._value_($self.receiverBottom);
- $self._assert_equals_(["bottom",anObject3],["bottom",result]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shouldReturn:and:and:",{anObject:anObject,anObject2:anObject2,anObject3:anObject3,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "targetClassBottom",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "targetClassBottom\x0a\x09^ JavaScriptException",
- referencedClasses: ["JavaScriptException"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.JavaScriptException;
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "targetClassMiddle",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "targetClassMiddle\x0a\x09^ Error",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.Error;
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "targetClassTop",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "targetClassTop\x0a\x09^ Object",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.Object;
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "tearDown",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "tearDown\x0a\x09[ self deinstallTop ] on: Error do: [ ].\x0a\x09[ self deinstallMiddle ] on: Error do: [ ].\x0a\x09[ self deinstallBottom ] on: Error do: [ ]",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:do:", "deinstallTop", "deinstallMiddle", "deinstallBottom"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._deinstallTop();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._on_do_($globals.Error,(function(){
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["on:do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._deinstallMiddle();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }))._on_do_($globals.Error,(function(){
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["on:do:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._deinstallBottom();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
- //>>excludeEnd("ctx");
- }))._on_do_($globals.Error,(function(){
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"tearDown",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "testMNU11",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["foo", "shouldMNU", "installTop:", "deinstallTop"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.performBlock=(function(x){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(x)._foo();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
- //>>excludeEnd("ctx");
- });
- [$self._shouldMNU()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["shouldMNU"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._installTop_("foo ^ false")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["installTop:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._installTop_("foo ^ true");
- $self._deinstallTop();
- $self._shouldMNU();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMNU11",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "testMNU22",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["foo", "shouldMNU", "installMiddle:", "deinstallMiddle"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.performBlock=(function(x){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(x)._foo();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
- //>>excludeEnd("ctx");
- });
- [$self._shouldMNU()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["shouldMNU"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._installMiddle_("foo ^ false")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["installMiddle:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._installMiddle_("foo ^ true");
- $self._deinstallMiddle();
- $self._shouldMNU();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMNU22",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addMethod(
- $core.method({
- selector: "testReturns1",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["foo", "installTop:", "shouldReturn:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.performBlock=(function(x){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(x)._foo();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({x:x},$ctx1,1)});
- //>>excludeEnd("ctx");
- });
- [$self._installTop_("foo ^ false")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["installTop:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._shouldReturn_(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["shouldReturn:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._installTop_("foo ^ true");
- $self._shouldReturn_(true);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testReturns1",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.MethodInheritanceTest);
- $core.addClass("NumberTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "testAbs",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAbs\x0a\x09self assert: 4 abs equals: 4.\x0a\x09self assert: -4 abs equals: 4",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "abs"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([(4)._abs()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["abs"]=1
- //>>excludeEnd("ctx");
- ][0],(4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((-4)._abs(),(4));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAbs",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testArithmetic",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "+", "-", "/", "*", "//", "\x5c\x5c"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([(1.5).__plus((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["+"]=1
- //>>excludeEnd("ctx");
- ][0],(2.5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(2).__minus((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["-"]=1
- //>>excludeEnd("ctx");
- ][0],(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_((-2).__minus((1)),(-3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_((12).__slash((2)),(6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(3).__star((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["*"]=1
- //>>excludeEnd("ctx");
- ][0],(12))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=5
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_((7).__slash_slash((2)),(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=6
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_((7).__backslash_backslash((2)),(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=7
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([(1).__plus((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["+"]=2
- //>>excludeEnd("ctx");
- ][0]).__star((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["*"]=2
- //>>excludeEnd("ctx");
- ][0],(9))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=8
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((1).__plus((2).__star((3))),(7));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testArithmetic",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testAsNumber",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAsNumber\x0a\x09self assert: 3 asNumber equals: 3.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "asNumber"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_((3)._asNumber(),(3));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAsNumber",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testBetweenAnd",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testBetweenAnd\x0a\x09self assert: (4 between: 3 and: 5).\x0a\x09self assert: (1 between: 5 and: 6) not.\x0a\x09self assert: (90 between: 67 and: 87) not.\x0a\x09self assert: (1 between: 1 and: 1).",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "between:and:", "not"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_([(4)._between_and_((3),(5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["between:and:"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv([(1)._between_and_((5),(6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["between:and:"]=2
- //>>excludeEnd("ctx");
- ][0])._not()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["not"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_($recv([(90)._between_and_((67),(87))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["between:and:"]=3
- //>>excludeEnd("ctx");
- ][0])._not())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_((1)._between_and_((1),(1)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testBetweenAnd",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testBitAnd",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testBitAnd\x0a\x09self assert: (15 bitAnd: 2) equals: 2.\x0a\x09self assert: (15 bitAnd: 15) equals: 15.\x0a\x09self assert: (-1 bitAnd: 1021) equals: 1021",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "bitAnd:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([(15)._bitAnd_((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["bitAnd:"]=1
- //>>excludeEnd("ctx");
- ][0],(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(15)._bitAnd_((15))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["bitAnd:"]=2
- //>>excludeEnd("ctx");
- ][0],(15))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((-1)._bitAnd_((1021)),(1021));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testBitAnd",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testBitNot",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testBitNot\x0a\x09self assert: 2 bitNot equals: -3.\x0a\x09self assert: -1 bitNot equals: 0.\x0a\x09self assert: -1022 bitNot equals: 1021",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "bitNot"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([(2)._bitNot()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["bitNot"]=1
- //>>excludeEnd("ctx");
- ][0],(-3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(-1)._bitNot()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["bitNot"]=2
- //>>excludeEnd("ctx");
- ][0],(0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((-1022)._bitNot(),(1021));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testBitNot",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testBitOr",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testBitOr\x0a\x09self assert: (2 bitOr: 4) equals: 6.\x0a\x09self assert: (7 bitOr: 2) equals: 7.\x0a\x09self assert: (-1 bitOr: 1021) equals: -1",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "bitOr:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([(2)._bitOr_((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["bitOr:"]=1
- //>>excludeEnd("ctx");
- ][0],(6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(7)._bitOr_((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["bitOr:"]=2
- //>>excludeEnd("ctx");
- ][0],(7))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((-1)._bitOr_((1021)),(-1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testBitOr",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testBitXor",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testBitXor\x0a\x09self assert: (2 bitXor: 4) equals: 6.\x0a\x09self assert: (7 bitXor: 2) equals: 5.\x0a\x09self assert: (-1 bitXor: 1021) equals: -1022.\x0a\x09self assert: (91 bitXor: 91) equals: 0",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "bitXor:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([(2)._bitXor_((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["bitXor:"]=1
- //>>excludeEnd("ctx");
- ][0],(6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(7)._bitXor_((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["bitXor:"]=2
- //>>excludeEnd("ctx");
- ][0],(5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(-1)._bitXor_((1021))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["bitXor:"]=3
- //>>excludeEnd("ctx");
- ][0],(-1022))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((91)._bitXor_((91)),(0));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testBitXor",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testCeiling",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "ceiling"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([(1.2)._ceiling()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["ceiling"]=1
- //>>excludeEnd("ctx");
- ][0],(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(-1.2)._ceiling()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["ceiling"]=2
- //>>excludeEnd("ctx");
- ][0],(-1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((1)._ceiling(),(1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCeiling",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testComparison",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", ">", "<", "deny:", ">=", "<="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_([(3).__gt((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([(2).__lt((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["<"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_((3).__lt((2)))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_((2).__gt((3)));
- [$self._assert_([(3).__gt_eq((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_((3.1).__gt_eq((3)))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([(3).__lt_eq((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["<="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_((3).__lt_eq((3.1)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testComparison",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testCopying",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCopying\x0a\x09self assert: 1 copy == 1.\x0a\x09self assert: 1 deepCopy == 1",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "==", "copy", "deepCopy"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_([$recv((1)._copy()).__eq_eq((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_($recv((1)._deepCopy()).__eq_eq((1)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCopying",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testDegreesToRadians",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDegreesToRadians\x0a\x09self assert: (180 degreesToRadians - Number pi) abs <= 0.01.",
- referencedClasses: ["Number"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "<=", "abs", "-", "degreesToRadians", "pi"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv($recv($recv((180)._degreesToRadians()).__minus($recv($globals.Number)._pi()))._abs()).__lt_eq((0.01)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDegreesToRadians",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testEquality",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 = ''",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "=", "deny:", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_([(1).__eq((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([(0).__eq((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([(1).__eq((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv([(1)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([(1).__eq([(1)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=5
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_([$recv([(1)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=3
- //>>excludeEnd("ctx");
- ][0]).__eq((1)._yourself())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=6
- //>>excludeEnd("ctx");
- ][0]);
- [$self._deny_([(0).__eq(false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=7
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([false.__eq((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=8
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_(["".__eq((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=9
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_((0).__eq(""));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testEquality",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testFloor",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "floor"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([(1.2)._floor()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["floor"]=1
- //>>excludeEnd("ctx");
- ][0],(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(-1.2)._floor()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["floor"]=2
- //>>excludeEnd("ctx");
- ][0],(-2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((1)._floor(),(1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testFloor",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testHexNumbers",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "truncated"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_((9),(9))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(10)._truncated()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["truncated"]=1
- //>>excludeEnd("ctx");
- ][0],(10))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(11)._truncated()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["truncated"]=2
- //>>excludeEnd("ctx");
- ][0],(11))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(12)._truncated()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["truncated"]=3
- //>>excludeEnd("ctx");
- ][0],(12))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(13)._truncated()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["truncated"]=4
- //>>excludeEnd("ctx");
- ][0],(13))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=5
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(14)._truncated()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["truncated"]=5
- //>>excludeEnd("ctx");
- ][0],(14))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=6
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((15)._truncated(),(15));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testHexNumbers",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testIdentity",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "==", "deny:", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_([(1).__eq_eq((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([(0).__eq_eq((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([(1).__eq_eq((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv([(1)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq_eq((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([(1).__eq_eq([(1)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=5
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_([$recv([(1)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=3
- //>>excludeEnd("ctx");
- ][0]).__eq_eq((1)._yourself())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=6
- //>>excludeEnd("ctx");
- ][0]);
- $self._deny_((1).__eq_eq((2)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIdentity",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testInvalidHexNumbers",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: ["MessageNotUnderstood"],
- //>>excludeEnd("ide");
- pragmas: [],
- 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"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rG();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rg();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rH();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rh();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rI();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=5
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._ri();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,6)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=6
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rJ();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,7)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=7
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rj();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,8)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=8
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rK();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,9)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=9
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rk();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,10)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=10
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rL();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,11)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=11
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rl();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,12)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=12
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rM();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,13)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=13
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rm();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,14)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=14
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rN();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,15)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=15
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rn();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,16)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=16
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rO();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,17)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=17
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._ro();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,18)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=18
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rP();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,19)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=19
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rp();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,20)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=20
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rQ();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,21)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=21
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rq();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,22)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=22
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rR();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,23)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=23
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rr();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,24)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=24
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rS();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,25)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=25
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rs();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,26)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=26
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rT();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,27)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=27
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rt();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,28)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=28
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rU();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,29)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=29
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._ru();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,30)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=30
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rV();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,31)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=31
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rv();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,32)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=32
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rW();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,33)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=33
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rw();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,34)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=34
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rX();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,35)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=35
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rx();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,36)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=36
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rY();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,37)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=37
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._ry();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,38)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=38
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rZ();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,39)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=39
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (16)._rz();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,40)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=40
- //>>excludeEnd("ctx");
- ][0];
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (11259375)._Z();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,41)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testInvalidHexNumbers",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testLog",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: ["Number"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "log", "log:", "ln", "e"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_((10000)._log(),(4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_((512)._log_((2)),(9))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($recv($globals.Number)._e())._ln(),(1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testLog",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testMinMax",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testMinMax\x0a\x09\x0a\x09self assert: (2 max: 5) equals: 5.\x0a\x09self assert: (2 min: 5) equals: 2.\x0a\x09self assert: (2 min: 5 max: 3) equals: 3.\x0a\x09self assert: (7 min: 5 max: 3) equals: 5.\x0a\x09self assert: (4 min: 5 max: 3) equals: 4.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "max:", "min:", "min:max:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_((2)._max_((5)),(5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_((2)._min_((5)),(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(2)._min_max_((5),(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["min:max:"]=1
- //>>excludeEnd("ctx");
- ][0],(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(7)._min_max_((5),(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["min:max:"]=2
- //>>excludeEnd("ctx");
- ][0],(5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((4)._min_max_((5),(3)),(4));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMinMax",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testNegated",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNegated\x0a\x09self assert: 3 negated equals: -3.\x0a\x09self assert: -3 negated equals: 3",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "negated"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([(3)._negated()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["negated"]=1
- //>>excludeEnd("ctx");
- ][0],(-3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((-3)._negated(),(3));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNegated",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testPrintShowingDecimalPlaces",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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'.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "printShowingDecimalPlaces:", "negated"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([(23)._printShowingDecimalPlaces_((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=1
- //>>excludeEnd("ctx");
- ][0],"23.00")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(23.5698)._printShowingDecimalPlaces_((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=2
- //>>excludeEnd("ctx");
- ][0],"23.57")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([(234.567)._negated()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["negated"]=1
- //>>excludeEnd("ctx");
- ][0])._printShowingDecimalPlaces_((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=3
- //>>excludeEnd("ctx");
- ][0],"-234.56700")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(23.4567)._printShowingDecimalPlaces_((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=4
- //>>excludeEnd("ctx");
- ][0],"23")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(23.5567)._printShowingDecimalPlaces_((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=5
- //>>excludeEnd("ctx");
- ][0],"24")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=5
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([(23.4567)._negated()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["negated"]=2
- //>>excludeEnd("ctx");
- ][0])._printShowingDecimalPlaces_((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=6
- //>>excludeEnd("ctx");
- ][0],"-23")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=6
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([(23.5567)._negated()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["negated"]=3
- //>>excludeEnd("ctx");
- ][0])._printShowingDecimalPlaces_((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=7
- //>>excludeEnd("ctx");
- ][0],"-24")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=7
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(100000000)._printShowingDecimalPlaces_((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=8
- //>>excludeEnd("ctx");
- ][0],"100000000.0")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=8
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(0.98)._printShowingDecimalPlaces_((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=9
- //>>excludeEnd("ctx");
- ][0],"0.98000")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=9
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv((0.98)._negated())._printShowingDecimalPlaces_((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=10
- //>>excludeEnd("ctx");
- ][0],"-0.98")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=10
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(2.567)._printShowingDecimalPlaces_((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=11
- //>>excludeEnd("ctx");
- ][0],"2.57")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=11
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(-2.567)._printShowingDecimalPlaces_((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printShowingDecimalPlaces:"]=12
- //>>excludeEnd("ctx");
- ][0],"-2.57")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=12
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((0)._printShowingDecimalPlaces_((2)),"0.00");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPrintShowingDecimalPlaces",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testPrintStringBase",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testPrintStringBase\x0a\x09self assert: (15 printStringBase: 2) equals: '1111'.\x0a\x09self assert: (15 printStringBase: 16) equals: 'f'.\x0a\x09self assert: (256 printStringBase: 16) equals: '100'.\x0a\x09self assert: (256 printStringBase: 2) equals: '100000000'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "printStringBase:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([(15)._printStringBase_((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printStringBase:"]=1
- //>>excludeEnd("ctx");
- ][0],"1111")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(15)._printStringBase_((16))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printStringBase:"]=2
- //>>excludeEnd("ctx");
- ][0],"f")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(256)._printStringBase_((16))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["printStringBase:"]=3
- //>>excludeEnd("ctx");
- ][0],"100")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((256)._printStringBase_((2)),"100000000");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPrintStringBase",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testRadiansToDegrees",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRadiansToDegrees\x0a\x09self assert: (Number pi radiansToDegrees - 180) abs <= 0.01.",
- referencedClasses: ["Number"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "<=", "abs", "-", "radiansToDegrees", "pi"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv($recv($recv($recv($recv($globals.Number)._pi())._radiansToDegrees()).__minus((180)))._abs()).__lt_eq((0.01)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRadiansToDegrees",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testRaisedTo",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "raisedTo:", "**"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([(2)._raisedTo_((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["raisedTo:"]=1
- //>>excludeEnd("ctx");
- ][0],(16))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(2)._raisedTo_((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["raisedTo:"]=2
- //>>excludeEnd("ctx");
- ][0],(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(2)._raisedTo_((-3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["raisedTo:"]=3
- //>>excludeEnd("ctx");
- ][0],(0.125))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_((4)._raisedTo_((0.5)),(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((2).__star_star((4)),(16));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRaisedTo",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testRounded",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "rounded"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([(3)._rounded()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["rounded"]=1
- //>>excludeEnd("ctx");
- ][0],(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(3.212)._rounded()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["rounded"]=2
- //>>excludeEnd("ctx");
- ][0],(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((3.51)._rounded(),(4));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRounded",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testSign",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSign\x0a\x09self assert: 5 sign equals: 1.\x0a\x09self assert: 0 sign equals: 0.\x0a\x09self assert: -1.4 sign equals: -1.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "sign"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([(5)._sign()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sign"]=1
- //>>excludeEnd("ctx");
- ][0],(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(0)._sign()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sign"]=2
- //>>excludeEnd("ctx");
- ][0],(0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((-1.4)._sign(),(-1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSign",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testSqrt",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSqrt\x0a\x09\x0a\x09self assert: 4 sqrt equals: 2.\x0a\x09self assert: 16 sqrt equals: 4",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "sqrt"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([(4)._sqrt()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sqrt"]=1
- //>>excludeEnd("ctx");
- ][0],(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((16)._sqrt(),(4));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSqrt",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testSquared",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSquared\x0a\x09\x0a\x09self assert: 4 squared equals: 16",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "squared"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_((4)._squared(),(16));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSquared",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testTimesRepeat",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timesRepeat:", "+", "assert:equals:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var i;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- i=(0);
- [(0)._timesRepeat_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- i=[$recv(i).__plus((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["+"]=1
- //>>excludeEnd("ctx");
- ][0];
- return i;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["timesRepeat:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_(i,(0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- (5)._timesRepeat_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- i=$recv(i).__plus((1));
- return i;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $self._assert_equals_(i,(5));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testTimesRepeat",{i:i})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testTo",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testTo\x0a\x09self assert: (1 to: 5) equals: #(1 2 3 4 5)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "to:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_((1)._to_((5)),[(1), (2), (3), (4), (5)]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testTo",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testToBy",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "to:by:", "should:raise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_([(0)._to_by_((6),(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["to:by:"]=1
- //>>excludeEnd("ctx");
- ][0],[(0), (2), (4), (6)]);
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return (1)._to_by_((4),(0));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testToBy",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testTrigonometry",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testTrigonometry\x0a\x09self assert: 0 cos equals: 1.\x0a\x09self assert: 0 sin equals: 0.\x0a\x09self assert: 0 tan equals: 0.\x0a\x09self assert: 1 arcCos equals: 0.\x0a\x09self assert: 0 arcSin equals: 0.\x0a\x09self assert: 0 arcTan equals: 0.\x0a\x09\x0a\x09self assert: (0 arcTan: 1) equals: 0.\x0a\x09self assert: (1 arcTan: 0) equals: (Number pi / 2)",
- referencedClasses: ["Number"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "cos", "sin", "tan", "arcCos", "arcSin", "arcTan", "arcTan:", "/", "pi"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_((0)._cos(),(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_((0)._sin(),(0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_((0)._tan(),(0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_((1)._arcCos(),(0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_((0)._arcSin(),(0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=5
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_((0)._arcTan(),(0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=6
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(0)._arcTan_((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["arcTan:"]=1
- //>>excludeEnd("ctx");
- ][0],(0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=7
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((1)._arcTan_((0)),$recv($recv($globals.Number)._pi()).__slash((2)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testTrigonometry",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addMethod(
- $core.method({
- selector: "testTruncated",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "truncated"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([(3)._truncated()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["truncated"]=1
- //>>excludeEnd("ctx");
- ][0],(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([(3.212)._truncated()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["truncated"]=2
- //>>excludeEnd("ctx");
- ][0],(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_((3.51)._truncated(),(3));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testTruncated",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NumberTest);
- $core.addClass("ObjectMock", $globals.Object, "Kernel-Tests");
- $core.setSlots($globals.ObjectMock, ["foo", "bar"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.ObjectMock.comment="ObjectMock is there only to perform tests on classes.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "foo",
- protocol: "not yet classified",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "foo\x0a\x09^ foo",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.foo;
- }; }),
- $globals.ObjectMock);
- $core.addMethod(
- $core.method({
- selector: "foo:",
- protocol: "not yet classified",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject"],
- source: "foo: anObject\x0a\x09foo := anObject",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (anObject){
- var self=this,$self=this;
- $self.foo=anObject;
- return self;
- }; }),
- $globals.ObjectMock);
- $core.addClass("ObjectTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "notDefined",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "notDefined\x0a\x09<inlineJS: 'return void 0;'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return void 0;"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return void 0;;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"notDefined",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ObjectTest);
- $core.addMethod(
- $core.method({
- selector: "testBasicAccess",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "basicAt:put:", "assert:equals:", "basicAt:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var o;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- o=$recv($globals.Object)._new();
- $recv(o)._basicAt_put_("a",(1));
- [$self._assert_equals_([$recv(o)._basicAt_("a")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["basicAt:"]=1
- //>>excludeEnd("ctx");
- ][0],(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv(o)._basicAt_("b"),nil);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testBasicAccess",{o:o})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ObjectTest);
- $core.addMethod(
- $core.method({
- selector: "testBasicPerform",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "basicAt:put:", "+", "assert:equals:", "basicPerform:", "basicPerform:withArguments:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var o;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- o=$recv($globals.Object)._new();
- [$recv(o)._basicAt_put_("func",(function(){
- return "hello";
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["basicAt:put:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(o)._basicAt_put_("func2",(function(a){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(a).__plus((1));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({a:a},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- [$self._assert_equals_($recv(o)._basicPerform_("func"),"hello")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv(o)._basicPerform_withArguments_("func2",[(3)]),(4));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testBasicPerform",{o:o})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ObjectTest);
- $core.addMethod(
- $core.method({
- selector: "testDNU",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDNU\x0a\x09self should: [ Object new foo ] raise: MessageNotUnderstood",
- referencedClasses: ["Object", "MessageNotUnderstood"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "foo", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Object)._new())._foo();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDNU",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ObjectTest);
- $core.addMethod(
- $core.method({
- selector: "testEquality",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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)",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "deny:", "=", "assert:", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var o;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- o=[$recv($globals.Object)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_([$recv(o).__eq($recv($globals.Object)._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0]);
- [$self._assert_([$recv(o).__eq(o)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv([$recv(o)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq(o)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_($recv(o).__eq($recv(o)._yourself()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testEquality",{o:o})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ObjectTest);
- $core.addMethod(
- $core.method({
- selector: "testHalt",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testHalt\x0a\x09self should: [ Object new halt ] raise: Error",
- referencedClasses: ["Object", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "halt", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Object)._new())._halt();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testHalt",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ObjectTest);
- $core.addMethod(
- $core.method({
- selector: "testIdentity",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "deny:", "==", "assert:", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var o;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- o=[$recv($globals.Object)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_([$recv(o).__eq_eq($recv($globals.Object)._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=1
- //>>excludeEnd("ctx");
- ][0]);
- [$self._assert_([$recv(o).__eq_eq(o)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv([$recv(o)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq_eq(o)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_($recv(o).__eq_eq($recv(o)._yourself()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIdentity",{o:o})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ObjectTest);
- $core.addMethod(
- $core.method({
- selector: "testIfNil",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deny:", "isNil", "new", "=", "ifNil:", "assert:equals:", "ifNotNil:", "ifNil:ifNotNil:", "ifNotNil:ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3,$4,$5,$6,$7,$8;
- [$self._deny_($recv([$recv($globals.Object)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])._isNil())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $1=[$recv($globals.Object)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- $2=true;
- } else {
- $2=$1;
- }
- $self._deny_($recv($2).__eq(true));
- $3=[$recv($globals.Object)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0];
- if($3 == null || $3.a$nil){
- $4=$3;
- } else {
- $4=true;
- }
- [$self._assert_equals_($4,true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $5=[$recv($globals.Object)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=4
- //>>excludeEnd("ctx");
- ][0];
- if($5 == null || $5.a$nil){
- $6=false;
- } else {
- $6=true;
- }
- [$self._assert_equals_($6,true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $7=$recv($globals.Object)._new();
- if($7 == null || $7.a$nil){
- $8=false;
- } else {
- $8=true;
- }
- $self._assert_equals_($8,true);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIfNil",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ObjectTest);
- $core.addMethod(
- $core.method({
- selector: "testInstVars",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testInstVars\x0a\x09| o |\x0a\x09o := ObjectMock new.\x0a\x09self assert: (o instVarNamed: #foo) equals: nil.\x0a\x0a\x09o instVarNamed: #foo put: 1.\x0a\x09self assert: (o instVarNamed: #foo) equals: 1.\x0a\x09self assert: (o instVarNamed: 'foo') equals: 1",
- referencedClasses: ["ObjectMock"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "assert:equals:", "instVarNamed:", "instVarNamed:put:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var o;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- o=$recv($globals.ObjectMock)._new();
- [$self._assert_equals_([$recv(o)._instVarNamed_("foo")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["instVarNamed:"]=1
- //>>excludeEnd("ctx");
- ][0],nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(o)._instVarNamed_put_("foo",(1));
- [$self._assert_equals_([$recv(o)._instVarNamed_("foo")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["instVarNamed:"]=2
- //>>excludeEnd("ctx");
- ][0],(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv(o)._instVarNamed_("foo"),(1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testInstVars",{o:o})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ObjectTest);
- $core.addMethod(
- $core.method({
- selector: "testNilUndefined",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNilUndefined\x0a\x09\x22nil in Smalltalk is the undefined object in JS\x22\x0a\x0a\x09self assert: self notDefined equals: nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "notDefined"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($self._notDefined(),nil);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNilUndefined",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ObjectTest);
- $core.addMethod(
- $core.method({
- selector: "testYourself",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testYourself\x0a\x09| o |\x0a\x09o := ObjectMock new.\x0a\x09self assert: o yourself == o",
- referencedClasses: ["ObjectMock"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "assert:", "==", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var o;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- o=$recv($globals.ObjectMock)._new();
- $self._assert_($recv($recv(o)._yourself()).__eq_eq(o));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testYourself",{o:o})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ObjectTest);
- $core.addClass("PointTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "testAccessing",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Point"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "x", "x:y:", "y", "x:", "new", "y:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([$recv($globals.Point)._x_y_((3),(4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x:y:"]=1
- //>>excludeEnd("ctx");
- ][0])._x()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x"]=1
- //>>excludeEnd("ctx");
- ][0],(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($recv($globals.Point)._x_y_((3),(4)))._y()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["y"]=1
- //>>excludeEnd("ctx");
- ][0],(4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv($recv([$recv($globals.Point)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])._x_((3)))._x(),(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($recv($recv($globals.Point)._new())._y_((4)))._y(),(4));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAccessing",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PointTest);
- $core.addMethod(
- $core.method({
- selector: "testAngle",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAngle\x0a\x09self assert: (-1@0) angle equals: Number pi",
- referencedClasses: ["Number"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "angle", "@", "pi"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv((-1).__at((0)))._angle(),$recv($globals.Number)._pi());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAngle",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PointTest);
- $core.addMethod(
- $core.method({
- selector: "testArithmetic",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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)",
- referencedClasses: ["Point"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "*", "@", "x:y:", "+", "-", "/"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_($recv([(3).__at((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=1
- //>>excludeEnd("ctx");
- ][0]).__star([(3).__at((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=2
- //>>excludeEnd("ctx");
- ][0]),[$recv($globals.Point)._x_y_((9),(16))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x:y:"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv([(3).__at((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=3
- //>>excludeEnd("ctx");
- ][0]).__plus([(3).__at((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=4
- //>>excludeEnd("ctx");
- ][0]),[$recv($globals.Point)._x_y_((6),(8))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x:y:"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv([(3).__at((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=5
- //>>excludeEnd("ctx");
- ][0]).__minus([(3).__at((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=6
- //>>excludeEnd("ctx");
- ][0]),[$recv($globals.Point)._x_y_((0),(0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x:y:"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv([(6).__at((8))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=7
- //>>excludeEnd("ctx");
- ][0]).__slash((3).__at((4))),$recv($globals.Point)._x_y_((2),(2)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testArithmetic",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PointTest);
- $core.addMethod(
- $core.method({
- selector: "testAt",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAt\x0a\x09self assert: 3@4 equals: (Point x: 3 y: 4)",
- referencedClasses: ["Point"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "@", "x:y:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_((3).__at((4)),$recv($globals.Point)._x_y_((3),(4)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAt",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PointTest);
- $core.addMethod(
- $core.method({
- selector: "testComparison",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "<", "@", "deny:", "<=", ">", ">="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_([$recv([(3).__at((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=1
- //>>excludeEnd("ctx");
- ][0]).__lt([(4).__at((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["<"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_($recv([(3).__at((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=3
- //>>excludeEnd("ctx");
- ][0]).__lt([(4).__at((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=4
- //>>excludeEnd("ctx");
- ][0]))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv([(4).__at((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=5
- //>>excludeEnd("ctx");
- ][0]).__lt_eq([(4).__at((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=6
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["<="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_($recv([(4).__at((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=7
- //>>excludeEnd("ctx");
- ][0]).__lt_eq([(3).__at((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=8
- //>>excludeEnd("ctx");
- ][0]))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv([(5).__at((6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=9
- //>>excludeEnd("ctx");
- ][0]).__gt([(4).__at((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=10
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_($recv([(5).__at((6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=11
- //>>excludeEnd("ctx");
- ][0]).__gt([(6).__at((6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=12
- //>>excludeEnd("ctx");
- ][0]))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_([$recv([(4).__at((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=13
- //>>excludeEnd("ctx");
- ][0]).__gt_eq([(4).__at((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=14
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[">="]=1
- //>>excludeEnd("ctx");
- ][0]);
- $self._deny_($recv([(4).__at((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=15
- //>>excludeEnd("ctx");
- ][0]).__gt_eq((5).__at((5))));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testComparison",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PointTest);
- $core.addMethod(
- $core.method({
- selector: "testDotProduct",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDotProduct\x0a\x09self assert: (2@3 dotProduct: 3@7) equals: 27",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "dotProduct:", "@"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv([(2).__at((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=1
- //>>excludeEnd("ctx");
- ][0])._dotProduct_((3).__at((7))),(27));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDotProduct",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PointTest);
- $core.addMethod(
- $core.method({
- selector: "testEgality",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testEgality\x0a\x09self assert: (3@4 = (3@4)).\x0a\x09self deny: 3@5 = (3@6)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "=", "@", "deny:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_([$recv([(3).__at((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq([(3).__at((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0]);
- $self._deny_($recv([(3).__at((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=3
- //>>excludeEnd("ctx");
- ][0]).__eq((3).__at((6))));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testEgality",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PointTest);
- $core.addMethod(
- $core.method({
- selector: "testNew",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Point"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "y", "x:", "new", "deny:", "=", "x", "y:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([$recv([$recv($globals.Point)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0])._x_((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x:"]=1
- //>>excludeEnd("ctx");
- ][0])._y()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["y"]=1
- //>>excludeEnd("ctx");
- ][0],nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([$recv([$recv($recv([$recv($globals.Point)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0])._x_((3)))._x()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["x"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv([$recv([$recv($globals.Point)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=3
- //>>excludeEnd("ctx");
- ][0])._y_((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["y:"]=1
- //>>excludeEnd("ctx");
- ][0])._x(),nil);
- $self._deny_($recv($recv($recv($recv($globals.Point)._new())._y_((4)))._y()).__eq((0)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNew",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PointTest);
- $core.addMethod(
- $core.method({
- selector: "testNormal",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNormal\x0a\x09self assert: (1@0) normal equals: 0@1",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "normal", "@"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($recv([(1).__at((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=1
- //>>excludeEnd("ctx");
- ][0])._normal(),(0).__at((1)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNormal",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PointTest);
- $core.addMethod(
- $core.method({
- selector: "testNormalized",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNormalized\x0a\x09self assert: (0@2) normalized equals: 0@1.\x0a\x09self assert: (0@0) normalized equals: 0@0.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "normalized", "@"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([(0).__at((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=1
- //>>excludeEnd("ctx");
- ][0])._normalized()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["normalized"]=1
- //>>excludeEnd("ctx");
- ][0],[(0).__at((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv([(0).__at((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=3
- //>>excludeEnd("ctx");
- ][0])._normalized(),(0).__at((0)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNormalized",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PointTest);
- $core.addMethod(
- $core.method({
- selector: "testPolarCoordinates",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testPolarCoordinates\x0a\x09self assert: (1@0) r equals: 1.\x0a\x09self assert: (0@0) r equals: 0.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "r", "@"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([(1).__at((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=1
- //>>excludeEnd("ctx");
- ][0])._r()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["r"]=1
- //>>excludeEnd("ctx");
- ][0],(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv((0).__at((0)))._r(),(0));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPolarCoordinates",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PointTest);
- $core.addMethod(
- $core.method({
- selector: "testRectangleCreation",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRectangleCreation\x0a\x09self assert: (1@1 corner: 2@2) equals: (Rectangle origin: 1@1 corner: 2@2).\x0a\x09self assert: (1@1 rectangle: 2@2) equals: (Rectangle point: 1@1 point: 2@2).\x0a\x09self assert: (1@1 extent: 2@2) equals: (Rectangle origin: 1@1 extent: 2@2)",
- referencedClasses: ["Rectangle"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "corner:", "@", "origin:corner:", "rectangle:", "point:point:", "extent:", "origin:extent:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_($recv([(1).__at((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=1
- //>>excludeEnd("ctx");
- ][0])._corner_([(2).__at((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=2
- //>>excludeEnd("ctx");
- ][0]),$recv($globals.Rectangle)._origin_corner_([(1).__at((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=3
- //>>excludeEnd("ctx");
- ][0],[(2).__at((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=4
- //>>excludeEnd("ctx");
- ][0]))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv([(1).__at((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=5
- //>>excludeEnd("ctx");
- ][0])._rectangle_([(2).__at((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=6
- //>>excludeEnd("ctx");
- ][0]),$recv($globals.Rectangle)._point_point_([(1).__at((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=7
- //>>excludeEnd("ctx");
- ][0],[(2).__at((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=8
- //>>excludeEnd("ctx");
- ][0]))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv([(1).__at((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=9
- //>>excludeEnd("ctx");
- ][0])._extent_([(2).__at((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=10
- //>>excludeEnd("ctx");
- ][0]),$recv($globals.Rectangle)._origin_extent_([(1).__at((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=11
- //>>excludeEnd("ctx");
- ][0],(2).__at((2))));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRectangleCreation",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PointTest);
- $core.addMethod(
- $core.method({
- selector: "testTranslateBy",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "translateBy:", "@", "negated"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv([(3).__at((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=1
- //>>excludeEnd("ctx");
- ][0])._translateBy_([(0).__at((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["translateBy:"]=1
- //>>excludeEnd("ctx");
- ][0],[(3).__at((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([(3).__at((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=4
- //>>excludeEnd("ctx");
- ][0])._translateBy_([(0).__at([(1)._negated()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["negated"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=5
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["translateBy:"]=2
- //>>excludeEnd("ctx");
- ][0],[(3).__at((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=6
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([(3).__at((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=7
- //>>excludeEnd("ctx");
- ][0])._translateBy_([(2).__at((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=8
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["translateBy:"]=3
- //>>excludeEnd("ctx");
- ][0],[(5).__at((6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=9
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv([(3).__at((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=10
- //>>excludeEnd("ctx");
- ][0])._translateBy_([$recv((3)._negated()).__at((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=11
- //>>excludeEnd("ctx");
- ][0]),(0).__at((3)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testTranslateBy",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PointTest);
- $core.addClass("QueueTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "testNextIfAbsent",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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'",
- referencedClasses: ["Queue"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "nextPut:", "assert:", "=", "nextIfAbsent:", "deny:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var queue;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- queue=$recv($globals.Queue)._new();
- $recv(queue)._nextPut_("index1");
- $self._assert_([$recv([$recv(queue)._nextIfAbsent_("empty")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextIfAbsent:"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq("index1")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0]);
- $self._deny_($recv($recv(queue)._nextIfAbsent_("empty")).__eq("index1"));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNextIfAbsent",{queue:queue})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.QueueTest);
- $core.addMethod(
- $core.method({
- selector: "testQueueNext",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Queue", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "nextPut:", "assert:", "=", "next", "deny:", "should:raise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var queue;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- queue=$recv($globals.Queue)._new();
- $1=queue;
- [$recv($1)._nextPut_("index1")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["nextPut:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._nextPut_("index2");
- $self._assert_([$recv([$recv(queue)._next()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["next"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq("index1")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0]);
- $self._deny_($recv([$recv(queue)._next()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["next"]=2
- //>>excludeEnd("ctx");
- ][0]).__eq("index"));
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(queue)._next();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testQueueNext",{queue:queue})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.QueueTest);
- $core.addClass("RandomTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "testAtRandomNumber",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timesRepeat:", "atRandom", "assert:", ">", "<"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var val;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- (100)._timesRepeat_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- val=(10)._atRandom();
- [$self._assert_($recv(val).__gt((0)))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $self._assert_($recv(val).__lt((11)));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAtRandomNumber",{val:val})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.RandomTest);
- $core.addMethod(
- $core.method({
- selector: "testAtRandomSequenceableCollection",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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].",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timesRepeat:", "atRandom", "assert:", "|", "="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var val;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- (100)._timesRepeat_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- val="abc"._atRandom();
- return $self._assert_([$recv($recv([$recv(val).__eq("a")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0]).__or([$recv(val).__eq("b")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["="]=2
- //>>excludeEnd("ctx");
- ][0])).__or($recv(val).__eq("c"))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["|"]=1
- //>>excludeEnd("ctx");
- ][0]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAtRandomSequenceableCollection",{val:val})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.RandomTest);
- $core.addMethod(
- $core.method({
- selector: "textNext",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ]",
- referencedClasses: ["Random"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timesRepeat:", "next", "new", "assert:", ">=", "<", "deny:", "="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- (10000)._timesRepeat_((function(){
- var current,next;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- next=$recv($recv($globals.Random)._new())._next();
- [$self._assert_($recv(next).__gt_eq((0)))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_($recv(next).__lt((1)));
- $self._deny_([$recv(current).__eq(next)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0]);
- return $recv(next).__eq(current);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({current:current,next:next},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"textNext",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.RandomTest);
- $core.addClass("RectangleTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "testContainsPoint",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testContainsPoint\x0a\x09| rect |\x0a\x09rect := Rectangle origin: 0@0 corner: 4@4.\x0a\x09\x0a\x09self assert: (rect containsPoint: 1@2).\x0a\x09self assert: (rect containsPoint: 5@4) not.",
- referencedClasses: ["Rectangle"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["origin:corner:", "@", "assert:", "containsPoint:", "not"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var rect;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- rect=$recv($globals.Rectangle)._origin_corner_([(0).__at((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=1
- //>>excludeEnd("ctx");
- ][0],[(4).__at((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=2
- //>>excludeEnd("ctx");
- ][0]);
- [$self._assert_([$recv(rect)._containsPoint_([(1).__at((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["containsPoint:"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_($recv($recv(rect)._containsPoint_((5).__at((4))))._not());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testContainsPoint",{rect:rect})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.RectangleTest);
- $core.addMethod(
- $core.method({
- selector: "testContainsRect",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testContainsRect\x0a\x09self assert: ((Rectangle origin: 0@0 corner: 6@6) containsRect: (Rectangle origin: 1@1 corner: 5@5)).\x0a\x09self assert: ((Rectangle origin: 0@0 corner: 6@6) containsRect: (Rectangle origin: 1@(-1) corner: 5@5)) not.",
- referencedClasses: ["Rectangle"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "containsRect:", "origin:corner:", "@", "not"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_([$recv([$recv($globals.Rectangle)._origin_corner_([(0).__at((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=1
- //>>excludeEnd("ctx");
- ][0],[(6).__at((6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["origin:corner:"]=1
- //>>excludeEnd("ctx");
- ][0])._containsRect_([$recv($globals.Rectangle)._origin_corner_([(1).__at((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=3
- //>>excludeEnd("ctx");
- ][0],[(5).__at((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["origin:corner:"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["containsRect:"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_($recv($recv([$recv($globals.Rectangle)._origin_corner_([(0).__at((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=5
- //>>excludeEnd("ctx");
- ][0],[(6).__at((6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=6
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["origin:corner:"]=3
- //>>excludeEnd("ctx");
- ][0])._containsRect_($recv($globals.Rectangle)._origin_corner_([(1).__at((-1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=7
- //>>excludeEnd("ctx");
- ][0],(5).__at((5)))))._not());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testContainsRect",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.RectangleTest);
- $core.addMethod(
- $core.method({
- selector: "testOriginExtent",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testOriginExtent\x0a\x09| rectangle |\x0a\x09rectangle := Rectangle origin: 3@4 extent: 7@8.\x0a\x09\x0a\x09self assert: rectangle origin equals: 3@4.\x0a\x09self assert: rectangle corner equals: 10@12.",
- referencedClasses: ["Rectangle"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["origin:extent:", "@", "assert:equals:", "origin", "corner"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var rectangle;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- rectangle=$recv($globals.Rectangle)._origin_extent_([(3).__at((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=1
- //>>excludeEnd("ctx");
- ][0],[(7).__at((8))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=2
- //>>excludeEnd("ctx");
- ][0]);
- [$self._assert_equals_($recv(rectangle)._origin(),[(3).__at((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv(rectangle)._corner(),(10).__at((12)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testOriginExtent",{rectangle:rectangle})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.RectangleTest);
- $core.addClass("StreamTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "collectionClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionClass\x0a\x09^ self class collectionClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collectionClass", "class"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._class())._collectionClass();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"collectionClass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StreamTest);
- $core.addMethod(
- $core.method({
- selector: "newCollection",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "newCollection\x0a\x09^ self collectionClass new",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "collectionClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._collectionClass())._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newCollection",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StreamTest);
- $core.addMethod(
- $core.method({
- selector: "newStream",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "newStream\x0a\x09^ self collectionClass new stream",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["stream", "new", "collectionClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($self._collectionClass())._new())._stream();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newStream",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StreamTest);
- $core.addMethod(
- $core.method({
- selector: "testAtStartAtEnd",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["newStream", "assert:", "atStart", "atEnd", "nextPutAll:", "newCollection", "deny:", "position:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var stream;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- stream=$self._newStream();
- [$self._assert_([$recv(stream)._atStart()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["atStart"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv(stream)._atEnd()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["atEnd"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(stream)._nextPutAll_($self._newCollection());
- $self._assert_([$recv(stream)._atEnd()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["atEnd"]=2
- //>>excludeEnd("ctx");
- ][0]);
- [$self._deny_([$recv(stream)._atStart()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["atStart"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(stream)._position_((1));
- [$self._deny_($recv(stream)._atEnd())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_($recv(stream)._atStart());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAtStartAtEnd",{stream:stream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StreamTest);
- $core.addMethod(
- $core.method({
- selector: "testContents",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["newStream", "nextPutAll:", "newCollection", "assert:equals:", "contents"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var stream;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- stream=$self._newStream();
- $recv(stream)._nextPutAll_([$self._newCollection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["newCollection"]=1
- //>>excludeEnd("ctx");
- ][0]);
- $self._assert_equals_($recv(stream)._contents(),$self._newCollection());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testContents",{stream:stream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StreamTest);
- $core.addMethod(
- $core.method({
- selector: "testIsEmpty",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["newStream", "assert:", "isEmpty", "nextPutAll:", "newCollection", "deny:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var stream;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- stream=$self._newStream();
- $self._assert_([$recv(stream)._isEmpty()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["isEmpty"]=1
- //>>excludeEnd("ctx");
- ][0]);
- $recv(stream)._nextPutAll_($self._newCollection());
- $self._deny_($recv(stream)._isEmpty());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIsEmpty",{stream:stream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StreamTest);
- $core.addMethod(
- $core.method({
- selector: "testPosition",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["newCollection", "newStream", "nextPutAll:", "assert:equals:", "position", "size", "position:", "next"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var collection,stream;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- collection=$self._newCollection();
- stream=$self._newStream();
- $recv(stream)._nextPutAll_(collection);
- [$self._assert_equals_([$recv(stream)._position()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["position"]=1
- //>>excludeEnd("ctx");
- ][0],$recv(collection)._size())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(stream)._position_((0));
- [$self._assert_equals_([$recv(stream)._position()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["position"]=2
- //>>excludeEnd("ctx");
- ][0],(0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._next()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["next"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(stream)._position()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["position"]=3
- //>>excludeEnd("ctx");
- ][0],(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv(stream)._next();
- $self._assert_equals_($recv(stream)._position(),(2));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPosition",{collection:collection,stream:stream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StreamTest);
- $core.addMethod(
- $core.method({
- selector: "testReading",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["newCollection", "newStream", "nextPutAll:", "position:", "do:", "assert:equals:", "next", "assert:", "isNil"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var stream,collection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- collection=$self._newCollection();
- stream=$self._newStream();
- $1=stream;
- $recv($1)._nextPutAll_(collection);
- $recv($1)._position_((0));
- $recv(collection)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._assert_equals_([$recv(stream)._next()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["next"]=1
- //>>excludeEnd("ctx");
- ][0],each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $self._assert_($recv($recv(stream)._next())._isNil());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testReading",{stream:stream,collection:collection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StreamTest);
- $core.addMethod(
- $core.method({
- selector: "testStreamContents",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testStreamContents",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.StreamTest);
- $core.addMethod(
- $core.method({
- selector: "testWrite",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["newCollection", "newStream", "do:", "<<", "assert:equals:", "contents"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var stream,collection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- collection=$self._newCollection();
- stream=$self._newStream();
- $recv(collection)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(stream).__lt_lt(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $self._assert_equals_($recv(stream)._contents(),collection);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testWrite",{stream:stream,collection:collection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StreamTest);
- $core.addMethod(
- $core.method({
- selector: "testWriting",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["newCollection", "newStream", "do:", "nextPut:", "assert:equals:", "contents", "nextPutAll:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var stream,collection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- collection=$self._newCollection();
- stream=[$self._newStream()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["newStream"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(collection)._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(stream)._nextPut_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- [$self._assert_equals_([$recv(stream)._contents()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["contents"]=1
- //>>excludeEnd("ctx");
- ][0],collection)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- stream=$self._newStream();
- $recv(stream)._nextPutAll_(collection);
- $self._assert_equals_($recv(stream)._contents(),collection);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testWriting",{stream:stream,collection:collection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StreamTest);
- $core.addMethod(
- $core.method({
- selector: "collectionClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionClass\x0a\x09^ nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return nil;
- }; }),
- $globals.StreamTest.a$cls);
- $core.addMethod(
- $core.method({
- selector: "isAbstract",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isAbstract\x0a\x09^ self collectionClass isNil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["isNil", "collectionClass"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._collectionClass())._isNil();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isAbstract",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.StreamTest.a$cls);
- $core.addClass("ArrayStreamTest", $globals.StreamTest, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "newCollection",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "newCollection\x0a\x09^ { true. 1. 3@4. 'foo' }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["@"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return [true,(1),(3).__at((4)),"foo"];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newCollection",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ArrayStreamTest);
- $core.addMethod(
- $core.method({
- selector: "collectionClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionClass\x0a\x09^ Array",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.Array;
- }; }),
- $globals.ArrayStreamTest.a$cls);
- $core.addClass("StringStreamTest", $globals.StreamTest, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "newCollection",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "newCollection\x0a\x09^ 'hello world'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "hello world";
- }; }),
- $globals.StringStreamTest);
- $core.addMethod(
- $core.method({
- selector: "collectionClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "collectionClass\x0a\x09^ String",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.String;
- }; }),
- $globals.StringStreamTest.a$cls);
- $core.addTrait("TClassBuildingTest", "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "assert:isClassCopyOf:",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "anotherClass"],
- source: "assert: aClass isClassCopyOf: anotherClass\x0a\x09self assert: aClass superclass == anotherClass superclass.\x0a\x09self deny: aClass slots == anotherClass slots.\x0a\x09self assert: aClass slots equals: anotherClass slots.\x0a\x09self deny: aClass class slots == anotherClass class slots.\x0a\x09self assert: aClass class slots equals: anotherClass class slots.\x0a\x09self assert: aClass package == anotherClass package.\x0a\x09self assert: (aClass package classes includes: aClass).\x0a\x09self assert: aClass methodDictionary keys equals: anotherClass methodDictionary keys",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "==", "superclass", "deny:", "slots", "assert:equals:", "class", "package", "includes:", "classes", "keys", "methodDictionary"]
- }, function ($methodClass){ return function (aClass,anotherClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_([$recv([$recv(aClass)._superclass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["superclass"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq_eq($recv(anotherClass)._superclass())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._deny_([$recv([$recv(aClass)._slots()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["slots"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq_eq([$recv(anotherClass)._slots()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["slots"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv(aClass)._slots()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["slots"]=3
- //>>excludeEnd("ctx");
- ][0],[$recv(anotherClass)._slots()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["slots"]=4
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_([$recv([$recv([$recv(aClass)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0])._slots()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["slots"]=5
- //>>excludeEnd("ctx");
- ][0]).__eq_eq([$recv([$recv(anotherClass)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=2
- //>>excludeEnd("ctx");
- ][0])._slots()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["slots"]=6
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=3
- //>>excludeEnd("ctx");
- ][0]);
- [$self._assert_equals_([$recv([$recv(aClass)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=3
- //>>excludeEnd("ctx");
- ][0])._slots()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["slots"]=7
- //>>excludeEnd("ctx");
- ][0],$recv($recv(anotherClass)._class())._slots())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_($recv([$recv(aClass)._package()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["package"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq_eq([$recv(anotherClass)._package()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["package"]=2
- //>>excludeEnd("ctx");
- ][0]))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_($recv($recv($recv(aClass)._package())._classes())._includes_(aClass));
- $self._assert_equals_([$recv([$recv(aClass)._methodDictionary()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["methodDictionary"]=1
- //>>excludeEnd("ctx");
- ][0])._keys()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["keys"]=1
- //>>excludeEnd("ctx");
- ][0],$recv($recv(anotherClass)._methodDictionary())._keys());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"assert:isClassCopyOf:",{aClass:aClass,anotherClass:anotherClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TClassBuildingTest);
- $core.addMethod(
- $core.method({
- selector: "assert:isJavaScriptInstanceOf:",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "aJavaScriptClass"],
- source: "assert: anObject isJavaScriptInstanceOf: aJavaScriptClass\x0a\x09self assert: (self is: anObject javaScriptInstanceOf: aJavaScriptClass)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "is:javaScriptInstanceOf:"]
- }, function ($methodClass){ return function (anObject,aJavaScriptClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($self._is_javaScriptInstanceOf_(anObject,aJavaScriptClass));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"assert:isJavaScriptInstanceOf:",{anObject:anObject,aJavaScriptClass:aJavaScriptClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TClassBuildingTest);
- $core.addMethod(
- $core.method({
- selector: "is:javaScriptInstanceOf:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["anObject", "aJavaScriptClass"],
- source: "is: anObject javaScriptInstanceOf: aJavaScriptClass\x0a\x09<inlineJS: 'return anObject instanceof aJavaScriptClass'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return anObject instanceof aJavaScriptClass"]]],
- messageSends: []
- }, function ($methodClass){ return function (anObject,aJavaScriptClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return anObject instanceof aJavaScriptClass;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"is:javaScriptInstanceOf:",{anObject:anObject,aJavaScriptClass:aJavaScriptClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TClassBuildingTest);
- $core.addMethod(
- $core.method({
- selector: "tearDown",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "tearDown\x0a\x09self theClass ifNotNil: [ :theClass |\x0a\x09\x09(Array streamContents: [ :s | theClass allSubclassesDo: [ :each | s nextPut: each ] ])\x0a\x09\x09\x09reverseDo: [ :each | Smalltalk removeClass: each ].\x0a\x09\x09Smalltalk removeClass: theClass ]",
- referencedClasses: ["Array", "Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:", "theClass", "reverseDo:", "streamContents:", "allSubclassesDo:", "nextPut:", "removeClass:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self._theClass();
- if($1 == null || $1.a$nil){
- $1;
- } else {
- var theClass;
- theClass=$1;
- $recv($recv($globals.Array)._streamContents_((function(s){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(theClass)._allSubclassesDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv(s)._nextPut_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({each:each},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({s:s},$ctx1,2)});
- //>>excludeEnd("ctx");
- })))._reverseDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv($globals.Smalltalk)._removeClass_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["removeClass:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,4)});
- //>>excludeEnd("ctx");
- }));
- $recv($globals.Smalltalk)._removeClass_(theClass);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"tearDown",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TClassBuildingTest);
- $core.addMethod(
- $core.method({
- selector: "theClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theClass\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"theClass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TClassBuildingTest);
- $core.addTrait("TKeyValueCollectionTest", "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "nonIndexesDo:",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "nonIndexesDo: aBlock\x0a\x09\x22Executes block a few times,\x0a\x09each time passing value that is known\x0a\x09not to be an index, as the first parameter\x22\x0a\x09\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nonIndexesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "sampleNewIndex",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"sampleNewIndex",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "samplesDo:",
- protocol: "fixture",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"samplesDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testAt",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ]",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nonIndexesDo:", "should:raise:", "at:", "collection", "samplesDo:", "assert:equals:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._nonIndexesDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._at_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["at:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $self._samplesDo_((function(index,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._assert_equals_($recv($self._collection())._at_(index),value);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAt",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testAtIfAbsent",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ].",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["nonIndexesDo:", "assert:equals:", "at:ifAbsent:", "collection", "sampleNewValue", "samplesDo:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._nonIndexesDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._at_ifAbsent_(each,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["sampleNewValue"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["at:ifAbsent:"]=1
- //>>excludeEnd("ctx");
- ][0],[$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["sampleNewValue"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $self._samplesDo_((function(index,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._assert_equals_($recv($self._collection())._at_ifAbsent_(index,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._sampleNewValue();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
- //>>excludeEnd("ctx");
- })),value);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAtIfAbsent",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testAtIfAbsentPut",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collection", "samplesDo:", "assert:equals:", "at:ifAbsentPut:", "sampleNewValue", "sampleNewIndex", "collectionWithNewValue"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var newCollection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- newCollection=[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._samplesDo_((function(index,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$self._assert_equals_([$recv(newCollection)._at_ifAbsentPut_(index,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["sampleNewValue"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["at:ifAbsentPut:"]=1
- //>>excludeEnd("ctx");
- ][0],value)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- [$self._assert_equals_(newCollection,$self._collection())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv(newCollection)._at_ifAbsentPut_($self._sampleNewIndex(),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["sampleNewValue"]=2
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- })),$self._sampleNewValue())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_(newCollection,$self._collectionWithNewValue());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAtIfAbsentPut",{newCollection:newCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testAtIfPresent",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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) ]",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "nonIndexesDo:", "assert:equals:", "at:ifPresent:", "collection", "assert:", "isNil", "samplesDo:", "at:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var visited,sentinel;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- sentinel=$recv($globals.Object)._new();
- $self._nonIndexesDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- visited=nil;
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._at_ifPresent_(each,(function(value1){
- visited=value1;
- return sentinel;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["at:ifPresent:"]=1
- //>>excludeEnd("ctx");
- ][0],nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $self._assert_($recv(visited)._isNil());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $self._samplesDo_((function(index,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- visited=nil;
- [$self._assert_equals_($recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])._at_ifPresent_(index,(function(value2){
- visited=value2;
- return sentinel;
- })),sentinel)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- return $self._assert_equals_(visited,$recv($self._collection())._at_(index));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAtIfPresent",{visited:visited,sentinel:sentinel})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testAtIfPresentIfAbsent",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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) ]",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "nonIndexesDo:", "assert:equals:", "at:ifPresent:ifAbsent:", "collection", "sampleNewValue", "assert:", "isNil", "samplesDo:", "at:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var visited,sentinel;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- sentinel=$recv($globals.Object)._new();
- $self._nonIndexesDo_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- visited=nil;
- [$self._assert_equals_([$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._at_ifPresent_ifAbsent_(each,(function(value1){
- visited=value1;
- return sentinel;
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return [$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["sampleNewValue"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["at:ifPresent:ifAbsent:"]=1
- //>>excludeEnd("ctx");
- ][0],[$self._sampleNewValue()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["sampleNewValue"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $self._assert_($recv(visited)._isNil());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- $self._samplesDo_((function(index,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- visited=nil;
- [$self._assert_equals_($recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=2
- //>>excludeEnd("ctx");
- ][0])._at_ifPresent_ifAbsent_(index,(function(value2){
- visited=value2;
- return sentinel;
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._sampleNewValue();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,6)});
- //>>excludeEnd("ctx");
- })),sentinel)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- return $self._assert_equals_(visited,$recv($self._collection())._at_(index));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,4)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAtIfPresentIfAbsent",{visited:visited,sentinel:sentinel})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testAtPut",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collection", "samplesDo:", "at:put:", "assert:equals:", "sampleNewIndex", "sampleNewValue", "collectionWithNewValue"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var newCollection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- newCollection=[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._samplesDo_((function(index,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(newCollection)._at_put_(index,value)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["at:put:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- [$self._assert_equals_(newCollection,$self._collection())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(newCollection)._at_put_($self._sampleNewIndex(),$self._sampleNewValue());
- $self._assert_equals_(newCollection,$self._collectionWithNewValue());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAtPut",{newCollection:newCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testIndexOf",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ]",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "indexOf:", "collection", "sampleNewValue", "samplesDo:", "assert:equals:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv([$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0])._indexOf_($self._sampleNewValue())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["indexOf:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- $self._samplesDo_((function(index,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._assert_equals_($recv($self._collection())._indexOf_(value),index);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIndexOf",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testIndexOfWithNull",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ]",
- referencedClasses: ["JSON"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "samplesDo:", "assert:equals:", "at:put:", "collection", "indexOf:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var jsNull;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- jsNull=$recv($globals.JSON)._parse_("null");
- $self._samplesDo_((function(index,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $1=$self._collection();
- $recv($1)._at_put_(index,jsNull);
- return $self._assert_equals_($recv($1)._indexOf_(jsNull),index);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({index:index,value:value},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIndexOfWithNull",{jsNull:jsNull})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollectionTest);
- $core.addMethod(
- $core.method({
- selector: "testWithIndexDo",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collection", "withIndexDo:", "assert:equals:", "at:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var collection;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- collection=[$self._collection()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collection"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($self._collection())._withIndexDo_((function(each,index){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._assert_equals_($recv(collection)._at_(index),each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each,index:index},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testWithIndexDo",{collection:collection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TKeyValueCollectionTest);
- $core.addClass("UndefinedTest", $globals.TestCase, "Kernel-Tests");
- $core.addMethod(
- $core.method({
- selector: "testCopying",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCopying\x0a\x09self assert: nil copy equals: nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "copy"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_($nil._copy(),nil);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCopying",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.UndefinedTest);
- $core.addMethod(
- $core.method({
- selector: "testDeepCopy",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDeepCopy\x0a\x09self assert: nil deepCopy = nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "=", "deepCopy"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv($nil._deepCopy()).__eq(nil));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDeepCopy",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.UndefinedTest);
- $core.addMethod(
- $core.method({
- selector: "testIfNil",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "ifNil:", "deny:", "=", "ifNotNil:", "ifNil:ifNotNil:", "ifNotNil:ifNil:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3,$4;
- if(nil == null || nil.a$nil){
- $1=true;
- } else {
- $1=nil;
- }
- [$self._assert_equals_($1,true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- if(nil == null || nil.a$nil){
- $2=nil;
- } else {
- $2=true;
- }
- [$self._deny_([$recv($2).__eq(true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- if(nil == null || nil.a$nil){
- $3=true;
- } else {
- $3=false;
- }
- $self._assert_equals_($3,true);
- if(nil == null || nil.a$nil){
- $4=false;
- } else {
- $4=true;
- }
- $self._deny_($recv($4).__eq(true));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIfNil",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.UndefinedTest);
- $core.addMethod(
- $core.method({
- selector: "testIsNil",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testIsNil\x0a\x09self assert: nil isNil.\x0a\x09self deny: nil notNil.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "isNil", "deny:", "notNil"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($nil._isNil());
- $self._deny_($nil._notNil());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIsNil",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.UndefinedTest);
- $core.setTraitComposition([{trait: $globals.TClassBuildingTest, aliases: {"tearDownTheClass":"tearDown"}}], $globals.ClassBuilderTest);
- $core.setTraitComposition([{trait: $globals.TClassBuildingTest}], $globals.ClassTest);
- $core.setTraitComposition([{trait: $globals.TKeyValueCollectionTest}], $globals.AssociativeCollectionTest);
- $core.setTraitComposition([{trait: $globals.TKeyValueCollectionTest}], $globals.SequenceableCollectionTest);
- });
- define('amber/core/Compiler-Tests',["amber/boot", "require", "amber/core/Kernel-Tests", "amber/core/SUnit"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Compiler-Tests");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("ASTMethodRunningTest", $globals.TestCase, "Compiler-Tests");
- $core.setSlots($globals.ASTMethodRunningTest, ["receiver", "arguments"]);
- $core.addMethod(
- $core.method({
- selector: "arguments",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "arguments\x0a\x09^ arguments",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.arguments;
- }; }),
- $globals.ASTMethodRunningTest);
- $core.addMethod(
- $core.method({
- selector: "receiver",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "receiver\x0a\x09^ receiver",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.receiver;
- }; }),
- $globals.ASTMethodRunningTest);
- $core.addMethod(
- $core.method({
- selector: "setUp",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "setUp\x0a\x09arguments := #().\x0a\x09receiver := DoIt new",
- referencedClasses: ["DoIt"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.arguments=[];
- $self.receiver=$recv($globals.DoIt)._new();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setUp",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTMethodRunningTest);
- $core.addMethod(
- $core.method({
- selector: "should:class:receiver:return:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aClass", "anObject", "aResult"],
- source: "should: aString class: aClass receiver: anObject return: aResult\x0a\x09receiver := anObject.\x0a\x09self while: aString inClass: aClass should: [ :runBlock |\x0a\x09\x09self assert: runBlock value equals: aResult ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["while:inClass:should:", "assert:equals:", "value"]
- }, function ($methodClass){ return function (aString,aClass,anObject,aResult){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiver=anObject;
- $self._while_inClass_should_(aString,aClass,(function(runBlock){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._assert_equals_($recv(runBlock)._value(),aResult);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({runBlock:runBlock},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"should:class:receiver:return:",{aString:aString,aClass:aClass,anObject:anObject,aResult:aResult})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTMethodRunningTest);
- $core.addMethod(
- $core.method({
- selector: "should:receiver:raise:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject", "anErrorClass"],
- source: "should: aString receiver: anObject raise: anErrorClass\x0a\x09receiver := anObject.\x0a\x09self while: aString should: [ :runBlock |\x0a\x09\x09self should: runBlock raise: anErrorClass ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["while:should:", "should:raise:"]
- }, function ($methodClass){ return function (aString,anObject,anErrorClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiver=anObject;
- $self._while_should_(aString,(function(runBlock){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._should_raise_(runBlock,anErrorClass);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({runBlock:runBlock},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"should:receiver:raise:",{aString:aString,anObject:anObject,anErrorClass:anErrorClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTMethodRunningTest);
- $core.addMethod(
- $core.method({
- selector: "should:receiver:return:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject", "aResult"],
- source: "should: aString receiver: anObject return: aResult\x0a\x09receiver := anObject.\x0a\x09self should: aString return: aResult",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (aString,anObject,aResult){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiver=anObject;
- $self._should_return_(aString,aResult);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"should:receiver:return:",{aString:aString,anObject:anObject,aResult:aResult})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTMethodRunningTest);
- $core.addMethod(
- $core.method({
- selector: "should:return:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "should: aString return: anObject\x0a\x09self while: aString should: [ :runBlock |\x0a\x09\x09self assert: runBlock value equals: anObject ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["while:should:", "assert:equals:", "value"]
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._while_should_(aString,(function(runBlock){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._assert_equals_($recv(runBlock)._value(),anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({runBlock:runBlock},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"should:return:",{aString:aString,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTMethodRunningTest);
- $core.addClass("AbstractCompilerTest", $globals.ASTMethodRunningTest, "Compiler-Tests");
- $core.addMethod(
- $core.method({
- selector: "testAfterInliningNonLocalBlockReturnIndexSend",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAfterInliningNonLocalBlockReturnIndexSend\x0a\x09self should: 'foo [ ^ true ifTrue: [ self class ] ] value. self class' return: DoIt.",
- referencedClasses: ["DoIt"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_return_("foo [ ^ true ifTrue: [ self class ] ] value. self class",$globals.DoIt);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAfterInliningNonLocalBlockReturnIndexSend",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testAfterInliningNonLocalBlockReturnSuperSend",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAfterInliningNonLocalBlockReturnSuperSend\x0a\x09self should: 'foo [ ^ true ifTrue: [ super class ] ] value' return: DoIt.",
- referencedClasses: ["DoIt"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_return_("foo [ ^ true ifTrue: [ super class ] ] value",$globals.DoIt);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAfterInliningNonLocalBlockReturnSuperSend",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testAssignment",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo | a | a := true ifTrue: [ 1 ]. ^ a",(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo | a | a := false ifTrue: [ 1 ]. ^ a",nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo | a | ^ a := true ifTrue: [ 1 ]",(1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAssignment",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testBackslashSelectors",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testBackslashSelectors\x0a\x09\x0a\x09self should: '\x5c arg ^ 4' return: 4.\x0a\x09self should: '\x5c\x5c arg ^ 42' return: 42",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("\x5c arg ^ 4",(4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("\x5c\x5c arg ^ 42",(42));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testBackslashSelectors",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testBlockReturn",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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).",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo ^ #(1 2 3) collect: [ :each | true ifTrue: [ each + 1 ] ]",[(2), (3), (4)])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ #(1 2 3) collect: [ :each | false ifFalse: [ each + 1 ] ]",[(2), (3), (4)])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo ^ #(1 2 3) collect: [ :each | each odd ifTrue: [ each + 1 ] ifFalse: [ each - 1 ] ]",[(2), (1), (4)]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testBlockReturn",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testCascades",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCascades\x0a\x09\x0a\x09self should: 'foo ^ Array new add: 3; add: 4; yourself' return: #(3 4)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_return_("foo ^ Array new add: 3; add: 4; yourself",[(3), (4)]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCascades",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testCascadesInDynamicArray",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCascadesInDynamicArray\x0a\x09self should: 'foo | x | x := 1. ^ {x. [x:=2] value; in: [x]}' return: #(1 2)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_return_("foo | x | x := 1. ^ {x. [x:=2] value; in: [x]}",[(1), (2)]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCascadesInDynamicArray",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testCascadesInDynamicDictioary",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCascadesInDynamicDictioary\x0a\x09self should: 'foo | x | x := 1. ^ #{''one'' -> x. ''two'' -> ([x:=2] value; in: [x])}' return: #{'one' -> 1. 'two' -> 2}",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_return_("foo | x | x := 1. ^ #{'one' -> x. 'two' -> ([x:=2] value; in: [x])}",$globals.HashedCollection._newFromPairs_(["one",(1),"two",(2)]));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCascadesInDynamicDictioary",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testCascadesInSend",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCascadesInSend\x0a\x09self should: 'foo | x | x := 1. ^ Array with: x with: ([x:=2] value; in: [x])' return: #(1 2)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_return_("foo | x | x := 1. ^ Array with: x with: ([x:=2] value; in: [x])",[(1), (2)]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCascadesInSend",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testCascadesWithInlining",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testCascadesWithInlining\x0a\x09\x0a\x09self should: 'foo ^ true class; ifTrue: [ 1 ] ifFalse: [ 2 ]' return: 1.\x0a\x09self should: 'foo ^ false class; ifTrue: [ 1 ] ifFalse: [ 2 ]' return: 2",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo ^ true class; ifTrue: [ 1 ] ifFalse: [ 2 ]",(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo ^ false class; ifTrue: [ 1 ] ifFalse: [ 2 ]",(2));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testCascadesWithInlining",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testDynamicArrayElementsOrdered",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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).",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. x := 2 }\x0a",[(1), (2)])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { x. true ifTrue: [ x := 2 ] }\x0a",[(1), (2)]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDynamicArrayElementsOrdered",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testDynamicDictionaryElementsOrdered",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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}.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $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)]));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaryElementsOrdered",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testDynamicDictionaryWithMoreArrows",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDynamicDictionaryWithMoreArrows\x0a\x09self should: 'foo ^ #{1->2->3}' return: (HashedCollection with: 1->2->3)",
- referencedClasses: ["HashedCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:", "with:", "->"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_return_("foo ^ #{1->2->3}",$recv($globals.HashedCollection)._with_([$recv((1).__minus_gt((2))).__minus_gt((3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["->"]=1
- //>>excludeEnd("ctx");
- ][0]));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDynamicDictionaryWithMoreArrows",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testGlobalVar",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["BlockClosure"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo ^ eval class",$globals.BlockClosure)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ Math cos: 0",(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo ^ NonExistingVar",nil);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testGlobalVar",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testInnerTemporalDependentElementsOrdered",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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}.",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:", "->"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: 'foo'->x with: 'bar'->(x := 2)\x0a",[["foo".__minus_gt($globals.Array)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["->"]=1
- //>>excludeEnd("ctx");
- ][0],["bar".__minus_gt((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["->"]=2
- //>>excludeEnd("ctx");
- ][0]])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[["foo".__minus_gt($globals.Array)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["->"]=3
- //>>excludeEnd("ctx");
- ][0],["bar".__minus_gt((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["->"]=4
- //>>excludeEnd("ctx");
- ][0]])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: 'foo'->x with: 'bar'->(true ifTrue: [ x := 2 ])\x0a",[["foo".__minus_gt((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["->"]=5
- //>>excludeEnd("ctx");
- ][0],["bar".__minus_gt((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["->"]=6
- //>>excludeEnd("ctx");
- ][0]])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ { 'foo'->x. 'bar'->(true ifTrue: [ x := 2 ]) }\x0a",[["foo".__minus_gt((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["->"]=7
- //>>excludeEnd("ctx");
- ][0],"bar".__minus_gt((2))])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $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)]));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testInnerTemporalDependentElementsOrdered",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testLexicalScope",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testLexicalScope\x0a\x09self should: 'foo | a | a := 1. [ a := 2 ] value. ^ a' return: 2",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_return_("foo | a | a := 1. [ a := 2 ] value. ^ a",(2));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testLexicalScope",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testLiterals",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo ^ 1",(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ 'hello'","hello")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ #(1 2 3 4)",[(1), (2), (3), (4)])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ {1. [:x | x ] value: 2. 3. [4] value}",[(1), (2), (3), (4)])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ true",true)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=5
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ false",false)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=6
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ #{1->2. 3->4}",$globals.HashedCollection._newFromPairs_([(1),(2),(3),(4)]))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=7
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ #hello","hello")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=8
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ $h","h")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=9
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ -123.456",(-123.456))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=10
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo ^ -2.5e4",(-25000));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testLiterals",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testLocalReturn",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo ^ 1",(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ 1 + 1",(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ",$self.receiver)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo self asString",$self.receiver)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo | a b | a := 1. b := 2. ^ a + b",(3));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testLocalReturn",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testMessageSends",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo ^ 1 asString","1")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ 1 + 1",(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ 1 + 2 * 3",(9))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ 1 to: 3",[(1), (2), (3)])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=4
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo ^ 1 to: 5 by: 2",[(1), (3), (5)]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMessageSends",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testMultipleSequences",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testMultipleSequences\x0a\x09self should: 'foo | a b c | a := 2. b := 3. c := a + b. ^ c * 6' return: 30",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_return_("foo | a b c | a := 2. b := 3. c := a + b. ^ c * 6",(30));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMultipleSequences",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testMutableLiterals",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testMutableLiterals\x0a\x09\x22Mutable literals must be aliased in cascades.\x0a\x09See https://lolg.it/amber/amber/issues/428\x22\x0a\x09\x0a\x09self \x0a\x09\x09should: 'foo ^ #( 1 2 ) at: 1 put: 3; yourself' \x0a\x09\x09return: #(3 2)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_return_("foo ^ #( 1 2 ) at: 1 put: 3; yourself",[(3), (2)]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMutableLiterals",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testNestedIfTrue",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo ^ true ifTrue: [ false ifFalse: [ 1 ] ]",(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ true ifTrue: [ false ifTrue: [ 1 ] ]",nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo true ifTrue: [ false ifFalse: [ ^ 1 ] ]",(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo true ifTrue: [ false ifTrue: [ ^ 1 ] ]",$self.receiver);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNestedIfTrue",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testNestedSends",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNestedSends\x0a\x09self should: 'foo ^ (Point x: (Point x: 2 y: 3) y: 4) asString' return: (Point x: (2@3) y: 4) asString",
- referencedClasses: ["Point"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:", "asString", "x:y:", "@"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_return_("foo ^ (Point x: (Point x: 2 y: 3) y: 4) asString",$recv($recv($globals.Point)._x_y_((2).__at((3)),(4)))._asString());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNestedSends",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testNilPerform",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNilPerform\x0a\x09self should: 'foo ^ nil perform: #yourself' return: nil",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_return_("foo ^ nil perform: #yourself",nil);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNilPerform",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testNonLocalReturn",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo [ ^ 1 ] value",(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo [ ^ 1 + 1 ] value",(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo | a b | a := 1. b := 2. [ ^ a + b ] value. self halt",(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo [ :x | ^ x + x ] value: 4. ^ 2",(8));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testPascalCaseGlobal",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testPascalCaseGlobal\x0a\x09self should: 'foo ^Object' return: (Smalltalk globals at: 'Object').\x0a\x09self should: 'foo ^NonExistent' return: nil",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:", "at:", "globals"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo ^Object",$recv($recv($globals.Smalltalk)._globals())._at_("Object"))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo ^NonExistent",nil);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPascalCaseGlobal",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testPragmaJSStatement",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testPragmaJSStatement\x0a\x09self should: 'foo < inlineJS: ''return 2+3'' >' return: 5",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_return_("foo < inlineJS: 'return 2+3' >",(5));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPragmaJSStatement",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testReceiverEvaluatedOnceInSpecials",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testReceiverEvaluatedOnceInSpecials\x0a\x09self should: 'foo |x| x := 1. ^ {[ x := x+1 ] value ifNil: []. x}' return: {2. 2}.\x0a\x09self should: 'foo |xs| xs := {nil. nil}. ^ {[ xs removeLast ] value ifNotNil: []. xs}' return: {nil. {nil}}.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo |x| x := 1. ^ {[ x := x+1 ] value ifNil: []. x}",[(2),(2)])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo |xs| xs := {nil. nil}. ^ {[ xs removeLast ] value ifNotNil: []. xs}",[nil,[nil]]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testReceiverEvaluatedOnceInSpecials",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testRegression1242",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRegression1242\x0a\x09self should: '\x0a\x09\x09foo\x0a\x09\x09\x09|x|\x0a\x09\x09\x09x := 2.\x0a\x09\x09\x09x := nil ifNil: [].\x0a\x09\x09\x09^ x\x0a\x09' return: nil.\x0a\x09\x0a\x09self should: '\x0a\x09\x09foo\x0a\x09\x09\x09|x|\x0a\x09\x09\x09x := 2.\x0a\x09\x09\x09x := 1 ifNotNil: [].\x0a\x09\x09\x09^ x\x0a\x09' return: nil.\x0a\x09\x0a\x09self should: '\x0a\x09\x09foo\x0a\x09\x09\x09|x|\x0a\x09\x09\x09x := 2.\x0a\x09\x09\x09x := false ifFalse: [].\x0a\x09\x09\x09^ x\x0a\x09' return: nil.\x0a\x09\x0a\x09self should: '\x0a\x09\x09foo\x0a\x09\x09\x09|x|\x0a\x09\x09\x09x := 2.\x0a\x09\x09\x09x := true ifTrue: [].\x0a\x09\x09\x09^ x\x0a\x09' return: nil.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("\x0a\x09\x09foo\x0a\x09\x09\x09|x|\x0a\x09\x09\x09x := 2.\x0a\x09\x09\x09x := nil ifNil: [].\x0a\x09\x09\x09^ x\x0a\x09",nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("\x0a\x09\x09foo\x0a\x09\x09\x09|x|\x0a\x09\x09\x09x := 2.\x0a\x09\x09\x09x := 1 ifNotNil: [].\x0a\x09\x09\x09^ x\x0a\x09",nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("\x0a\x09\x09foo\x0a\x09\x09\x09|x|\x0a\x09\x09\x09x := 2.\x0a\x09\x09\x09x := false ifFalse: [].\x0a\x09\x09\x09^ x\x0a\x09",nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("\x0a\x09\x09foo\x0a\x09\x09\x09|x|\x0a\x09\x09\x09x := 2.\x0a\x09\x09\x09x := true ifTrue: [].\x0a\x09\x09\x09^ x\x0a\x09",nil);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRegression1242",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testRegression1242ForReturn",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRegression1242ForReturn\x0a\x09self should: 'foo [ ^ nil ifNil: [] ] value' return: nil.\x0a\x09self should: 'foo [ ^ 1 ifNotNil: [] ] value' return: nil.\x0a\x09self should: 'foo [ ^ false ifFalse: [] ] value' return: nil.\x0a\x09self should: 'foo [ ^ true ifTrue: [] ] value' return: nil.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo [ ^ nil ifNil: [] ] value",nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo [ ^ 1 ifNotNil: [] ] value",nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo [ ^ false ifFalse: [] ] value",nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo [ ^ true ifTrue: [] ] value",nil);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRegression1242ForReturn",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testRegression1244",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRegression1244\x0a\x09self should: 'foo [ ^ true ifTrue: [1] ifFalse: [2] ] value' return: 1",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_return_("foo [ ^ true ifTrue: [1] ifFalse: [2] ] value",(1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRegression1244",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testRootSuperSend",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRootSuperSend\x0a\x09self \x0a\x09\x09should: 'foo ^ super class' \x0a\x09\x09receiver: ProtoObject new\x0a\x09\x09raise: MessageNotUnderstood",
- referencedClasses: ["ProtoObject", "MessageNotUnderstood"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:receiver:raise:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_receiver_raise_("foo ^ super class",$recv($globals.ProtoObject)._new(),$globals.MessageNotUnderstood);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRootSuperSend",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testSendReceiverAndArgumentsOrdered",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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}.",
- referencedClasses: ["Array"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo\x0a\x09| x |\x0a\x09x := 1.\x0a\x09^ Array with: x with: (true ifTrue: [ x := 2 ])\x0a",[(1), (2)])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo\x0a\x09| x |\x0a\x09x := Array.\x0a\x09^ x with: x with: (true ifTrue: [ x := 2 ])\x0a",[$globals.Array,(2)]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSendReceiverAndArgumentsOrdered",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testSuperSend",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSuperSend\x0a\x09self \x0a\x09\x09should: 'foo ^ super isBoolean' \x0a\x09\x09receiver: true\x0a\x09\x09return: false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:receiver:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_receiver_return_("foo ^ super isBoolean",true,false);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSuperSend",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testSuperSend2",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSuperSend2\x0a\x09self \x0a\x09\x09should: 'foo ^ super isNil'\x0a\x09\x09receiver: nil\x0a\x09\x09return: false",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:receiver:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_receiver_return_("foo ^ super isNil",nil,false);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSuperSend2",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testSuperSend3",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSuperSend3\x0a\x09self \x0a\x09\x09should: 'doo ^ super isNil'\x0a\x09\x09class: Object\x0a\x09\x09receiver: nil\x0a\x09\x09return: false",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:class:receiver:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_class_receiver_return_("doo ^ super isNil",$globals.Object,nil,false);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSuperSend3",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testSuperSend4",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSuperSend4\x0a\x09self \x0a\x09\x09should: 'foo ^ super asJavaScriptObject'\x0a\x09\x09receiver: 'me'\x0a\x09\x09return: #('m' 'e')",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:receiver:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_receiver_return_("foo ^ super asJavaScriptObject","me",["m", "e"]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSuperSend4",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testSuperSend5",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSuperSend5\x0a\x09self \x0a\x09\x09should: 'foo [super addLast: 4] on: Error do: [ self add: 5 ]. ^ self'\x0a\x09\x09class: SequenceableCollection\x0a\x09\x09receiver: #(1 2 3)\x0a\x09\x09return: #(1 2 3 5)",
- referencedClasses: ["SequenceableCollection"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:class:receiver:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_class_receiver_return_("foo [super addLast: 4] on: Error do: [ self add: 5 ]. ^ self",$globals.SequenceableCollection,[(1), (2), (3)],[(1), (2), (3), (5)]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSuperSend5",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testSuperSend6",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSuperSend6\x0a\x09self \x0a\x09\x09should: 'foo ^ super ifTrue: [ true ] ifFalse: [ false ]' \x0a\x09\x09receiver: true\x0a\x09\x09raise: Error",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:receiver:raise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_receiver_raise_("foo ^ super ifTrue: [ true ] ifFalse: [ false ]",true,$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSuperSend6",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testTempVariables",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo | a | ^ a",nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo | AVariable | ^ AVariable",nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo | a b c | ^ c",nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo | a | [ | d | ^ d ] value",nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo | a | a:= 1. ^ a",(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo | AVariable | AVariable := 1. ^ AVariable",(1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testTempVariables",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testThisContext",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testThisContext\x0a\x09self should: 'foo ^ [ thisContext ] value outerContext == thisContext' return: true",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_return_("foo ^ [ thisContext ] value outerContext == thisContext",true);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testThisContext",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testUnknownPragma",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testUnknownPragma\x0a\x09self should: 'foo < fooBar: ''return 2+3'' > | x | ^ x := 6' return: 6.\x0a\x09self should: 'foo | x | < fooBar: ''return 2+3'' > ^ x := 6' return: 6",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo < fooBar: 'return 2+3' > | x | ^ x := 6",(6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo | x | < fooBar: 'return 2+3' > ^ x := 6",(6));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testUnknownPragma",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testifFalse",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo true ifFalse: [ ^ 1 ]",$self.receiver)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo false ifFalse: [ ^ 2 ]",(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ true ifFalse: [ 1 ]",nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo ^ false ifFalse: [ 2 ]",(2));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testifFalse",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testifFalseIfTrue",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo true ifFalse: [ ^ 1 ] ifTrue: [ ^ 2 ]",(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo false ifFalse: [ ^ 2 ] ifTrue: [ ^1 ]",(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ true ifFalse: [ 1 ] ifTrue: [ 2 ]",(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo ^ false ifFalse: [ 2 ] ifTrue: [ 1 ]",(2));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testifFalseIfTrue",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testifNil",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo ^ 1 ifNil: [ 2 ]",(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ nil ifNil: [ 2 ]",(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo 1 ifNil: [ ^ 2 ]",$self.receiver)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo nil ifNil: [ ^ 2 ]",(2));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testifNil",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testifNilIfNotNil",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo ^ 1 ifNil: [ 2 ] ifNotNil: [ 3 ]",(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ nil ifNil: [ 2 ] ifNotNil: [ 3 ]",(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo 1 ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo nil ifNil: [ ^ 2 ] ifNotNil: [ ^3 ]",(2));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testifNilIfNotNil",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testifNotNil",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo ^ 1 ifNotNil: [ 2 ]",(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ nil ifNotNil: [ 2 ]",nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo 1 ifNotNil: [ ^ 2 ]",(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo nil ifNotNil: [ ^ 2 ]",$self.receiver);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testifNotNil",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testifNotNilWithArgument",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo ^ 1 ifNotNil: [ :val | val + 2 ]",(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ nil ifNotNil: [ :val | val + 2 ]",nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ 1 ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]",(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ nil ifNil: [ 5 ] ifNotNil: [ :val | val + 2 ]",(5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ 1 ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]",(3))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo ^ nil ifNotNil: [ :val | val + 2 ] ifNil: [ 5 ]",(5));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testifNotNilWithArgument",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testifTrue",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo false ifTrue: [ ^ 1 ]",$self.receiver)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo true ifTrue: [ ^ 2 ]",(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ false ifTrue: [ 1 ]",nil)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo ^ true ifTrue: [ 2 ]",(2));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testifTrue",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "testifTrueIfFalse",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_return_("foo false ifTrue: [ ^ 1 ] ifFalse: [ ^2 ]",(2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo true ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]",(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_return_("foo ^ false ifTrue: [ 2 ] ifFalse: [ 1 ]",(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:return:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._should_return_("foo ^ true ifTrue: [ 2 ] ifFalse: [ 1 ]",(2));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testifTrueIfFalse",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest);
- $core.addMethod(
- $core.method({
- selector: "isAbstract",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isAbstract\x0a\x09^ self name = AbstractCompilerTest name",
- referencedClasses: ["AbstractCompilerTest"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["=", "name"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv([$self._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["name"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv($globals.AbstractCompilerTest)._name());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isAbstract",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCompilerTest.a$cls);
- $core.addClass("ASTDebuggerTest", $globals.AbstractCompilerTest, "Compiler-Tests");
- $core.addClass("ASTInterpreterTest", $globals.AbstractCompilerTest, "Compiler-Tests");
- $core.addClass("CodeGeneratorTest", $globals.AbstractCompilerTest, "Compiler-Tests");
- $core.addClass("InliningCodeGeneratorTest", $globals.AbstractCompilerTest, "Compiler-Tests");
- $core.addClass("AbstractJavaScriptGatewayTest", $globals.ASTMethodRunningTest, "Compiler-Tests");
- $core.setSlots($globals.AbstractJavaScriptGatewayTest, ["theClass"]);
- $core.addMethod(
- $core.method({
- selector: "jsConstructor",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "jsConstructor\x0a\x09<inlineJS: '\x0a\x09\x09var ctr = function () {};\x0a\x09\x09ctr.prototype.foo = function (a,b) {return a+\x22,\x22+b};\x0a\x09\x09return ctr;\x0a\x09'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["\x0a\x09\x09var ctr = function () {};\x0a\x09\x09ctr.prototype.foo = function (a,b) {return a+\x22,\x22+b};\x0a\x09\x09return ctr;\x0a\x09"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var ctr = function () {};
- ctr.prototype.foo = function (a,b) {return a+","+b};
- return ctr;
- ;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"jsConstructor",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractJavaScriptGatewayTest);
- $core.addMethod(
- $core.method({
- selector: "testDyadicSuperDifferentNames",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDyadicSuperDifferentNames\x0a\x09theClass := ObjectMock subclass: #ObjectMock2 slots: #() package: 'Compiler-Tests'.\x0a\x09theClass beJavaScriptSubclassOf: self jsConstructor.\x0a\x09receiver := ObjectMock2 new foo: 'should be shadowed'; yourself.\x0a\x09arguments := #(4 true).\x0a\x09self\x0a\x09\x09should: 'bar: anObject baz: anotherObject\x0a\x09\x09\x09<jsOverride: #foo args: #(anObject anotherObject)>\x0a\x09\x09\x09^ super bar: anObject baz: anotherObject'\x0a\x09\x09return: '4,true'",
- referencedClasses: ["ObjectMock", "ObjectMock2"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:slots:package:", "beJavaScriptSubclassOf:", "jsConstructor", "foo:", "new", "yourself", "should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
- $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
- $1=$recv($globals.ObjectMock2)._new();
- $recv($1)._foo_("should be shadowed");
- $self.receiver=$recv($1)._yourself();
- $self.arguments=[(4), true];
- $self._should_return_("bar: anObject baz: anotherObject\x0a\x09\x09\x09<jsOverride: #foo args: #(anObject anotherObject)>\x0a\x09\x09\x09^ super bar: anObject baz: anotherObject","4,true");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDyadicSuperDifferentNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractJavaScriptGatewayTest);
- $core.addMethod(
- $core.method({
- selector: "testDyadicSuperDifferentNamesNested",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDyadicSuperDifferentNamesNested\x0a\x09theClass := ObjectMock subclass: #ObjectMock2 slots: #() package: 'Compiler-Tests'.\x0a\x09theClass beJavaScriptSubclassOf: self jsConstructor.\x0a\x09receiver := ObjectMock2 new foo: 'should be shadowed'; yourself.\x0a\x09arguments := #(4 true).\x0a\x09self\x0a\x09\x09should: 'bar: anObject baz: anotherObject\x0a\x09\x09\x09<jsOverride: #foo args: #(anObject anotherObject)>\x0a\x09\x09\x09^ [ super bar: anObject baz: anotherObject ] value'\x0a\x09\x09return: '4,true'",
- referencedClasses: ["ObjectMock", "ObjectMock2"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:slots:package:", "beJavaScriptSubclassOf:", "jsConstructor", "foo:", "new", "yourself", "should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
- $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
- $1=$recv($globals.ObjectMock2)._new();
- $recv($1)._foo_("should be shadowed");
- $self.receiver=$recv($1)._yourself();
- $self.arguments=[(4), true];
- $self._should_return_("bar: anObject baz: anotherObject\x0a\x09\x09\x09<jsOverride: #foo args: #(anObject anotherObject)>\x0a\x09\x09\x09^ [ super bar: anObject baz: anotherObject ] value","4,true");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDyadicSuperDifferentNamesNested",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractJavaScriptGatewayTest);
- $core.addMethod(
- $core.method({
- selector: "testDyadicSuperDifferentNamesPermutated",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDyadicSuperDifferentNamesPermutated\x0a\x09theClass := ObjectMock subclass: #ObjectMock2 slots: #() package: 'Compiler-Tests'.\x0a\x09theClass beJavaScriptSubclassOf: self jsConstructor.\x0a\x09receiver := ObjectMock2 new foo: 'should be shadowed'; yourself.\x0a\x09arguments := #(4 true).\x0a\x09self\x0a\x09\x09should: 'bar: anObject baz: anotherObject\x0a\x09\x09\x09<jsOverride: #foo args: #(anotherObject anObject)>\x0a\x09\x09\x09^ super bar: anObject baz: anotherObject'\x0a\x09\x09return: 'true,4'",
- referencedClasses: ["ObjectMock", "ObjectMock2"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:slots:package:", "beJavaScriptSubclassOf:", "jsConstructor", "foo:", "new", "yourself", "should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
- $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
- $1=$recv($globals.ObjectMock2)._new();
- $recv($1)._foo_("should be shadowed");
- $self.receiver=$recv($1)._yourself();
- $self.arguments=[(4), true];
- $self._should_return_("bar: anObject baz: anotherObject\x0a\x09\x09\x09<jsOverride: #foo args: #(anotherObject anObject)>\x0a\x09\x09\x09^ super bar: anObject baz: anotherObject","true,4");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDyadicSuperDifferentNamesPermutated",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractJavaScriptGatewayTest);
- $core.addMethod(
- $core.method({
- selector: "testMonadicSuperDifferentNames",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testMonadicSuperDifferentNames\x0a\x09theClass := ObjectMock subclass: #ObjectMock2 slots: #() package: 'Compiler-Tests'.\x0a\x09theClass beJavaScriptSubclassOf: self jsConstructor.\x0a\x09receiver := ObjectMock2 new foo: 'should be shadowed'; yourself.\x0a\x09arguments := #(4).\x0a\x09self\x0a\x09\x09should: 'bar: anObject <jsOverride: #foo args: #(anObject)> ^ super bar: anObject'\x0a\x09\x09return: '4,undefined'",
- referencedClasses: ["ObjectMock", "ObjectMock2"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:slots:package:", "beJavaScriptSubclassOf:", "jsConstructor", "foo:", "new", "yourself", "should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
- $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
- $1=$recv($globals.ObjectMock2)._new();
- $recv($1)._foo_("should be shadowed");
- $self.receiver=$recv($1)._yourself();
- $self.arguments=[(4)];
- $self._should_return_("bar: anObject <jsOverride: #foo args: #(anObject)> ^ super bar: anObject","4,undefined");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMonadicSuperDifferentNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractJavaScriptGatewayTest);
- $core.addMethod(
- $core.method({
- selector: "testNiladicSuper",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNiladicSuper\x0a\x09theClass := ObjectMock subclass: #ObjectMock2 slots: #() package: 'Compiler-Tests'.\x0a\x09theClass beJavaScriptSubclassOf: self jsConstructor.\x0a\x09self\x0a\x09\x09should: 'foo <jsOverride: #foo> ^ super foo'\x0a\x09\x09receiver: (ObjectMock2 new foo: 'should be shadowed'; yourself)\x0a\x09\x09return: 'undefined,undefined'",
- referencedClasses: ["ObjectMock", "ObjectMock2"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:slots:package:", "beJavaScriptSubclassOf:", "jsConstructor", "should:receiver:return:", "foo:", "new", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
- $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
- $1=$recv($globals.ObjectMock2)._new();
- $recv($1)._foo_("should be shadowed");
- $self._should_receiver_return_("foo <jsOverride: #foo> ^ super foo",$recv($1)._yourself(),"undefined,undefined");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNiladicSuper",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractJavaScriptGatewayTest);
- $core.addMethod(
- $core.method({
- selector: "testNiladicSuperDifferentNames",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNiladicSuperDifferentNames\x0a\x09theClass := ObjectMock subclass: #ObjectMock2 slots: #() package: 'Compiler-Tests'.\x0a\x09theClass beJavaScriptSubclassOf: self jsConstructor.\x0a\x09self\x0a\x09\x09should: 'bar <jsOverride: #foo> ^ super bar'\x0a\x09\x09receiver: (ObjectMock2 new foo: 'should be shadowed'; yourself)\x0a\x09\x09return: 'undefined,undefined'",
- referencedClasses: ["ObjectMock", "ObjectMock2"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:slots:package:", "beJavaScriptSubclassOf:", "jsConstructor", "should:receiver:return:", "foo:", "new", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
- $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
- $1=$recv($globals.ObjectMock2)._new();
- $recv($1)._foo_("should be shadowed");
- $self._should_receiver_return_("bar <jsOverride: #foo> ^ super bar",$recv($1)._yourself(),"undefined,undefined");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNiladicSuperDifferentNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractJavaScriptGatewayTest);
- $core.addMethod(
- $core.method({
- selector: "testNiladicSuperNested",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNiladicSuperNested\x0a\x09theClass := ObjectMock subclass: #ObjectMock2 slots: #() package: 'Compiler-Tests'.\x0a\x09theClass beJavaScriptSubclassOf: self jsConstructor.\x0a\x09self\x0a\x09\x09should: 'foo <jsOverride: #foo> ^ [ super foo ] value'\x0a\x09\x09receiver: (ObjectMock2 new foo: 'should be shadowed'; yourself)\x0a\x09\x09return: 'undefined,undefined'",
- referencedClasses: ["ObjectMock", "ObjectMock2"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:slots:package:", "beJavaScriptSubclassOf:", "jsConstructor", "should:receiver:return:", "foo:", "new", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
- $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
- $1=$recv($globals.ObjectMock2)._new();
- $recv($1)._foo_("should be shadowed");
- $self._should_receiver_return_("foo <jsOverride: #foo> ^ [ super foo ] value",$recv($1)._yourself(),"undefined,undefined");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNiladicSuperNested",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractJavaScriptGatewayTest);
- $core.addMethod(
- $core.method({
- selector: "testTriadicSuperDifferentNamesPermutated",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testTriadicSuperDifferentNamesPermutated\x0a\x09theClass := ObjectMock subclass: #ObjectMock2 slots: #() package: 'Compiler-Tests'.\x0a\x09theClass beJavaScriptSubclassOf: self jsConstructor.\x0a\x09receiver := ObjectMock2 new foo: 'should be shadowed'; yourself.\x0a\x09arguments := #(4 true 'hello').\x0a\x09self\x0a\x09\x09should: 'bar: anObject baz: anotherObject moo: yao\x0a\x09\x09\x09<jsOverride: #foo args: #(yao anObject anotherObject)>\x0a\x09\x09\x09^ super bar: anObject baz: anotherObject moo: yao'\x0a\x09\x09return: 'hello,4'",
- referencedClasses: ["ObjectMock", "ObjectMock2"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:slots:package:", "beJavaScriptSubclassOf:", "jsConstructor", "foo:", "new", "yourself", "should:return:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self.theClass=$recv($globals.ObjectMock)._subclass_slots_package_("ObjectMock2",[],"Compiler-Tests");
- $recv($self.theClass)._beJavaScriptSubclassOf_($self._jsConstructor());
- $1=$recv($globals.ObjectMock2)._new();
- $recv($1)._foo_("should be shadowed");
- $self.receiver=$recv($1)._yourself();
- $self.arguments=[(4), true, "hello"];
- $self._should_return_("bar: anObject baz: anotherObject moo: yao\x0a\x09\x09\x09<jsOverride: #foo args: #(yao anObject anotherObject)>\x0a\x09\x09\x09^ super bar: anObject baz: anotherObject moo: yao","hello,4");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testTriadicSuperDifferentNamesPermutated",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractJavaScriptGatewayTest);
- $core.addMethod(
- $core.method({
- selector: "theClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "theClass\x0a\x09^ theClass",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.theClass;
- }; }),
- $globals.AbstractJavaScriptGatewayTest);
- $core.addMethod(
- $core.method({
- selector: "isAbstract",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isAbstract\x0a\x09^ self name = AbstractJavaScriptGatewayTest name",
- referencedClasses: ["AbstractJavaScriptGatewayTest"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["=", "name"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv([$self._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["name"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv($globals.AbstractJavaScriptGatewayTest)._name());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isAbstract",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractJavaScriptGatewayTest.a$cls);
- $core.addClass("DebuggedJSGTest", $globals.AbstractJavaScriptGatewayTest, "Compiler-Tests");
- $core.addClass("InlinedJSGTest", $globals.AbstractJavaScriptGatewayTest, "Compiler-Tests");
- $core.addClass("InterpretedJSGTest", $globals.AbstractJavaScriptGatewayTest, "Compiler-Tests");
- $core.addClass("PlainJSGTest", $globals.AbstractJavaScriptGatewayTest, "Compiler-Tests");
- $core.addClass("ASTPCNodeVisitorTest", $globals.TestCase, "Compiler-Tests");
- $core.addMethod(
- $core.method({
- selector: "astPCNodeVisitor",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "astPCNodeVisitor\x0a\x09^ ASTPCNodeVisitor new\x0a\x09\x09index: 0;\x0a\x09\x09yourself",
- referencedClasses: ["ASTPCNodeVisitor"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["index:", "new", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.ASTPCNodeVisitor)._new();
- $recv($1)._index_((0));
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"astPCNodeVisitor",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTPCNodeVisitorTest);
- $core.addMethod(
- $core.method({
- selector: "astPCNodeVisitorForSelector:",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "astPCNodeVisitorForSelector: aString\x0a\x09^ ASTPCNodeVisitor new\x0a\x09\x09selector: aString;\x0a\x09\x09index: 0;\x0a\x09\x09yourself",
- referencedClasses: ["ASTPCNodeVisitor"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["selector:", "new", "index:", "yourself"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.ASTPCNodeVisitor)._new();
- $recv($1)._selector_(aString);
- $recv($1)._index_((0));
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"astPCNodeVisitorForSelector:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTPCNodeVisitorTest);
- $core.addMethod(
- $core.method({
- selector: "newTeachableVisitor",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "newTeachableVisitor\x0a\x09| result |\x0a\x09result := Teachable new\x0a\x09\x09whenSend: #visit: evaluate: [ :one | one acceptDagVisitor: result ];\x0a\x09\x09acceptSend: #visitDagNode:.\x0a\x09^ result",
- referencedClasses: ["Teachable"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["whenSend:evaluate:", "new", "acceptDagVisitor:", "acceptSend:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.Teachable)._new();
- $recv($1)._whenSend_evaluate_("visit:",(function(one){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(one)._acceptDagVisitor_(result);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({one:one},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- result=$recv($1)._acceptSend_("visitDagNode:");
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newTeachableVisitor",{result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTPCNodeVisitorTest);
- $core.addMethod(
- $core.method({
- selector: "testJSStatementNode",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testJSStatementNode\x0a\x09| ast result |\x0a\x09\x0a\x09ast := self parse: 'foo <inlineJS: ''consolee.log(1)''>' forClass: Object.\x0a\x09result := self astPCNodeVisitor visit: ast; currentNode.\x0a\x09self\x0a\x09\x09assert: ((self newTeachableVisitor whenSend: #visitJSStatementNode: return: 'JS'; yourself) visit: result)\x0a\x09\x09equals: 'JS'",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:forClass:", "visit:", "astPCNodeVisitor", "currentNode", "assert:equals:", "whenSend:return:", "newTeachableVisitor", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var ast,result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- ast=$self._parse_forClass_("foo <inlineJS: 'consolee.log(1)'>",$globals.Object);
- $1=$self._astPCNodeVisitor();
- [$recv($1)._visit_(ast)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["visit:"]=1
- //>>excludeEnd("ctx");
- ][0];
- result=$recv($1)._currentNode();
- $2=$self._newTeachableVisitor();
- $recv($2)._whenSend_return_("visitJSStatementNode:","JS");
- $self._assert_equals_($recv($recv($2)._yourself())._visit_(result),"JS");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testJSStatementNode",{ast:ast,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTPCNodeVisitorTest);
- $core.addMethod(
- $core.method({
- selector: "testMessageSend",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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'",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForSelector:", "currentNode"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- ast=$self._parse_forClass_("foo self asString yourself. ^ self asBoolean",$globals.Object);
- $1=$self._astPCNodeVisitorForSelector_("yourself");
- $recv($1)._visit_(ast);
- $self._assert_equals_($recv($recv($1)._currentNode())._selector(),"yourself");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMessageSend",{ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTPCNodeVisitorTest);
- $core.addMethod(
- $core.method({
- selector: "testMessageSendWithBlocks",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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'",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForSelector:", "currentNode"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- ast=$self._parse_forClass_("foo true ifTrue: [ [ self asString yourself ] value. ]. ^ self asBoolean",$globals.Object);
- $1=$self._astPCNodeVisitorForSelector_("yourself");
- $recv($1)._visit_(ast);
- $self._assert_equals_($recv($recv($1)._currentNode())._selector(),"yourself");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMessageSendWithBlocks",{ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTPCNodeVisitorTest);
- $core.addMethod(
- $core.method({
- selector: "testMessageSendWithInlining",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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'",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:forClass:", "assert:equals:", "selector", "visit:", "astPCNodeVisitorForSelector:", "currentNode"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- ast=[$self._parse_forClass_("foo true ifTrue: [ self asString yourself ]. ^ self asBoolean",$globals.Object)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["parse:forClass:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $1=[$self._astPCNodeVisitorForSelector_("yourself")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["astPCNodeVisitorForSelector:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._visit_(ast)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["visit:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$recv($1)._currentNode()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["currentNode"]=1
- //>>excludeEnd("ctx");
- ][0])._selector()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["selector"]=1
- //>>excludeEnd("ctx");
- ][0],"yourself")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- ast=$self._parse_forClass_("foo true ifTrue: [ self asString yourself ]. ^ self asBoolean",$globals.Object);
- $2=$self._astPCNodeVisitorForSelector_("asBoolean");
- $recv($2)._visit_(ast);
- $self._assert_equals_($recv($recv($2)._currentNode())._selector(),"asBoolean");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMessageSendWithInlining",{ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTPCNodeVisitorTest);
- $core.addMethod(
- $core.method({
- selector: "testNoMessageSend",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:forClass:", "assert:", "isNil", "visit:", "astPCNodeVisitor", "currentNode"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- ast=$self._parse_forClass_("foo ^ self",$globals.Object);
- $1=$self._astPCNodeVisitor();
- $recv($1)._visit_(ast);
- $self._assert_($recv($recv($1)._currentNode())._isNil());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNoMessageSend",{ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTPCNodeVisitorTest);
- $core.addClass("ASTPositionTest", $globals.TestCase, "Compiler-Tests");
- $core.addMethod(
- $core.method({
- selector: "testNodeAtPosition",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNodeAtPosition\x0a\x09| node |\x0a\x09\x0a\x09node := self parse: 'yourself\x0a\x09^ self' forClass: Object.\x0a\x09\x0a\x09self assert: (node navigationNodeAt: 2@4 ifAbsent: [ nil ]) source equals: 'self'.\x0a\x09\x0a\x09node := self parse: 'foo\x0a\x09true ifTrue: [ 1 ]' forClass: Object.\x0a\x09\x0a\x09self assert: (node navigationNodeAt: 2@7 ifAbsent: [ nil ]) selector equals: 'ifTrue:'.\x0a\x09\x0a\x09node := self parse: 'foo\x0a\x09self foo; bar; baz' forClass: Object.\x0a\x09\x0a\x09self assert: (node navigationNodeAt: 2@8 ifAbsent: [ nil ]) selector equals: 'foo'",
- referencedClasses: ["Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:forClass:", "assert:equals:", "source", "navigationNodeAt:ifAbsent:", "@", "selector"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var node;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- node=[$self._parse_forClass_("yourself\x0a\x09^ self",$globals.Object)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["parse:forClass:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv([$recv(node)._navigationNodeAt_ifAbsent_([(2).__at((4))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=1
- //>>excludeEnd("ctx");
- ][0],(function(){
- return nil;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["navigationNodeAt:ifAbsent:"]=1
- //>>excludeEnd("ctx");
- ][0])._source(),"self")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- node=[$self._parse_forClass_("foo\x0a\x09true ifTrue: [ 1 ]",$globals.Object)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["parse:forClass:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$recv(node)._navigationNodeAt_ifAbsent_([(2).__at((7))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["@"]=2
- //>>excludeEnd("ctx");
- ][0],(function(){
- return nil;
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["navigationNodeAt:ifAbsent:"]=2
- //>>excludeEnd("ctx");
- ][0])._selector()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["selector"]=1
- //>>excludeEnd("ctx");
- ][0],"ifTrue:")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- node=$self._parse_forClass_("foo\x0a\x09self foo; bar; baz",$globals.Object);
- $self._assert_equals_($recv($recv(node)._navigationNodeAt_ifAbsent_((2).__at((8)),(function(){
- return nil;
- })))._selector(),"foo");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNodeAtPosition",{node:node})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ASTPositionTest);
- $core.addClass("AbstractCodeGeneratorInstallTest", $globals.TestCase, "Compiler-Tests");
- $core.setSlots($globals.AbstractCodeGeneratorInstallTest, ["receiver"]);
- $core.addMethod(
- $core.method({
- selector: "receiver",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "receiver\x0a\x09^ receiver",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.receiver;
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "shouldntInstall:andRaise:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anErrorClass"],
- source: "shouldntInstall: aString andRaise: anErrorClass\x0a\x09| method |\x0a\x0a\x09[ self\x0a\x09\x09should: [ method := self install: aString forClass: receiver class ]\x0a\x09\x09raise: anErrorClass ]\x0a\x09ensure: [ method ifNotNil: [ receiver class removeCompiledMethod: method ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ensure:", "should:raise:", "install:forClass:", "class", "ifNotNil:", "removeCompiledMethod:"]
- }, function ($methodClass){ return function (aString,anErrorClass){
- var self=this,$self=this;
- var method;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- method=$self._install_forClass_(aString,[$recv($self.receiver)._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0]);
- return method;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }),anErrorClass);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._ensure_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $1=method;
- if($1 == null || $1.a$nil){
- return $1;
- } else {
- return $recv($recv($self.receiver)._class())._removeCompiledMethod_(method);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"shouldntInstall:andRaise:",{aString:aString,anErrorClass:anErrorClass,method:method})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "testDyadicJSOverrideArgMismatch",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDyadicJSOverrideArgMismatch\x0a\x09receiver := ObjectMock new.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: aNumber foo: anotherNumber\x0a\x09\x09<jsOverride: #mux args: #(anInteger anotherNumber)>\x0a\x09\x09^ (foo := foo * aNumber + anotherNumber)'\x0a\x09\x09andRaise: CompilerError.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: aNumber foo: anotherNumber\x0a\x09\x09<jsOverride: #mux args: #(aNumber anotherInteger)>\x0a\x09\x09^ (foo := foo * aNumber + anotherNumber)'\x0a\x09\x09andRaise: CompilerError.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: aNumber foo: anotherNumber\x0a\x09\x09<jsOverride: #mux args: #(anotherNumber anInteger)>\x0a\x09\x09^ (foo := foo * aNumber + anotherNumber)'\x0a\x09\x09andRaise: CompilerError",
- referencedClasses: ["ObjectMock", "CompilerError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "shouldntInstall:andRaise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiver=$recv($globals.ObjectMock)._new();
- [$self._shouldntInstall_andRaise_("quux: aNumber foo: anotherNumber\x0a\x09\x09<jsOverride: #mux args: #(anInteger anotherNumber)>\x0a\x09\x09^ (foo := foo * aNumber + anotherNumber)",$globals.CompilerError)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["shouldntInstall:andRaise:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._shouldntInstall_andRaise_("quux: aNumber foo: anotherNumber\x0a\x09\x09<jsOverride: #mux args: #(aNumber anotherInteger)>\x0a\x09\x09^ (foo := foo * aNumber + anotherNumber)",$globals.CompilerError)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["shouldntInstall:andRaise:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._shouldntInstall_andRaise_("quux: aNumber foo: anotherNumber\x0a\x09\x09<jsOverride: #mux args: #(anotherNumber anInteger)>\x0a\x09\x09^ (foo := foo * aNumber + anotherNumber)",$globals.CompilerError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDyadicJSOverrideArgMismatch",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "testDyadicJSOverrideDifferentNames",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDyadicJSOverrideDifferentNames\x0a\x09receiver := ObjectMock new.\x0a\x09receiver foo: 4.\x0a\x09self while: 'quux: anInteger foo: anotherInteger\x0a\x09\x09<jsOverride: #mux args: #(anInteger anotherInteger)>\x0a\x09\x09^ (foo := foo * anInteger + anotherInteger)' should: [\x0a\x09\x09self should: [ receiver mux ] raise: MessageNotUnderstood.\x0a\x09\x09self should: [ receiver mux: 2 and: -1 ] raise: MessageNotUnderstood.\x0a\x09\x09self assert: (receiver basicPerform: #mux withArguments: #(2 -2)) equals: 6.\x0a\x09\x09self assert: (receiver quux: 1 foo: 4) equals: 10.\x0a\x09\x09self should: [ receiver basicPerform: #quux ] raise: Error.\x0a\x09\x09self assert: receiver foo equals: 10 ]",
- referencedClasses: ["ObjectMock", "MessageNotUnderstood", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "foo:", "while:should:", "should:raise:", "mux", "mux:and:", "assert:equals:", "basicPerform:withArguments:", "quux:foo:", "basicPerform:", "foo"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiver=$recv($globals.ObjectMock)._new();
- $recv($self.receiver)._foo_((4));
- $self._while_should_("quux: anInteger foo: anotherInteger\x0a\x09\x09<jsOverride: #mux args: #(anInteger anotherInteger)>\x0a\x09\x09^ (foo := foo * anInteger + anotherInteger)",(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self.receiver)._mux();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["should:raise:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self.receiver)._mux_and_((2),(-1));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["should:raise:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv($self.receiver)._basicPerform_withArguments_("mux",[(2), (-2)]),(6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv($self.receiver)._quux_foo_((1),(4)),(10))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self.receiver)._basicPerform_("quux");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return $self._assert_equals_($recv($self.receiver)._foo(),(10));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDyadicJSOverrideDifferentNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "testDyadicJSOverrideDifferentNamesPermutated",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDyadicJSOverrideDifferentNamesPermutated\x0a\x09receiver := ObjectMock new.\x0a\x09receiver foo: 4.\x0a\x09self while: 'quux: anInteger foo: anotherInteger\x0a\x09\x09<jsOverride: #mux args: #(anotherInteger anInteger)>\x0a\x09\x09^ (foo := foo * anInteger + anotherInteger)' should: [\x0a\x09\x09self should: [ receiver mux ] raise: MessageNotUnderstood.\x0a\x09\x09self should: [ receiver mux: 2 and: -1 ] raise: MessageNotUnderstood.\x0a\x09\x09self assert: (receiver basicPerform: #mux withArguments: #(-2 2)) equals: 6.\x0a\x09\x09self assert: (receiver quux: 1 foo: 4) equals: 10.\x0a\x09\x09self should: [ receiver basicPerform: #quux ] raise: Error.\x0a\x09\x09self assert: receiver foo equals: 10 ]",
- referencedClasses: ["ObjectMock", "MessageNotUnderstood", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "foo:", "while:should:", "should:raise:", "mux", "mux:and:", "assert:equals:", "basicPerform:withArguments:", "quux:foo:", "basicPerform:", "foo"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiver=$recv($globals.ObjectMock)._new();
- $recv($self.receiver)._foo_((4));
- $self._while_should_("quux: anInteger foo: anotherInteger\x0a\x09\x09<jsOverride: #mux args: #(anotherInteger anInteger)>\x0a\x09\x09^ (foo := foo * anInteger + anotherInteger)",(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self.receiver)._mux();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["should:raise:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self.receiver)._mux_and_((2),(-1));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["should:raise:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv($self.receiver)._basicPerform_withArguments_("mux",[(-2), (2)]),(6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv($self.receiver)._quux_foo_((1),(4)),(10))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self.receiver)._basicPerform_("quux");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return $self._assert_equals_($recv($self.receiver)._foo(),(10));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDyadicJSOverrideDifferentNamesPermutated",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "testDyadicJSOverrideInOneArg",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDyadicJSOverrideInOneArg\x0a\x09receiver := ObjectMock new.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: anInteger\x0a\x09\x09<jsOverride: #mux args: #(anInteger anotherInteger)>\x0a\x09\x09^ (foo := foo + anInteger)'\x0a\x09\x09andRaise: CompilerError.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: anInteger\x0a\x09\x09<jsOverride: #mux args: #(anotherInteger anInteger)>\x0a\x09\x09^ (foo := foo + anInteger)'\x0a\x09\x09andRaise: CompilerError",
- referencedClasses: ["ObjectMock", "CompilerError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "shouldntInstall:andRaise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiver=$recv($globals.ObjectMock)._new();
- [$self._shouldntInstall_andRaise_("quux: anInteger\x0a\x09\x09<jsOverride: #mux args: #(anInteger anotherInteger)>\x0a\x09\x09^ (foo := foo + anInteger)",$globals.CompilerError)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["shouldntInstall:andRaise:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._shouldntInstall_andRaise_("quux: anInteger\x0a\x09\x09<jsOverride: #mux args: #(anotherInteger anInteger)>\x0a\x09\x09^ (foo := foo + anInteger)",$globals.CompilerError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDyadicJSOverrideInOneArg",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "testDyadicJSOverrideInUnary",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDyadicJSOverrideInUnary\x0a\x09receiver := ObjectMock new.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux <jsOverride: #mux args: #(anInteger anotherInteger)> ^ (foo := foo + 3)'\x0a\x09\x09andRaise: CompilerError",
- referencedClasses: ["ObjectMock", "CompilerError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "shouldntInstall:andRaise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiver=$recv($globals.ObjectMock)._new();
- $self._shouldntInstall_andRaise_("quux <jsOverride: #mux args: #(anInteger anotherInteger)> ^ (foo := foo + 3)",$globals.CompilerError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDyadicJSOverrideInUnary",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "testDyadicJSOverrideRepeatedArgs",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testDyadicJSOverrideRepeatedArgs\x0a\x09receiver := ObjectMock new.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: anInteger\x0a\x09\x09<jsOverride: #mux args: #(anInteger anInteger)>\x0a\x09\x09^ (foo := foo + anInteger)'\x0a\x09\x09andRaise: CompilerError.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: anInteger foo: anotherInteger\x0a\x09\x09<jsOverride: #mux args: #(anInteger anInteger)>\x0a\x09\x09^ (foo := foo * anInteger + anotherInteger)'\x0a\x09\x09andRaise: CompilerError",
- referencedClasses: ["ObjectMock", "CompilerError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "shouldntInstall:andRaise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiver=$recv($globals.ObjectMock)._new();
- [$self._shouldntInstall_andRaise_("quux: anInteger\x0a\x09\x09<jsOverride: #mux args: #(anInteger anInteger)>\x0a\x09\x09^ (foo := foo + anInteger)",$globals.CompilerError)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["shouldntInstall:andRaise:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._shouldntInstall_andRaise_("quux: anInteger foo: anotherInteger\x0a\x09\x09<jsOverride: #mux args: #(anInteger anInteger)>\x0a\x09\x09^ (foo := foo * anInteger + anotherInteger)",$globals.CompilerError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testDyadicJSOverrideRepeatedArgs",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "testInvalidAssignment",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testInvalidAssignment\x0a\x09self shouldntInstall: 'foo:a a:=1' andRaise: InvalidAssignmentError.\x0a\x09self shouldntInstall: 'foo false:=1' andRaise: InvalidAssignmentError.\x0a\x09self shouldntInstall: 'foo console:=1' andRaise: InvalidAssignmentError.\x0a\x09self shouldntInstall: 'foo Number:=1' andRaise: InvalidAssignmentError",
- referencedClasses: ["InvalidAssignmentError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["shouldntInstall:andRaise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._shouldntInstall_andRaise_("foo:a a:=1",$globals.InvalidAssignmentError)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["shouldntInstall:andRaise:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._shouldntInstall_andRaise_("foo false:=1",$globals.InvalidAssignmentError)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["shouldntInstall:andRaise:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._shouldntInstall_andRaise_("foo console:=1",$globals.InvalidAssignmentError)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["shouldntInstall:andRaise:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._shouldntInstall_andRaise_("foo Number:=1",$globals.InvalidAssignmentError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testInvalidAssignment",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "testMistypedPragmaJSStatement",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testMistypedPragmaJSStatement\x0a\x09self shouldntInstall: 'foo < inlineJS: ''return ''foo'''' >' andRaise: ParseError",
- referencedClasses: ["ParseError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["shouldntInstall:andRaise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._shouldntInstall_andRaise_("foo < inlineJS: 'return 'foo'' >",$globals.ParseError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMistypedPragmaJSStatement",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "testMonadicJSOverrideArgMismatch",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testMonadicJSOverrideArgMismatch\x0a\x09receiver := ObjectMock new.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: aNumber <jsOverride: #mux args: #(anInteger)> ^ (foo := foo + aNumber)'\x0a\x09\x09andRaise: CompilerError",
- referencedClasses: ["ObjectMock", "CompilerError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "shouldntInstall:andRaise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiver=$recv($globals.ObjectMock)._new();
- $self._shouldntInstall_andRaise_("quux: aNumber <jsOverride: #mux args: #(anInteger)> ^ (foo := foo + aNumber)",$globals.CompilerError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMonadicJSOverrideArgMismatch",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "testMonadicJSOverrideDifferentNames",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testMonadicJSOverrideDifferentNames\x0a\x09receiver := ObjectMock new.\x0a\x09receiver foo: 4.\x0a\x09self while: 'quux: anInteger <jsOverride: #mux args: #(anInteger)> ^ (foo := foo + anInteger)' should: [\x0a\x09\x09self should: [ receiver mux ] raise: MessageNotUnderstood.\x0a\x09\x09self should: [ receiver mux: 2 ] raise: MessageNotUnderstood.\x0a\x09\x09self assert: (receiver basicPerform: #mux withArguments: #(2)) equals: 6.\x0a\x09\x09self assert: (receiver quux: 4) equals: 10.\x0a\x09\x09self should: [ receiver basicPerform: #quux ] raise: Error.\x0a\x09\x09self assert: receiver foo equals: 10 ]",
- referencedClasses: ["ObjectMock", "MessageNotUnderstood", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "foo:", "while:should:", "should:raise:", "mux", "mux:", "assert:equals:", "basicPerform:withArguments:", "quux:", "basicPerform:", "foo"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiver=$recv($globals.ObjectMock)._new();
- $recv($self.receiver)._foo_((4));
- $self._while_should_("quux: anInteger <jsOverride: #mux args: #(anInteger)> ^ (foo := foo + anInteger)",(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self.receiver)._mux();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["should:raise:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self.receiver)._mux_((2));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["should:raise:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv($self.receiver)._basicPerform_withArguments_("mux",[(2)]),(6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv($self.receiver)._quux_((4)),(10))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self.receiver)._basicPerform_("quux");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return $self._assert_equals_($recv($self.receiver)._foo(),(10));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMonadicJSOverrideDifferentNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "testMonadicJSOverrideInUnary",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testMonadicJSOverrideInUnary\x0a\x09receiver := ObjectMock new.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux <jsOverride: #mux args: #(anInteger)> ^ (foo := foo + 3)'\x0a\x09\x09andRaise: CompilerError",
- referencedClasses: ["ObjectMock", "CompilerError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "shouldntInstall:andRaise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiver=$recv($globals.ObjectMock)._new();
- $self._shouldntInstall_andRaise_("quux <jsOverride: #mux args: #(anInteger)> ^ (foo := foo + 3)",$globals.CompilerError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testMonadicJSOverrideInUnary",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "testNiladicJSOverride",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNiladicJSOverride\x0a\x09receiver := ObjectMock new.\x0a\x09receiver foo: 4.\x0a\x09self while: 'baz <jsOverride: #baz> ^ (foo := foo + 3)' should: [\x0a\x09\x09self assert: receiver baz equals: 7.\x0a\x09\x09self assert: (receiver basicPerform: #baz) equals: 10.\x0a\x09\x09self assert: receiver baz equals: 13.\x0a\x09\x09self assert: receiver foo equals: 13 ]",
- referencedClasses: ["ObjectMock"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "foo:", "while:should:", "assert:equals:", "baz", "basicPerform:", "foo"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiver=$recv($globals.ObjectMock)._new();
- $recv($self.receiver)._foo_((4));
- $self._while_should_("baz <jsOverride: #baz> ^ (foo := foo + 3)",(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv($self.receiver)._baz()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["baz"]=1
- //>>excludeEnd("ctx");
- ][0],(7))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv($self.receiver)._basicPerform_("baz"),(10))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv($self.receiver)._baz(),(13))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=3
- //>>excludeEnd("ctx");
- ][0];
- return $self._assert_equals_($recv($self.receiver)._foo(),(13));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNiladicJSOverride",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "testNiladicJSOverrideDifferentNames",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNiladicJSOverrideDifferentNames\x0a\x09receiver := ObjectMock new.\x0a\x09receiver foo: 4.\x0a\x09self while: 'quux <jsOverride: #mux> ^ (foo := foo + 3)' should: [\x0a\x09\x09self should: [ receiver mux ] raise: MessageNotUnderstood.\x0a\x09\x09self assert: (receiver basicPerform: #mux) equals: 7.\x0a\x09\x09self assert: receiver quux equals: 10.\x0a\x09\x09self should: [ receiver basicPerform: #quux ] raise: Error.\x0a\x09\x09self assert: receiver foo equals: 10 ]",
- referencedClasses: ["ObjectMock", "MessageNotUnderstood", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "foo:", "while:should:", "should:raise:", "mux", "assert:equals:", "basicPerform:", "quux", "foo"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiver=$recv($globals.ObjectMock)._new();
- $recv($self.receiver)._foo_((4));
- $self._while_should_("quux <jsOverride: #mux> ^ (foo := foo + 3)",(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self.receiver)._mux();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["should:raise:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($self.receiver)._basicPerform_("mux")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["basicPerform:"]=1
- //>>excludeEnd("ctx");
- ][0],(7))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv($self.receiver)._quux(),(10))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self.receiver)._basicPerform_("quux");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return $self._assert_equals_($recv($self.receiver)._foo(),(10));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNiladicJSOverrideDifferentNames",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "testNiladicJSOverrideInOneArg",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testNiladicJSOverrideInOneArg\x0a\x09receiver := ObjectMock new.\x0a\x09self\x0a\x09\x09shouldntInstall: 'quux: anInteger <jsOverride: #mux> ^ (foo := foo + anInteger)'\x0a\x09\x09andRaise: CompilerError",
- referencedClasses: ["ObjectMock", "CompilerError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "shouldntInstall:andRaise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiver=$recv($globals.ObjectMock)._new();
- $self._shouldntInstall_andRaise_("quux: anInteger <jsOverride: #mux> ^ (foo := foo + anInteger)",$globals.CompilerError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNiladicJSOverrideInOneArg",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "testPragmaInBlock",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testPragmaInBlock\x0a\x09self shouldntInstall: 'foo ^ [ < fooBar > 4 ] value' andRaise: ParseError",
- referencedClasses: ["ParseError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["shouldntInstall:andRaise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._shouldntInstall_andRaise_("foo ^ [ < fooBar > 4 ] value",$globals.ParseError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPragmaInBlock",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "testTriadicJSOverrideDifferentNamesPermutated",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testTriadicJSOverrideDifferentNamesPermutated\x0a\x09receiver := ObjectMock new.\x0a\x09receiver foo: 4.\x0a\x09self while: 'quux: anInteger foo: anotherInteger bar: yaInt\x0a\x09\x09<jsOverride: #mux args: #(yaInt anInteger anotherInteger)>\x0a\x09\x09^ (foo := foo * anInteger + anotherInteger - yaInt)' should: [\x0a\x09\x09self should: [ receiver mux ] raise: MessageNotUnderstood.\x0a\x09\x09self should: [ receiver mux: 2 and: -1 and: 0 ] raise: MessageNotUnderstood.\x0a\x09\x09self assert: (receiver basicPerform: #mux withArguments: #(5 2 3)) equals: 6.\x0a\x09\x09self assert: (receiver quux: 1 foo: 4 bar: 20) equals: -10.\x0a\x09\x09self should: [ receiver basicPerform: #quux ] raise: Error.\x0a\x09\x09self assert: receiver foo equals: -10 ]",
- referencedClasses: ["ObjectMock", "MessageNotUnderstood", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "foo:", "while:should:", "should:raise:", "mux", "mux:and:and:", "assert:equals:", "basicPerform:withArguments:", "quux:foo:bar:", "basicPerform:", "foo"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.receiver=$recv($globals.ObjectMock)._new();
- $recv($self.receiver)._foo_((4));
- $self._while_should_("quux: anInteger foo: anotherInteger bar: yaInt\x0a\x09\x09<jsOverride: #mux args: #(yaInt anInteger anotherInteger)>\x0a\x09\x09^ (foo := foo * anInteger + anotherInteger - yaInt)",(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self.receiver)._mux();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["should:raise:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self.receiver)._mux_and_and_((2),(-1),(0));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
- //>>excludeEnd("ctx");
- }),$globals.MessageNotUnderstood)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["should:raise:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv($self.receiver)._basicPerform_withArguments_("mux",[(5), (2), (3)]),(6))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_($recv($self.receiver)._quux_foo_bar_((1),(4),(20)),(-10))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self.receiver)._basicPerform_("quux");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,4)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return $self._assert_equals_($recv($self.receiver)._foo(),(-10));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testTriadicJSOverrideDifferentNamesPermutated",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest);
- $core.addMethod(
- $core.method({
- selector: "isAbstract",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isAbstract\x0a\x09^ self name = AbstractCodeGeneratorInstallTest name",
- referencedClasses: ["AbstractCodeGeneratorInstallTest"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["=", "name"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv([$self._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["name"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq($recv($globals.AbstractCodeGeneratorInstallTest)._name());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isAbstract",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AbstractCodeGeneratorInstallTest.a$cls);
- $core.addClass("CodeGeneratorInstallTest", $globals.AbstractCodeGeneratorInstallTest, "Compiler-Tests");
- $core.addClass("InliningCodeGeneratorInstallTest", $globals.AbstractCodeGeneratorInstallTest, "Compiler-Tests");
- $core.addClass("ScopeVarTest", $globals.TestCase, "Compiler-Tests");
- $core.addMethod(
- $core.method({
- selector: "testClassRefVar",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testClassRefVar\x0a\x09| node binding |\x0a\x09node := VariableNode new\x0a\x09\x09identifier: 'Object';\x0a\x09\x09yourself.\x0a\x09SemanticAnalyzer new \x0a\x09\x09pushScope: MethodLexicalScope new;\x0a\x09\x09visit: node.\x0a\x09binding := node binding.\x0a\x09self deny: binding isAssignable.\x0a\x09self deny: binding isIdempotent.\x0a\x09self assert: (binding alias includesSubString: 'Object').\x0a\x09self assert: (binding alias ~= 'Object')",
- referencedClasses: ["VariableNode", "SemanticAnalyzer", "MethodLexicalScope"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["identifier:", "new", "yourself", "pushScope:", "visit:", "binding", "deny:", "isAssignable", "isIdempotent", "assert:", "includesSubString:", "alias", "~="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var node,binding;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=[$recv($globals.VariableNode)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._identifier_("Object");
- node=$recv($1)._yourself();
- $2=[$recv($globals.SemanticAnalyzer)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._pushScope_($recv($globals.MethodLexicalScope)._new());
- $recv($2)._visit_(node);
- binding=$recv(node)._binding();
- [$self._deny_($recv(binding)._isAssignable())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_($recv(binding)._isIdempotent());
- [$self._assert_($recv([$recv(binding)._alias()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["alias"]=1
- //>>excludeEnd("ctx");
- ][0])._includesSubString_("Object"))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_($recv($recv(binding)._alias()).__tild_eq("Object"));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testClassRefVar",{node:node,binding:binding})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ScopeVarTest);
- $core.addMethod(
- $core.method({
- selector: "testExternallyKnownVar",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testExternallyKnownVar\x0a\x09| node binding |\x0a\x09node := VariableNode new\x0a\x09\x09identifier: 'console';\x0a\x09\x09yourself.\x0a\x09SemanticAnalyzer new \x0a\x09\x09pushScope: MethodLexicalScope new;\x0a\x09\x09visit: node.\x0a\x09binding := node binding.\x0a\x09self deny: binding isAssignable.\x0a\x09self deny: binding isIdempotent.\x0a\x09self assert: binding alias equals: 'console'",
- referencedClasses: ["VariableNode", "SemanticAnalyzer", "MethodLexicalScope"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["identifier:", "new", "yourself", "pushScope:", "visit:", "binding", "deny:", "isAssignable", "isIdempotent", "assert:equals:", "alias"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var node,binding;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=[$recv($globals.VariableNode)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._identifier_("console");
- node=$recv($1)._yourself();
- $2=[$recv($globals.SemanticAnalyzer)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._pushScope_($recv($globals.MethodLexicalScope)._new());
- $recv($2)._visit_(node);
- binding=$recv(node)._binding();
- [$self._deny_($recv(binding)._isAssignable())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_($recv(binding)._isIdempotent());
- $self._assert_equals_($recv(binding)._alias(),"console");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testExternallyKnownVar",{node:node,binding:binding})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ScopeVarTest);
- $core.addMethod(
- $core.method({
- selector: "testExternallyUnknownVar",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testExternallyUnknownVar\x0a\x09| node |\x0a\x09node := VariableNode new\x0a\x09\x09identifier: 'bzzz';\x0a\x09\x09yourself.\x0a\x09self \x0a\x09\x09should: [\x0a\x09\x09\x09SemanticAnalyzer new \x0a\x09\x09\x09pushScope: MethodLexicalScope new;\x0a\x09\x09\x09visit: node ]\x0a\x09\x09raise: UnknownVariableError",
- referencedClasses: ["VariableNode", "SemanticAnalyzer", "MethodLexicalScope", "UnknownVariableError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["identifier:", "new", "yourself", "should:raise:", "pushScope:", "visit:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var node;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=[$recv($globals.VariableNode)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._identifier_("bzzz");
- node=$recv($1)._yourself();
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $2=[$recv($globals.SemanticAnalyzer)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["new"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._pushScope_($recv($globals.MethodLexicalScope)._new());
- return $recv($2)._visit_(node);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.UnknownVariableError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testExternallyUnknownVar",{node:node})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ScopeVarTest);
- $core.addMethod(
- $core.method({
- selector: "testPseudoVar",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testPseudoVar\x0a\x09#('self' 'super' 'true' 'false' 'nil' 'thisContext') do: [ :each |\x0a\x09\x09| binding |\x0a\x09\x09binding := MethodLexicalScope new bindingFor: each.\x0a\x09\x09self deny: binding isAssignable.\x0a\x09\x09self assert: binding isIdempotent ]",
- referencedClasses: ["MethodLexicalScope"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "bindingFor:", "new", "deny:", "isAssignable", "assert:", "isIdempotent"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- ["self", "super", "true", "false", "nil", "thisContext"]._do_((function(each){
- var binding;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- binding=$recv($recv($globals.MethodLexicalScope)._new())._bindingFor_(each);
- $self._deny_($recv(binding)._isAssignable());
- return $self._assert_($recv(binding)._isIdempotent());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each,binding:binding},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPseudoVar",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ScopeVarTest);
- $core.addMethod(
- $core.method({
- selector: "testSlotVar",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testSlotVar\x0a\x09| binding |\x0a\x09binding := MethodLexicalScope new\x0a\x09\x09addSlotVar: 'bzzz';\x0a\x09\x09bindingFor: 'bzzz'.\x0a\x09self assert: binding isAssignable.\x0a\x09self deny: binding isIdempotent.\x0a\x09self assert: (binding alias includesSubString: 'bzzz').\x0a\x09self assert: (binding alias ~= 'bzzz')",
- referencedClasses: ["MethodLexicalScope"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addSlotVar:", "new", "bindingFor:", "assert:", "isAssignable", "deny:", "isIdempotent", "includesSubString:", "alias", "~="]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var binding;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.MethodLexicalScope)._new();
- $recv($1)._addSlotVar_("bzzz");
- binding=$recv($1)._bindingFor_("bzzz");
- [$self._assert_($recv(binding)._isAssignable())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._deny_($recv(binding)._isIdempotent());
- [$self._assert_($recv([$recv(binding)._alias()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["alias"]=1
- //>>excludeEnd("ctx");
- ][0])._includesSubString_("bzzz"))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_($recv($recv(binding)._alias()).__tild_eq("bzzz"));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testSlotVar",{binding:binding})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ScopeVarTest);
- $core.addMethod(
- $core.method({
- selector: "testTempVar",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testTempVar\x0a\x09| binding |\x0a\x09binding := MethodLexicalScope new\x0a\x09\x09addTemp: 'bzzz';\x0a\x09\x09bindingFor: 'bzzz'.\x0a\x09self assert: binding isAssignable.\x0a\x09self deny: binding isIdempotent.\x0a\x09self assert: binding alias equals: 'bzzz'",
- referencedClasses: ["MethodLexicalScope"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addTemp:", "new", "bindingFor:", "assert:", "isAssignable", "deny:", "isIdempotent", "assert:equals:", "alias"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var binding;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.MethodLexicalScope)._new();
- $recv($1)._addTemp_("bzzz");
- binding=$recv($1)._bindingFor_("bzzz");
- $self._assert_($recv(binding)._isAssignable());
- $self._deny_($recv(binding)._isIdempotent());
- $self._assert_equals_($recv(binding)._alias(),"bzzz");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testTempVar",{binding:binding})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ScopeVarTest);
- $core.addMethod(
- $core.method({
- selector: "testUnknownVar",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testUnknownVar\x0a\x09self assert: (MethodLexicalScope new bindingFor: 'bzzz') isNil",
- referencedClasses: ["MethodLexicalScope"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "isNil", "bindingFor:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_($recv($recv($recv($globals.MethodLexicalScope)._new())._bindingFor_("bzzz"))._isNil());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testUnknownVar",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ScopeVarTest);
- $core.addClass("SemanticAnalyzerTest", $globals.TestCase, "Compiler-Tests");
- $core.setSlots($globals.SemanticAnalyzerTest, ["analyzer"]);
- $core.addMethod(
- $core.method({
- selector: "setUp",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "setUp\x0a\x09analyzer := SemanticAnalyzer on: Object",
- referencedClasses: ["SemanticAnalyzer", "Object"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.analyzer=$recv($globals.SemanticAnalyzer)._on_($globals.Object);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setUp",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzerTest);
- $core.addMethod(
- $core.method({
- selector: "testAssignment",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Smalltalk", "InvalidAssignmentError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "should:raise:", "visit:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var src,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- src="foo self := 1";
- ast=$recv($globals.Smalltalk)._parse_(src);
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self.analyzer)._visit_(ast);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.InvalidAssignmentError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAssignment",{src:src,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzerTest);
- $core.addMethod(
- $core.method({
- selector: "testNonLocalReturn",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "visit:", "deny:", "hasNonLocalReturn", "scope"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var src,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- src="foo | a | a + 1. ^ a";
- ast=$recv($globals.Smalltalk)._parse_(src);
- $recv($self.analyzer)._visit_(ast);
- $self._deny_($recv($recv(ast)._scope())._hasNonLocalReturn());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn",{src:src,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzerTest);
- $core.addMethod(
- $core.method({
- selector: "testNonLocalReturn2",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "visit:", "assert:", "hasNonLocalReturn", "scope"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var src,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- src="foo | a | a + 1. [ [ ^ a] ]";
- ast=$recv($globals.Smalltalk)._parse_(src);
- $recv($self.analyzer)._visit_(ast);
- $self._assert_($recv($recv(ast)._scope())._hasNonLocalReturn());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testNonLocalReturn2",{src:src,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzerTest);
- $core.addMethod(
- $core.method({
- selector: "testScope",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testScope\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ | b | b := a ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self deny: ast sequenceNode dagChildren last scope == ast scope.",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "visit:", "deny:", "==", "scope", "last", "dagChildren", "sequenceNode"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var src,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- src="foo | a | a + 1. [ | b | b := a ]";
- ast=$recv($globals.Smalltalk)._parse_(src);
- $recv($self.analyzer)._visit_(ast);
- $self._deny_($recv([$recv($recv($recv($recv(ast)._sequenceNode())._dagChildren())._last())._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq_eq($recv(ast)._scope()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testScope",{src:src,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzerTest);
- $core.addMethod(
- $core.method({
- selector: "testScope2",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testScope2\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ [ | b | b := a ] ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self deny: ast sequenceNode dagChildren last sequenceNode dagChildren first scope == ast scope.",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "visit:", "deny:", "==", "scope", "first", "dagChildren", "sequenceNode", "last"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var src,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- src="foo | a | a + 1. [ [ | b | b := a ] ]";
- ast=$recv($globals.Smalltalk)._parse_(src);
- $recv($self.analyzer)._visit_(ast);
- $self._deny_($recv([$recv($recv([$recv([$recv($recv($recv($recv(ast)._sequenceNode())._dagChildren())._last())._sequenceNode()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sequenceNode"]=1
- //>>excludeEnd("ctx");
- ][0])._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=1
- //>>excludeEnd("ctx");
- ][0])._first())._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq_eq($recv(ast)._scope()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testScope2",{src:src,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzerTest);
- $core.addMethod(
- $core.method({
- selector: "testScopeLevel",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testScopeLevel\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ [ | b | b := a ] ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09self assert: ast scope scopeLevel equals: 1.\x0a\x09self assert: ast sequenceNode dagChildren last sequenceNode dagChildren first scope scopeLevel equals: 3",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "visit:", "assert:equals:", "scopeLevel", "scope", "first", "dagChildren", "sequenceNode", "last"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var src,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- src="foo | a | a + 1. [ [ | b | b := a ] ]";
- ast=$recv($globals.Smalltalk)._parse_(src);
- $recv($self.analyzer)._visit_(ast);
- [$self._assert_equals_([$recv([$recv(ast)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=1
- //>>excludeEnd("ctx");
- ][0])._scopeLevel()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scopeLevel"]=1
- //>>excludeEnd("ctx");
- ][0],(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv($recv($recv([$recv([$recv($recv($recv($recv(ast)._sequenceNode())._dagChildren())._last())._sequenceNode()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sequenceNode"]=1
- //>>excludeEnd("ctx");
- ][0])._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=1
- //>>excludeEnd("ctx");
- ][0])._first())._scope())._scopeLevel(),(3));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testScopeLevel",{src:src,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzerTest);
- $core.addMethod(
- $core.method({
- selector: "testUnknownVariables",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Smalltalk", "UnknownVariableError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "should:raise:", "visit:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var src,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- src="foo | a | b + a";
- ast=$recv($globals.Smalltalk)._parse_(src);
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self.analyzer)._visit_(ast);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.UnknownVariableError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testUnknownVariables",{src:src,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzerTest);
- $core.addMethod(
- $core.method({
- selector: "testUnknownVariablesWithScope",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Smalltalk", "UnknownVariableError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "should:raise:", "visit:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var src,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- src="foo | a b | [ c + 1. [ a + 1. d + 1 ]]";
- ast=$recv($globals.Smalltalk)._parse_(src);
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self.analyzer)._visit_(ast);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.UnknownVariableError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testUnknownVariablesWithScope",{src:src,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzerTest);
- $core.addMethod(
- $core.method({
- selector: "testVariableShadowing",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testVariableShadowing\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "visit:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var src,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- src="foo | a | a + 1";
- ast=$recv($globals.Smalltalk)._parse_(src);
- $recv($self.analyzer)._visit_(ast);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testVariableShadowing",{src:src,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzerTest);
- $core.addMethod(
- $core.method({
- selector: "testVariableShadowing2",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Smalltalk", "ShadowingVariableError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "should:raise:", "visit:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var src,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- src="foo | a | a + 1. [ | a | a := 2 ]";
- ast=$recv($globals.Smalltalk)._parse_(src);
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self.analyzer)._visit_(ast);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.ShadowingVariableError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testVariableShadowing2",{src:src,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzerTest);
- $core.addMethod(
- $core.method({
- selector: "testVariableShadowing3",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testVariableShadowing3\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ | b | b := 2 ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "visit:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var src,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- src="foo | a | a + 1. [ | b | b := 2 ]";
- ast=$recv($globals.Smalltalk)._parse_(src);
- $recv($self.analyzer)._visit_(ast);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testVariableShadowing3",{src:src,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzerTest);
- $core.addMethod(
- $core.method({
- selector: "testVariableShadowing4",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testVariableShadowing4\x0a\x09| src ast |\x0a\x09src := 'foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "visit:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var src,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- src="foo | a | a + 1. [ [ [ | b | b := 2 ] ] ]";
- ast=$recv($globals.Smalltalk)._parse_(src);
- $recv($self.analyzer)._visit_(ast);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testVariableShadowing4",{src:src,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzerTest);
- $core.addMethod(
- $core.method({
- selector: "testVariableShadowing5",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Smalltalk", "ShadowingVariableError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "should:raise:", "visit:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var src,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- src="foo | a | a + 1. [ [ [ | a | a := 2 ] ] ]";
- ast=$recv($globals.Smalltalk)._parse_(src);
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self.analyzer)._visit_(ast);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.ShadowingVariableError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testVariableShadowing5",{src:src,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzerTest);
- $core.addMethod(
- $core.method({
- selector: "testVariablesLookup",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testVariablesLookup\x0a\x09| src ast |\x0a\x0a\x09src := 'foo | a | a + 1. [ | b | b := a ]'.\x0a\x09ast := Smalltalk parse: src.\x0a\x09analyzer visit: ast.\x0a\x0a\x09\x22Binding for `a` in the message send\x22\x0a\x09self assert: ast sequenceNode dagChildren first receiver binding isAssignable.\x0a\x09self assert: ast sequenceNode dagChildren first receiver binding alias equals: 'a'.\x0a\x09self assert: ast sequenceNode dagChildren first receiver binding scope == ast scope.\x0a\x0a\x09\x22Binding for `b`\x22\x0a\x09self assert: ast sequenceNode dagChildren last sequenceNode dagChildren first left binding isAssignable.\x0a\x09self assert: ast sequenceNode dagChildren last sequenceNode dagChildren first left binding alias equals: 'b'.\x0a\x09self assert: ast sequenceNode dagChildren last sequenceNode dagChildren first left binding scope == ast sequenceNode dagChildren last scope.",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "visit:", "assert:", "isAssignable", "binding", "receiver", "first", "dagChildren", "sequenceNode", "assert:equals:", "alias", "==", "scope", "left", "last"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var src,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- src="foo | a | a + 1. [ | b | b := a ]";
- ast=$recv($globals.Smalltalk)._parse_(src);
- $recv($self.analyzer)._visit_(ast);
- [$self._assert_([$recv([$recv([$recv([$recv([$recv([$recv(ast)._sequenceNode()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sequenceNode"]=1
- //>>excludeEnd("ctx");
- ][0])._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=1
- //>>excludeEnd("ctx");
- ][0])._first()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["first"]=1
- //>>excludeEnd("ctx");
- ][0])._receiver()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["receiver"]=1
- //>>excludeEnd("ctx");
- ][0])._binding()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["binding"]=1
- //>>excludeEnd("ctx");
- ][0])._isAssignable()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["isAssignable"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv([$recv([$recv([$recv([$recv([$recv(ast)._sequenceNode()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sequenceNode"]=2
- //>>excludeEnd("ctx");
- ][0])._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=2
- //>>excludeEnd("ctx");
- ][0])._first()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["first"]=2
- //>>excludeEnd("ctx");
- ][0])._receiver()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["receiver"]=2
- //>>excludeEnd("ctx");
- ][0])._binding()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["binding"]=2
- //>>excludeEnd("ctx");
- ][0])._alias()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["alias"]=1
- //>>excludeEnd("ctx");
- ][0],"a")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_([$recv([$recv([$recv($recv([$recv([$recv([$recv(ast)._sequenceNode()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sequenceNode"]=3
- //>>excludeEnd("ctx");
- ][0])._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=3
- //>>excludeEnd("ctx");
- ][0])._first()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["first"]=3
- //>>excludeEnd("ctx");
- ][0])._receiver())._binding()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["binding"]=3
- //>>excludeEnd("ctx");
- ][0])._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq_eq([$recv(ast)._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["=="]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_($recv([$recv([$recv([$recv([$recv([$recv([$recv([$recv([$recv(ast)._sequenceNode()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sequenceNode"]=5
- //>>excludeEnd("ctx");
- ][0])._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=5
- //>>excludeEnd("ctx");
- ][0])._last()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["last"]=1
- //>>excludeEnd("ctx");
- ][0])._sequenceNode()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sequenceNode"]=4
- //>>excludeEnd("ctx");
- ][0])._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=4
- //>>excludeEnd("ctx");
- ][0])._first()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["first"]=4
- //>>excludeEnd("ctx");
- ][0])._left()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["left"]=1
- //>>excludeEnd("ctx");
- ][0])._binding()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["binding"]=4
- //>>excludeEnd("ctx");
- ][0])._isAssignable())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($recv([$recv([$recv([$recv([$recv([$recv([$recv([$recv([$recv(ast)._sequenceNode()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sequenceNode"]=7
- //>>excludeEnd("ctx");
- ][0])._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=7
- //>>excludeEnd("ctx");
- ][0])._last()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["last"]=2
- //>>excludeEnd("ctx");
- ][0])._sequenceNode()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sequenceNode"]=6
- //>>excludeEnd("ctx");
- ][0])._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=6
- //>>excludeEnd("ctx");
- ][0])._first()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["first"]=5
- //>>excludeEnd("ctx");
- ][0])._left()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["left"]=2
- //>>excludeEnd("ctx");
- ][0])._binding()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["binding"]=5
- //>>excludeEnd("ctx");
- ][0])._alias(),"b");
- $self._assert_($recv([$recv($recv($recv($recv([$recv([$recv([$recv([$recv([$recv(ast)._sequenceNode()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sequenceNode"]=9
- //>>excludeEnd("ctx");
- ][0])._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=9
- //>>excludeEnd("ctx");
- ][0])._last()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["last"]=3
- //>>excludeEnd("ctx");
- ][0])._sequenceNode()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["sequenceNode"]=8
- //>>excludeEnd("ctx");
- ][0])._dagChildren()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["dagChildren"]=8
- //>>excludeEnd("ctx");
- ][0])._first())._left())._binding())._scope()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["scope"]=3
- //>>excludeEnd("ctx");
- ][0]).__eq_eq($recv($recv($recv($recv(ast)._sequenceNode())._dagChildren())._last())._scope()));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testVariablesLookup",{src:src,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SemanticAnalyzerTest);
- $core.addClass("AISemanticAnalyzerTest", $globals.SemanticAnalyzerTest, "Compiler-Tests");
- $core.addMethod(
- $core.method({
- selector: "setUp",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["AISemanticAnalyzer", "Object", "AIContext"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["context:", "on:", "defineLocal:", "new", "localAt:put:", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $1=$recv($globals.AISemanticAnalyzer)._on_($globals.Object);
- $2=$recv($globals.AIContext)._new();
- $recv($2)._defineLocal_("local");
- $recv($2)._localAt_put_("local",(3));
- $recv($1)._context_([$recv($2)._yourself()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["yourself"]=1
- //>>excludeEnd("ctx");
- ][0]);
- $self.analyzer=$recv($1)._yourself();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setUp",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AISemanticAnalyzerTest);
- $core.addMethod(
- $core.method({
- selector: "testContextVariables",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Smalltalk", "UnknownVariableError"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "shouldnt:raise:", "visit:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var src,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- src="foo | a | local + a";
- ast=$recv($globals.Smalltalk)._parse_(src);
- $self._shouldnt_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self.analyzer)._visit_(ast);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.UnknownVariableError);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testContextVariables",{src:src,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AISemanticAnalyzerTest);
- $core.addTrait("TASTCompilingTest", "Compiler-Tests");
- $core.addMethod(
- $core.method({
- selector: "codeGeneratorClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "codeGeneratorClass\x0a\x09self subclassResponsibility",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclassResponsibility"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._subclassResponsibility();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"codeGeneratorClass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TASTCompilingTest);
- $core.addMethod(
- $core.method({
- selector: "compiler",
- protocol: "factory",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "compiler\x0a\x09^ Compiler new\x0a\x09\x09codeGeneratorClass: self codeGeneratorClass;\x0a\x09\x09yourself",
- referencedClasses: ["Compiler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["codeGeneratorClass:", "new", "codeGeneratorClass", "yourself"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$recv($globals.Compiler)._new();
- $recv($1)._codeGeneratorClass_($self._codeGeneratorClass());
- return $recv($1)._yourself();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"compiler",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TASTCompilingTest);
- $core.addMethod(
- $core.method({
- selector: "install:forClass:",
- protocol: "compiling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aClass"],
- source: "install: aString forClass: aClass\x0a\x09^ self compiler\x0a\x09\x09install: aString\x0a\x09\x09forClass: aClass\x0a\x09\x09protocol: 'tests'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["install:forClass:protocol:", "compiler"]
- }, function ($methodClass){ return function (aString,aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._compiler())._install_forClass_protocol_(aString,aClass,"tests");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"install:forClass:",{aString:aString,aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TASTCompilingTest);
- $core.addMethod(
- $core.method({
- selector: "while:inClass:should:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aClass", "aBlock"],
- source: "while: aString inClass: aClass should: aBlock\x0a\x09| method |\x0a\x0a\x09[\x0a\x09\x09method := self install: aString forClass: aClass.\x0a\x09\x09aBlock value: method ]\x0a\x09ensure: [ method ifNotNil: [ aClass removeCompiledMethod: method ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ensure:", "install:forClass:", "value:", "ifNotNil:", "removeCompiledMethod:"]
- }, function ($methodClass){ return function (aString,aClass,aBlock){
- var self=this,$self=this;
- var method;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- method=$self._install_forClass_(aString,aClass);
- return $recv(aBlock)._value_(method);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))._ensure_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $1=method;
- if($1 == null || $1.a$nil){
- return $1;
- } else {
- return $recv(aClass)._removeCompiledMethod_(method);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"while:inClass:should:",{aString:aString,aClass:aClass,aBlock:aBlock,method:method})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TASTCompilingTest);
- $core.addMethod(
- $core.method({
- selector: "while:should:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aBlock"],
- source: "while: aString should: aBlock\x0a\x09self while: aString inClass: self receiver class should: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["while:inClass:should:", "class", "receiver"]
- }, function ($methodClass){ return function (aString,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._while_inClass_should_(aString,$recv($self._receiver())._class(),aBlock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"while:should:",{aString:aString,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TASTCompilingTest);
- $core.addTrait("TASTParsingTest", "Compiler-Tests");
- $core.addMethod(
- $core.method({
- selector: "parse:forClass:",
- protocol: "parsing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aClass"],
- source: "parse: aString forClass: aClass\x0a\x09^ Compiler new\x0a\x09\x09ast: aString\x0a\x09\x09forClass: aClass\x0a\x09\x09protocol: 'test'",
- referencedClasses: ["Compiler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ast:forClass:protocol:", "new"]
- }, function ($methodClass){ return function (aString,aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Compiler)._new())._ast_forClass_protocol_(aString,aClass,"test");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"parse:forClass:",{aString:aString,aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TASTParsingTest);
- $core.addTrait("TCTDebugged", "Compiler-Tests");
- $core.addMethod(
- $core.method({
- selector: "interpret:forClass:receiver:withArguments:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aClass", "anObject", "aDictionary"],
- source: "interpret: aString forClass: aClass receiver: anObject withArguments: aDictionary\x0a\x09\x22The food is a methodNode. Interpret the sequenceNode only\x22\x0a\x09\x0a\x09| ctx |\x0a\x09\x0a\x09ctx := self prepareContextFor: aString class: aClass receiver: anObject withArguments: aDictionary.\x0a\x09\x0a\x09^ (ASTDebugger context: ctx) proceed; result",
- referencedClasses: ["ASTDebugger"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["prepareContextFor:class:receiver:withArguments:", "proceed", "context:", "result"]
- }, function ($methodClass){ return function (aString,aClass,anObject,aDictionary){
- var self=this,$self=this;
- var ctx;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- ctx=$self._prepareContextFor_class_receiver_withArguments_(aString,aClass,anObject,aDictionary);
- $1=$recv($globals.ASTDebugger)._context_(ctx);
- $recv($1)._proceed();
- return $recv($1)._result();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"interpret:forClass:receiver:withArguments:",{aString:aString,aClass:aClass,anObject:anObject,aDictionary:aDictionary,ctx:ctx})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TCTDebugged);
- $core.addTrait("TCTExecuted", "Compiler-Tests");
- $core.addMethod(
- $core.method({
- selector: "while:inClass:should:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aClass", "aBlock"],
- source: "while: aString inClass: aClass should: aBlock\x0a\x09super\x0a\x09\x09while: aString\x0a\x09\x09inClass: aClass\x0a\x09\x09should: [ :method | aBlock value: [\x0a\x09\x09\x09self receiver perform: method selector withArguments: self arguments ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["while:inClass:should:", "value:", "perform:withArguments:", "receiver", "selector", "arguments"]
- }, function ($methodClass){ return function (aString,aClass,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._while_inClass_should_.call($self,aString,aClass,(function(method){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._value_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($self._receiver())._perform_withArguments_($recv(method)._selector(),$self._arguments());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({method:method},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"while:inClass:should:",{aString:aString,aClass:aClass,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TCTExecuted);
- $core.addTrait("TCTInlined", "Compiler-Tests");
- $core.addMethod(
- $core.method({
- selector: "codeGeneratorClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "codeGeneratorClass\x0a\x09^ InliningCodeGenerator",
- referencedClasses: ["InliningCodeGenerator"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.InliningCodeGenerator;
- }; }),
- $globals.TCTInlined);
- $core.addTrait("TCTInterpreted", "Compiler-Tests");
- $core.addMethod(
- $core.method({
- selector: "interpret:forClass:receiver:withArguments:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aClass", "anObject", "aDictionary"],
- source: "interpret: aString forClass: aClass receiver: anObject withArguments: aDictionary\x0a\x09\x22The food is a methodNode. Interpret the sequenceNode only\x22\x0a\x09\x0a\x09| ctx |\x0a\x09\x0a\x09ctx := self prepareContextFor: aString class: aClass receiver: anObject withArguments: aDictionary.\x0a\x09\x0a\x09^ ctx interpreter proceed; result",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["prepareContextFor:class:receiver:withArguments:", "proceed", "interpreter", "result"]
- }, function ($methodClass){ return function (aString,aClass,anObject,aDictionary){
- var self=this,$self=this;
- var ctx;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- ctx=$self._prepareContextFor_class_receiver_withArguments_(aString,aClass,anObject,aDictionary);
- $1=$recv(ctx)._interpreter();
- $recv($1)._proceed();
- return $recv($1)._result();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"interpret:forClass:receiver:withArguments:",{aString:aString,aClass:aClass,anObject:anObject,aDictionary:aDictionary,ctx:ctx})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TCTInterpreted);
- $core.addMethod(
- $core.method({
- selector: "prepareContextFor:class:receiver:withArguments:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aClass", "anObject", "anArray"],
- source: "prepareContextFor: aString class: aClass receiver: anObject withArguments: anArray\x0a\x09\x22The food is a methodNode. Interpret the sequenceNode only\x22\x0a\x09\x0a\x09| ctx ast |\x0a\x09\x0a\x09ast := self parse: aString forClass: aClass.\x0a\x09\x0a\x09ctx := AIContext new\x0a\x09\x09receiver: anObject;\x0a\x09\x09selector: ast selector;\x0a\x09\x09interpreter: ASTInterpreter new;\x0a\x09\x09yourself.\x0a\x09\x09\x0a\x09\x22Define locals for the context\x22\x0a\x09ast sequenceNode ifNotNil: [ :sequence |\x0a\x09\x09sequence temps do: [ :each |\x0a\x09\x09\x09ctx defineLocal: each ] ].\x0a\x0a\x09ast arguments with: anArray do: [ :key :value |\x0a\x09\x09ctx defineLocal: key; localAt: key put: value ].\x0a\x09\x0a\x09ctx interpreter\x0a\x09\x09context: ctx;\x0a\x09\x09node: ast;\x0a\x09\x09enterNode.\x0a\x09\x0a\x09^ctx",
- referencedClasses: ["AIContext", "ASTInterpreter"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:forClass:", "receiver:", "new", "selector:", "selector", "interpreter:", "yourself", "ifNotNil:", "sequenceNode", "do:", "temps", "defineLocal:", "with:do:", "arguments", "localAt:put:", "context:", "interpreter", "node:", "enterNode"]
- }, function ($methodClass){ return function (aString,aClass,anObject,anArray){
- var self=this,$self=this;
- var ctx,ast;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3,$4;
- ast=$self._parse_forClass_(aString,aClass);
- $1=[$recv($globals.AIContext)._new()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["new"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._receiver_(anObject);
- $recv($1)._selector_($recv(ast)._selector());
- $recv($1)._interpreter_($recv($globals.ASTInterpreter)._new());
- ctx=$recv($1)._yourself();
- $2=$recv(ast)._sequenceNode();
- if($2 == null || $2.a$nil){
- $2;
- } else {
- var sequence;
- sequence=$2;
- $recv($recv(sequence)._temps())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(ctx)._defineLocal_(each)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["defineLocal:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- }
- $recv($recv(ast)._arguments())._with_do_(anArray,(function(key,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $3=ctx;
- $recv($3)._defineLocal_(key);
- return $recv($3)._localAt_put_(key,value);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({key:key,value:value},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- $4=$recv(ctx)._interpreter();
- $recv($4)._context_(ctx);
- $recv($4)._node_(ast);
- $recv($4)._enterNode();
- return ctx;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"prepareContextFor:class:receiver:withArguments:",{aString:aString,aClass:aClass,anObject:anObject,anArray:anArray,ctx:ctx,ast:ast})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TCTInterpreted);
- $core.addMethod(
- $core.method({
- selector: "while:inClass:should:",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aClass", "aBlock"],
- source: "while: aString inClass: aClass should: aBlock\x0a\x09super\x0a\x09\x09while: aString\x0a\x09\x09inClass: aClass\x0a\x09\x09should: [ aBlock value: [\x0a\x09\x09\x09self\x0a\x09\x09\x09\x09interpret: aString\x0a\x09\x09\x09\x09forClass: aClass\x0a\x09\x09\x09\x09receiver: self receiver\x0a\x09\x09\x09\x09withArguments: self arguments ] ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["while:inClass:should:", "value:", "interpret:forClass:receiver:withArguments:", "receiver", "arguments"]
- }, function ($methodClass){ return function (aString,aClass,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._while_inClass_should_.call($self,aString,aClass,(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(aBlock)._value_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._interpret_forClass_receiver_withArguments_(aString,aClass,$self._receiver(),$self._arguments());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"while:inClass:should:",{aString:aString,aClass:aClass,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.TCTInterpreted);
- $core.addTrait("TCTNonInlined", "Compiler-Tests");
- $core.addMethod(
- $core.method({
- selector: "codeGeneratorClass",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "codeGeneratorClass\x0a\x09^ CodeGenerator",
- referencedClasses: ["CodeGenerator"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.CodeGenerator;
- }; }),
- $globals.TCTNonInlined);
- $core.setTraitComposition([{trait: $globals.TASTParsingTest}], $globals.TASTCompilingTest);
- $core.setTraitComposition([{trait: $globals.TCTInterpreted}], $globals.TCTDebugged);
- $core.setTraitComposition([{trait: $globals.TASTCompilingTest}], $globals.ASTMethodRunningTest);
- $core.setTraitComposition([{trait: $globals.TCTNonInlined}, {trait: $globals.TCTDebugged}], $globals.ASTDebuggerTest);
- $core.setTraitComposition([{trait: $globals.TCTNonInlined}, {trait: $globals.TCTInterpreted}], $globals.ASTInterpreterTest);
- $core.setTraitComposition([{trait: $globals.TCTNonInlined}, {trait: $globals.TCTExecuted}], $globals.CodeGeneratorTest);
- $core.setTraitComposition([{trait: $globals.TCTInlined}, {trait: $globals.TCTExecuted}], $globals.InliningCodeGeneratorTest);
- $core.setTraitComposition([{trait: $globals.TClassBuildingTest}], $globals.AbstractJavaScriptGatewayTest);
- $core.setTraitComposition([{trait: $globals.TCTNonInlined}, {trait: $globals.TCTDebugged}], $globals.DebuggedJSGTest);
- $core.setTraitComposition([{trait: $globals.TCTInlined}, {trait: $globals.TCTExecuted}], $globals.InlinedJSGTest);
- $core.setTraitComposition([{trait: $globals.TCTNonInlined}, {trait: $globals.TCTInterpreted}], $globals.InterpretedJSGTest);
- $core.setTraitComposition([{trait: $globals.TCTNonInlined}, {trait: $globals.TCTExecuted}], $globals.PlainJSGTest);
- $core.setTraitComposition([{trait: $globals.TASTParsingTest}], $globals.ASTPCNodeVisitorTest);
- $core.setTraitComposition([{trait: $globals.TASTParsingTest}], $globals.ASTPositionTest);
- $core.setTraitComposition([{trait: $globals.TASTCompilingTest}], $globals.AbstractCodeGeneratorInstallTest);
- $core.setTraitComposition([{trait: $globals.TCTNonInlined}], $globals.CodeGeneratorInstallTest);
- $core.setTraitComposition([{trait: $globals.TCTInlined}], $globals.InliningCodeGeneratorInstallTest);
- });
- define('amber/core/Platform-DOM-Tests',["amber/boot", "require", "amber/core/SUnit"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Platform-DOM-Tests");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("PlatformDomTest", $globals.TestCase, "Platform-DOM-Tests");
- $core.setSlots($globals.PlatformDomTest, ["fixtureDiv"]);
- $core.addMethod(
- $core.method({
- selector: "testEntityConversion",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testEntityConversion\x0a\x09PlatformDom isFeasible ifTrue: [ self assert: '©' htmlTextContent equals: '©' ]",
- referencedClasses: ["PlatformDom"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "isFeasible", "assert:equals:", "htmlTextContent"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($globals.PlatformDom)._isFeasible())){
- $self._assert_equals_("©"._htmlTextContent(),"©");
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testEntityConversion",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PlatformDomTest);
- $core.addMethod(
- $core.method({
- selector: "testTextContentDoesNotRunScript",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testTextContentDoesNotRunScript\x0a\x09PlatformDom isFeasible ifTrue: [\x0a\x09\x09self shouldnt: [ '<script>throw new Error(\x22Intentional\x22)</script>' htmlTextContent ] raise: Error ]",
- referencedClasses: ["PlatformDom", "Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "isFeasible", "shouldnt:raise:", "htmlTextContent"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($globals.PlatformDom)._isFeasible())){
- $self._shouldnt_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return "<script>throw new Error(\x22Intentional\x22)</script>"._htmlTextContent();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testTextContentDoesNotRunScript",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.PlatformDomTest);
- });
- define('amber/core/SUnit-Tests',["amber/boot", "require", "amber/core/SUnit"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("SUnit-Tests");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("ExampleSetTest", $globals.TestCase, "SUnit-Tests");
- $core.setSlots($globals.ExampleSetTest, ["empty", "full"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "setUp",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "setUp\x0a\x09empty := Set new.\x0a\x09full := Set with: 5 with: #abc",
- referencedClasses: ["Set"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "with:with:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.empty=$recv($globals.Set)._new();
- $self.full=$recv($globals.Set)._with_with_((5),"abc");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setUp",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ExampleSetTest);
- $core.addMethod(
- $core.method({
- selector: "testAdd",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAdd\x0a\x09empty add: 5.\x0a\x09self assert: (empty includes: 5)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["add:", "assert:", "includes:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.empty)._add_((5));
- $self._assert_($recv($self.empty)._includes_((5)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAdd",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ExampleSetTest);
- $core.addMethod(
- $core.method({
- selector: "testGrow",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testGrow\x0a\x09empty addAll: (1 to: 100).\x0a\x09self assert: empty size equals: 100",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addAll:", "to:", "assert:equals:", "size"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.empty)._addAll_((1)._to_((100)));
- $self._assert_equals_($recv($self.empty)._size(),(100));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testGrow",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ExampleSetTest);
- $core.addMethod(
- $core.method({
- selector: "testIllegal",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "at:", "at:put:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self.empty)._at_((5));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["should:raise:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self.empty)._at_put_((5),"abc");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIllegal",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ExampleSetTest);
- $core.addMethod(
- $core.method({
- selector: "testIncludes",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testIncludes\x0a\x09self assert: (full includes: 5).\x0a\x09self assert: (full includes: #abc)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:", "includes:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_([$recv($self.full)._includes_((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["includes:"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_($recv($self.full)._includes_("abc"));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIncludes",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ExampleSetTest);
- $core.addMethod(
- $core.method({
- selector: "testOccurrences",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:", "occurrencesOf:", "add:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$recv($self.empty)._occurrencesOf_((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["occurrencesOf:"]=1
- //>>excludeEnd("ctx");
- ][0],(0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$self._assert_equals_([$recv($self.full)._occurrencesOf_((5))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["occurrencesOf:"]=2
- //>>excludeEnd("ctx");
- ][0],(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["assert:equals:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($self.full)._add_((5));
- $self._assert_equals_($recv($self.full)._occurrencesOf_((5)),(1));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testOccurrences",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ExampleSetTest);
- $core.addMethod(
- $core.method({
- selector: "testRemove",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testRemove\x0a\x09full remove: 5.\x0a\x09self assert: (full includes: #abc).\x0a\x09self deny: (full includes: 5)",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["remove:", "assert:", "includes:", "deny:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.full)._remove_((5));
- $self._assert_([$recv($self.full)._includes_("abc")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["includes:"]=1
- //>>excludeEnd("ctx");
- ][0]);
- $self._deny_($recv($self.full)._includes_((5)));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testRemove",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.ExampleSetTest);
- $core.addClass("SUnitAsyncTest", $globals.TestCase, "SUnit-Tests");
- $core.setSlots($globals.SUnitAsyncTest, ["flag"]);
- $core.addMethod(
- $core.method({
- selector: "fakeError",
- protocol: "helpers",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. self error: 'Intentional' ]) valueWithTimeout: 20",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.flag="bad";
- $self._timeout_((30));
- $self.flag=$recv($self._async_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self.flag="ok";
- return $self._error_("Intentional");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))._valueWithTimeout_((20));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fakeError",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitAsyncTest);
- $core.addMethod(
- $core.method({
- selector: "fakeErrorFailingInTearDown",
- protocol: "helpers",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ self error: 'Intentional' ]) valueWithTimeout: 20",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:", "valueWithTimeout:", "async:", "error:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.flag="bad";
- $self._timeout_((30));
- $self.flag=$recv($self._async_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._error_("Intentional");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))._valueWithTimeout_((20));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitAsyncTest);
- $core.addMethod(
- $core.method({
- selector: "fakeFailure",
- protocol: "helpers",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := (self async: [ flag := 'ok'. self assert: false ]) valueWithTimeout: 20",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.flag="bad";
- $self._timeout_((30));
- $self.flag=$recv($self._async_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self.flag="ok";
- return $self._assert_(false);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))._valueWithTimeout_((20));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fakeFailure",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitAsyncTest);
- $core.addMethod(
- $core.method({
- selector: "fakeMultipleTimeoutFailing",
- protocol: "helpers",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._timeout_((100))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["timeout:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv([$self._async_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self._timeout_((20));
- return $recv($self._async_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._finished();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- })))._valueWithTimeout_((30));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["async:"]=1
- //>>excludeEnd("ctx");
- ][0])._valueWithTimeout_((20))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["valueWithTimeout:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitAsyncTest);
- $core.addMethod(
- $core.method({
- selector: "fakeMultipleTimeoutPassing",
- protocol: "helpers",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._timeout_((20))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["timeout:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv([$self._async_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self._timeout_((40));
- return $recv($self._async_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $self._finished();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- })))._valueWithTimeout_((20));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["async:"]=1
- //>>excludeEnd("ctx");
- ][0])._valueWithTimeout_((10))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["valueWithTimeout:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitAsyncTest);
- $core.addMethod(
- $core.method({
- selector: "fakeTimeout",
- protocol: "helpers",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "fakeTimeout\x0a\x09self timeout: 10.\x0a\x09(self async: [ self finished ]) valueWithTimeout: 20",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._timeout_((10));
- $recv($self._async_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._finished();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))._valueWithTimeout_((20));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitAsyncTest);
- $core.addMethod(
- $core.method({
- selector: "selectorSetOf:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "selectorSetOf: aCollection\x0a\x09^ (aCollection collect: [ :each | each selector ]) asSet",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["asSet", "collect:", "selector"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv(aCollection)._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._selector();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))._asSet();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitAsyncTest);
- $core.addMethod(
- $core.method({
- selector: "setUp",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "setUp\x0a\x09flag := 'ok'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- $self.flag="ok";
- return self;
- }; }),
- $globals.SUnitAsyncTest);
- $core.addMethod(
- $core.method({
- selector: "tearDown",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_("ok",$self.flag);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"tearDown",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitAsyncTest);
- $core.addMethod(
- $core.method({
- selector: "testAsyncErrorsAndFailures",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAsyncErrorsAndFailures\x0a\x09| suite runner result assertBlock |\x0a\x09suite := #(fakeError fakeErrorFailingInTearDown fakeFailure testPass) collect: [ :each | self class selector: each ].\x0a\x09runner := TestSuiteRunner on: suite.\x0a\x09self timeout: 200.\x0a\x09result := runner result.\x0a\x09assertBlock := self async: [\x0a\x09\x09self assert: (self selectorSetOf: result errors) equals: #(fakeError) asSet.\x0a\x09\x09self assert: (self selectorSetOf: result failures) equals: #(fakeErrorFailingInTearDown fakeFailure) asSet.\x0a\x09\x09self finished\x0a\x09].\x0a\x09runner announcer on: ResultAnnouncement do: [ :ann |\x0a\x09\x09(ann result == result and: [ result runs = result total ]) ifTrue: assertBlock ].\x0a\x09runner run",
- referencedClasses: ["TestSuiteRunner", "ResultAnnouncement"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "finished", "on:do:", "announcer", "ifTrue:", "and:", "==", "=", "runs", "total", "run"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var suite,runner,result,assertBlock;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- suite=["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"]._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._class())._selector_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- runner=$recv($globals.TestSuiteRunner)._on_(suite);
- $self._timeout_((200));
- result=[$recv(runner)._result()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["result"]=1
- //>>excludeEnd("ctx");
- ][0];
- assertBlock=$self._async_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["selectorSetOf:"]=1
- //>>excludeEnd("ctx");
- ][0],[["fakeError"]._asSet()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["asSet"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeErrorFailingInTearDown", "fakeFailure"]._asSet());
- return $self._finished();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
- $1=$recv($recv(result)._runs()).__eq($recv(result)._total());
- } else {
- $1=false;
- }
- return $recv($1)._ifTrue_(assertBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- $recv(runner)._run();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAsyncErrorsAndFailures",{suite:suite,runner:runner,result:result,assertBlock:assertBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitAsyncTest);
- $core.addMethod(
- $core.method({
- selector: "testAsyncNeedsTimeout",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testAsyncNeedsTimeout\x0a\x09self should: [ self async: [ ] ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self async: [ ] ] raise: Error.\x0a\x09self finished",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "async:", "timeout:", "shouldnt:raise:", "finished"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$self._async_((function(){
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["async:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- $self._timeout_((0));
- $self._shouldnt_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._async_((function(){
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- $self._finished();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testAsyncNeedsTimeout",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitAsyncTest);
- $core.addMethod(
- $core.method({
- selector: "testFinishedNeedsTimeout",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testFinishedNeedsTimeout\x0a\x09self should: [ self finished ] raise: Error.\x0a\x09self timeout: 0.\x0a\x09self shouldnt: [ self finished ] raise: Error.",
- referencedClasses: ["Error"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["should:raise:", "finished", "timeout:", "shouldnt:raise:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._should_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$self._finished()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["finished"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- $self._timeout_((0));
- $self._shouldnt_raise_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._finished();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }),$globals.Error);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testFinishedNeedsTimeout",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitAsyncTest);
- $core.addMethod(
- $core.method({
- selector: "testIsAsyncReturnsCorrectValues",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testIsAsyncReturnsCorrectValues\x0a\x09self deny: self isAsync.\x0a\x09self timeout: 0.\x0a\x09self assert: self isAsync.\x0a\x09self finished.\x0a\x09self deny: self isAsync",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deny:", "isAsync", "timeout:", "assert:", "finished"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._deny_([$self._isAsync()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["isAsync"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["deny:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._timeout_((0));
- $self._assert_([$self._isAsync()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["isAsync"]=2
- //>>excludeEnd("ctx");
- ][0]);
- $self._finished();
- $self._deny_($self._isAsync());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitAsyncTest);
- $core.addMethod(
- $core.method({
- selector: "testPass",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:", "valueWithTimeout:", "async:", "assert:", "finished"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.flag="bad";
- $self._timeout_((10));
- $self.flag=$recv($self._async_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self._assert_(true);
- $self._finished();
- $self.flag="ok";
- return $self.flag;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))._valueWithTimeout_((5));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitAsyncTest);
- $core.addMethod(
- $core.method({
- selector: "testTimeouts",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testTimeouts\x0a\x09| suite runner result assertBlock |\x0a\x09suite := #(fakeTimeout fakeMultipleTimeoutFailing fakeMultipleTimeoutPassing testPass) collect: [ :each | self class selector: each ].\x0a\x09runner := TestSuiteRunner on: suite.\x0a\x09self timeout: 200.\x0a\x09result := runner result.\x0a\x09assertBlock := self async: [\x0a\x09\x09self assert: (self selectorSetOf: result errors) equals: Set new.\x0a\x09\x09self assert: (self selectorSetOf: result failures) equals: #(fakeMultipleTimeoutFailing fakeTimeout) asSet.\x0a\x09\x09self finished\x0a\x09].\x0a\x09runner announcer on: ResultAnnouncement do: [ :ann |\x0a\x09\x09(ann result == result and: [ result runs = result total ]) ifTrue: assertBlock ].\x0a\x09runner run",
- referencedClasses: ["TestSuiteRunner", "Set", "ResultAnnouncement"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "async:", "assert:equals:", "selectorSetOf:", "errors", "new", "failures", "asSet", "finished", "on:do:", "announcer", "ifTrue:", "and:", "==", "=", "runs", "total", "run"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var suite,runner,result,assertBlock;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- suite=["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "testPass"]._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._class())._selector_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- runner=$recv($globals.TestSuiteRunner)._on_(suite);
- $self._timeout_((200));
- result=[$recv(runner)._result()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["result"]=1
- //>>excludeEnd("ctx");
- ][0];
- assertBlock=$self._async_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["selectorSetOf:"]=1
- //>>excludeEnd("ctx");
- ][0],$recv($globals.Set)._new())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeMultipleTimeoutFailing", "fakeTimeout"]._asSet());
- return $self._finished();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
- $1=$recv($recv(result)._runs()).__eq($recv(result)._total());
- } else {
- $1=false;
- }
- return $recv($1)._ifTrue_(assertBlock);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({ann:ann},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- $recv(runner)._run();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testTimeouts",{suite:suite,runner:runner,result:result,assertBlock:assertBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitAsyncTest);
- $core.addMethod(
- $core.method({
- selector: "testTwoAsyncPassesWithFinishedOnlyOneIsRun",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:", "valueWithTimeout:", "async:", "finished", "+", "assert:equals:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var x;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.flag="bad";
- $self._timeout_((10));
- x=(0);
- $self.flag=[$recv([$self._async_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$self._finished()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["finished"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self.flag="ok";
- x=[$recv(x).__plus((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["+"]=1
- //>>excludeEnd("ctx");
- ][0];
- return [$self._assert_equals_(x,(1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["async:"]=1
- //>>excludeEnd("ctx");
- ][0])._valueWithTimeout_((0))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["valueWithTimeout:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self.flag=$recv($self._async_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self._finished();
- $self.flag="ok";
- x=$recv(x).__plus((1));
- return $self._assert_equals_(x,(1));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- })))._valueWithTimeout_((0));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testTwoAsyncPassesWithFinishedOnlyOneIsRun",{x:x})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitAsyncTest);
- $core.addClass("SUnitPromiseTest", $globals.TestCase, "SUnit-Tests");
- $core.setSlots($globals.SUnitPromiseTest, ["flag"]);
- $core.addMethod(
- $core.method({
- selector: "fakeError",
- protocol: "helpers",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "fakeError\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := Promise delayMilliseconds: 20.\x0a\x09^ flag then: [ flag := 'ok'. self error: 'Intentional' ]",
- referencedClasses: ["Promise"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:", "delayMilliseconds:", "then:", "error:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.flag="bad";
- $self._timeout_((30));
- $self.flag=$recv($globals.Promise)._delayMilliseconds_((20));
- return $recv($self.flag)._then_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self.flag="ok";
- return $self._error_("Intentional");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fakeError",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitPromiseTest);
- $core.addMethod(
- $core.method({
- selector: "fakeErrorFailingInTearDown",
- protocol: "helpers",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "fakeErrorFailingInTearDown\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := Promise delayMilliseconds: 20.\x0a\x09^ flag then: [ self error: 'Intentional' ]",
- referencedClasses: ["Promise"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:", "delayMilliseconds:", "then:", "error:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.flag="bad";
- $self._timeout_((30));
- $self.flag=$recv($globals.Promise)._delayMilliseconds_((20));
- return $recv($self.flag)._then_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._error_("Intentional");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fakeErrorFailingInTearDown",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitPromiseTest);
- $core.addMethod(
- $core.method({
- selector: "fakeFailure",
- protocol: "helpers",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "fakeFailure\x0a\x09flag := 'bad'.\x0a\x09self timeout: 30.\x0a\x09flag := Promise delayMilliseconds: 20.\x0a\x09^ flag then: [ flag := 'ok'. self assert: false ]",
- referencedClasses: ["Promise"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:", "delayMilliseconds:", "then:", "assert:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.flag="bad";
- $self._timeout_((30));
- $self.flag=$recv($globals.Promise)._delayMilliseconds_((20));
- return $recv($self.flag)._then_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self.flag="ok";
- return $self._assert_(false);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fakeFailure",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitPromiseTest);
- $core.addMethod(
- $core.method({
- selector: "fakeMultipleTimeoutFailing",
- protocol: "helpers",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "fakeMultipleTimeoutFailing\x0a\x09self timeout: 100.\x0a\x09^ (Promise delayMilliseconds: 20) then: [ self timeout: 20. Promise delayMilliseconds: 30 ]",
- referencedClasses: ["Promise"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:", "then:", "delayMilliseconds:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._timeout_((100))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["timeout:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $recv([$recv($globals.Promise)._delayMilliseconds_((20))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["delayMilliseconds:"]=1
- //>>excludeEnd("ctx");
- ][0])._then_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self._timeout_((20));
- return $recv($globals.Promise)._delayMilliseconds_((30));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutFailing",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitPromiseTest);
- $core.addMethod(
- $core.method({
- selector: "fakeMultipleTimeoutPassing",
- protocol: "helpers",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "fakeMultipleTimeoutPassing\x0a\x09self timeout: 20.\x0a\x09^ (Promise delayMilliseconds: 10) then: [ self timeout: 40. Promise delayMilliseconds: 20 ]",
- referencedClasses: ["Promise"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:", "then:", "delayMilliseconds:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$self._timeout_((20))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["timeout:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $recv([$recv($globals.Promise)._delayMilliseconds_((10))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["delayMilliseconds:"]=1
- //>>excludeEnd("ctx");
- ][0])._then_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self._timeout_((40));
- return $recv($globals.Promise)._delayMilliseconds_((20));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fakeMultipleTimeoutPassing",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitPromiseTest);
- $core.addMethod(
- $core.method({
- selector: "fakePromiseWithoutTimeout",
- protocol: "helpers",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "fakePromiseWithoutTimeout\x0a\x09^ Promise delayMilliseconds: 10",
- referencedClasses: ["Promise"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["delayMilliseconds:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($globals.Promise)._delayMilliseconds_((10));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fakePromiseWithoutTimeout",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitPromiseTest);
- $core.addMethod(
- $core.method({
- selector: "fakeTimeout",
- protocol: "helpers",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "fakeTimeout\x0a\x09self timeout: 10.\x0a\x09^ Promise delayMilliseconds: 20",
- referencedClasses: ["Promise"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:", "delayMilliseconds:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._timeout_((10));
- return $recv($globals.Promise)._delayMilliseconds_((20));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fakeTimeout",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitPromiseTest);
- $core.addMethod(
- $core.method({
- selector: "fakeTimeoutSendOnly",
- protocol: "helpers",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "fakeTimeoutSendOnly\x0a\x09self timeout: 10",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._timeout_((10));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fakeTimeoutSendOnly",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitPromiseTest);
- $core.addMethod(
- $core.method({
- selector: "selectorSetOf:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aCollection"],
- source: "selectorSetOf: aCollection\x0a\x09^ (aCollection collect: [ :each | each selector ]) asSet",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["asSet", "collect:", "selector"]
- }, function ($methodClass){ return function (aCollection){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv(aCollection)._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._selector();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- })))._asSet();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"selectorSetOf:",{aCollection:aCollection})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitPromiseTest);
- $core.addMethod(
- $core.method({
- selector: "setUp",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "setUp\x0a\x09flag := 'ok'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- $self.flag="ok";
- return self;
- }; }),
- $globals.SUnitPromiseTest);
- $core.addMethod(
- $core.method({
- selector: "tearDown",
- protocol: "running",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "tearDown\x0a\x09self assert: 'ok' equals: flag",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["assert:equals:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._assert_equals_("ok",$self.flag);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"tearDown",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitPromiseTest);
- $core.addMethod(
- $core.method({
- selector: "testIsAsyncReturnsCorrectValues",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testIsAsyncReturnsCorrectValues\x0a\x09self deny: self isAsync.\x0a\x09self timeout: 0.\x0a\x09self assert: self isAsync.\x0a\x09\x22self finished.\x0a\x09self deny: self isAsync\x22\x0a\x09^ Promise new",
- referencedClasses: ["Promise"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["deny:", "isAsync", "timeout:", "assert:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._deny_([$self._isAsync()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["isAsync"]=1
- //>>excludeEnd("ctx");
- ][0]);
- $self._timeout_((0));
- $self._assert_($self._isAsync());
- return $recv($globals.Promise)._new();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testIsAsyncReturnsCorrectValues",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitPromiseTest);
- $core.addMethod(
- $core.method({
- selector: "testPass",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testPass\x0a\x09flag := 'bad'.\x0a\x09self timeout: 10.\x0a\x09flag := Promise delayMilliseconds: 5.\x0a\x09^ flag then: [ self assert: true. flag := 'ok' ]",
- referencedClasses: ["Promise"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["timeout:", "delayMilliseconds:", "then:", "assert:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.flag="bad";
- $self._timeout_((10));
- $self.flag=$recv($globals.Promise)._delayMilliseconds_((5));
- return $recv($self.flag)._then_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $self._assert_(true);
- $self.flag="ok";
- return $self.flag;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPass",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitPromiseTest);
- $core.addMethod(
- $core.method({
- selector: "testPromiseErrorsAndFailures",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testPromiseErrorsAndFailures\x0a\x09| suite runner result |\x0a\x09suite := #(fakeError fakeErrorFailingInTearDown fakeFailure testPass) collect: [ :each | self class selector: each ].\x0a\x09runner := TestSuiteRunner on: suite.\x0a\x09self timeout: 200.\x0a\x09result := runner result.\x0a\x09^ Promise new: [ :model |\x0a\x09\x09runner announcer on: ResultAnnouncement do: [ :ann |\x0a\x09\x09\x09(ann result == result and: [ result runs = result total ]) ifTrue: [\x0a\x09\x09\x09\x09self assert: (self selectorSetOf: result errors) equals: #(fakeError) asSet.\x0a\x09\x09\x09\x09self assert: (self selectorSetOf: result failures) equals: #(fakeErrorFailingInTearDown fakeFailure) asSet.\x0a\x09\x09\x09\x09model value: nil ] ].\x0a\x09\x09runner run ]",
- referencedClasses: ["TestSuiteRunner", "Promise", "ResultAnnouncement"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "new:", "on:do:", "announcer", "ifTrue:", "and:", "==", "=", "runs", "total", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "value:", "run"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var suite,runner,result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- suite=["fakeError", "fakeErrorFailingInTearDown", "fakeFailure", "testPass"]._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._class())._selector_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- runner=$recv($globals.TestSuiteRunner)._on_(suite);
- $self._timeout_((200));
- result=[$recv(runner)._result()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["result"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $recv($globals.Promise)._new_((function(model){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
- $1=$recv($recv(result)._runs()).__eq($recv(result)._total());
- } else {
- $1=false;
- }
- if($core.assert($1)){
- [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["selectorSetOf:"]=1
- //>>excludeEnd("ctx");
- ][0],[["fakeError"]._asSet()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["asSet"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeErrorFailingInTearDown", "fakeFailure"]._asSet());
- return $recv(model)._value_(nil);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({ann:ann},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- return $recv(runner)._run();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({model:model},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testPromiseErrorsAndFailures",{suite:suite,runner:runner,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitPromiseTest);
- $core.addMethod(
- $core.method({
- selector: "testTimeouts",
- protocol: "tests",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "testTimeouts\x0a\x09| suite runner result |\x0a\x09suite := #(fakeTimeout fakeMultipleTimeoutFailing fakeMultipleTimeoutPassing fakeTimeoutSendOnly fakePromiseWithoutTimeout testPass) collect: [ :each | self class selector: each ].\x0a\x09runner := TestSuiteRunner on: suite.\x0a\x09self timeout: 200.\x0a\x09result := runner result.\x0a\x09^ Promise new: [ :model |\x0a\x09\x09runner announcer on: ResultAnnouncement do: [ :ann |\x0a\x09\x09\x09console log: ann; log: ann result runs.\x0a\x09\x09\x09(ann result == result and: [ result runs = result total ]) ifTrue: [\x0a\x09\x09\x09\x09self assert: (self selectorSetOf: result errors) equals: #() asSet.\x0a\x09\x09\x09\x09self assert: (self selectorSetOf: result failures) equals: #(fakeMultipleTimeoutFailing fakeTimeout fakeTimeoutSendOnly fakePromiseWithoutTimeout) asSet.\x0a\x09\x09\x09\x09model value: nil ] ].\x0a\x09\x09runner run ]",
- referencedClasses: ["TestSuiteRunner", "Promise", "ResultAnnouncement"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "selector:", "class", "on:", "timeout:", "result", "new:", "on:do:", "announcer", "log:", "runs", "ifTrue:", "and:", "==", "=", "total", "assert:equals:", "selectorSetOf:", "errors", "asSet", "failures", "value:", "run"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var suite,runner,result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- suite=["fakeTimeout", "fakeMultipleTimeoutFailing", "fakeMultipleTimeoutPassing", "fakeTimeoutSendOnly", "fakePromiseWithoutTimeout", "testPass"]._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self._class())._selector_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- runner=$recv($globals.TestSuiteRunner)._on_(suite);
- $self._timeout_((200));
- result=[$recv(runner)._result()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["result"]=1
- //>>excludeEnd("ctx");
- ][0];
- return $recv($globals.Promise)._new_((function(model){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv($recv(runner)._announcer())._on_do_($globals.ResultAnnouncement,(function(ann){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- $1=console;
- [$recv($1)._log_(ann)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["log:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._log_([$recv([$recv(ann)._result()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["result"]=2
- //>>excludeEnd("ctx");
- ][0])._runs()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["runs"]=1
- //>>excludeEnd("ctx");
- ][0]);
- if($core.assert($recv($recv(ann)._result()).__eq_eq(result))){
- $2=$recv($recv(result)._runs()).__eq($recv(result)._total());
- } else {
- $2=false;
- }
- if($core.assert($2)){
- [$self._assert_equals_([$self._selectorSetOf_($recv(result)._errors())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["selectorSetOf:"]=1
- //>>excludeEnd("ctx");
- ][0],[[]._asSet()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["asSet"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["assert:equals:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self._assert_equals_($self._selectorSetOf_($recv(result)._failures()),["fakeMultipleTimeoutFailing", "fakeTimeout", "fakeTimeoutSendOnly", "fakePromiseWithoutTimeout"]._asSet());
- return $recv(model)._value_(nil);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({ann:ann},$ctx2,3)});
- //>>excludeEnd("ctx");
- }));
- return $recv(runner)._run();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({model:model},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"testTimeouts",{suite:suite,runner:runner,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.SUnitPromiseTest);
- });
- define('amber/devel',[
- './lang',
- './brikz', // pre-fetch, dep of ./boot
- './kernel-checks', // pre-fetch, dep of ./boot
- './kernel-fundamentals', // pre-fetch, dep of ./boot
- './kernel-language', // pre-fetch, dep of ./boot
- './boot', // pre-fetch, class loader
- './deploy', // pre-fetch, dep of ./lang
- // --- packages of the development only Amber begin here ---
- 'amber/core/Platform-DOM',
- 'amber/core/SUnit',
- 'amber/core/Compiler-Tests',
- 'amber/core/Kernel-Tests',
- 'amber/core/Platform-DOM-Tests',
- 'amber/core/SUnit-Tests'
- // --- packages of the development only Amber end here ---
- ], function (amber) {
- return amber;
- });
- define('amber/core/Platform-Node',["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("Platform-Node");
- $pkg.imports = ["amber/core/Platform-Services"];
- //>>excludeStart("imports", pragmas.excludeImports);
- $pkg.isReady = new Promise(function (resolve, reject) { requirejs(["amber/core/Platform-Services"], function () {resolve();}, reject); });
- //>>excludeEnd("imports");
- $pkg.transport = {"type":"amd","amdNamespace":"amber/core"};
- $core.addClass("NodePlatform", $globals.Object, "Platform-Node");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $globals.NodePlatform.comment="I am `Platform` service implementation for node-like environment.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "fetch:",
- protocol: "public API",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aStringOrObject"],
- source: "fetch: aStringOrObject\x0a\x09^ self globals at: #fetch\x0a\x09\x09ifPresent: [ :fetch | fetch value: aStringOrObject ]\x0a\x09\x09ifAbsent: [ Promise signal: 'fetch not available.' ]",
- referencedClasses: ["Promise"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifPresent:ifAbsent:", "globals", "value:", "signal:"]
- }, function ($methodClass){ return function (aStringOrObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._globals())._at_ifPresent_ifAbsent_("fetch",(function(fetch){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(fetch)._value_(aStringOrObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({fetch:fetch},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.Promise)._signal_("fetch not available.");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fetch:",{aStringOrObject:aStringOrObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodePlatform);
- $core.addMethod(
- $core.method({
- selector: "fetchUrl:options:",
- protocol: "public API",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- source: "fetchUrl: aString options: anObject\x0a\x09^ self globals at: #fetch\x0a\x09\x09ifPresent: [ :fetch | fetch value: aString value: anObject ]\x0a\x09\x09ifAbsent: [ Promise signal: 'fetch not available.' ]",
- referencedClasses: ["Promise"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifPresent:ifAbsent:", "globals", "value:value:", "signal:"]
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._globals())._at_ifPresent_ifAbsent_("fetch",(function(fetch){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(fetch)._value_value_(aString,anObject);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({fetch:fetch},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($globals.Promise)._signal_("fetch not available.");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"fetchUrl:options:",{aString:aString,anObject:anObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodePlatform);
- $core.addMethod(
- $core.method({
- selector: "globals",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "globals\x0a\x09^ global",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return global;
- }; }),
- $globals.NodePlatform);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09process\x0a\x09\x09on: 'uncaughtException'\x0a\x09\x09do: [ :err | ErrorHandler handleError: err. process exit: 1 ];\x0a\x09\x09on: 'unhandledRejection'\x0a\x09\x09do: [ :err | ErrorHandler handleError: err. process exit: 2 ]",
- referencedClasses: ["ErrorHandler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:do:", "handleError:", "exit:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=process;
- [$recv($1)._on_do_("uncaughtException",(function(err){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv($globals.ErrorHandler)._handleError_(err)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["handleError:"]=1
- //>>excludeEnd("ctx");
- ][0];
- return [$recv(process)._exit_((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["exit:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({err:err},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["on:do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._on_do_("unhandledRejection",(function(err){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $recv($globals.ErrorHandler)._handleError_(err);
- return $recv(process)._exit_((2));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({err:err},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodePlatform);
- $core.addMethod(
- $core.method({
- selector: "newXhr",
- protocol: "public API",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "newXhr\x0a\x09XMLHttpRequest\x0a\x09\x09ifNotNil: [ ^ XMLHttpRequest new ]\x0a\x09\x09ifNil: [ self error: 'XMLHttpRequest not available.' ]",
- referencedClasses: ["XMLHttpRequest"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:ifNil:", "new", "error:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$globals.XMLHttpRequest;
- if($1 == null || $1.a$nil){
- $self._error_("XMLHttpRequest not available.");
- } else {
- return $recv($globals.XMLHttpRequest)._new();
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"newXhr",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodePlatform);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09self isFeasible ifTrue: [ Platform registerIfNone: self new ]",
- referencedClasses: ["Platform"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "isFeasible", "registerIfNone:", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($self._isFeasible())){
- $recv($globals.Platform)._registerIfNone_($self._new());
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodePlatform.a$cls);
- $core.addMethod(
- $core.method({
- selector: "isFeasible",
- protocol: "testing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "isFeasible\x0a<inlineJS: 'return typeof process !== \x22undefined\x22 && process && process.versions && process.versions.node != null'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return typeof process !== \x22undefined\x22 && process && process.versions && process.versions.node != null"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return typeof process !== "undefined" && process && process.versions && process.versions.node != null;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isFeasible",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.NodePlatform.a$cls);
- });
- define('amber_cli/AmberCli',["amber/boot", "require", "amber/core/Kernel-Objects"], function($boot,requirejs){"use strict";
- var $core=$boot.api,nil=$boot.nilAsValue,$nil=$boot.nilAsReceiver,$recv=$boot.asReceiver,$globals=$boot.globals;
- var $pkg = $core.addPackage("AmberCli");
- $pkg.transport = {"type":"amd","amdNamespace":"amber_cli"};
- $core.addClass("AmberCli", $globals.Object, "AmberCli");
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "commandLineSwitches",
- protocol: "commandline",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "methodsInProtocol:", "class", "selector", "select:", "match:", "asLowercase", "replace:with:", "allButLast"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var switches;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- switches=[$recv($recv($self._class())._methodsInProtocol_("commands"))._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._selector();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collect:"]=1
- //>>excludeEnd("ctx");
- ][0];
- switches=$recv(switches)._select_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._match_("^[^:]*:$");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- switches=$recv(switches)._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv($recv(each)._allButLast())._replace_with_("([A-Z])","-$1"))._asLowercase();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return switches;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commandLineSwitches",{switches:switches})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmberCli.a$cls);
- $core.addMethod(
- $core.method({
- selector: "config:",
- protocol: "commands",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["args"],
- source: "config: args\x0a\x09Configurator new start",
- referencedClasses: ["Configurator"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["start", "new"]
- }, function ($methodClass){ return function (args){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv($globals.Configurator)._new())._start();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"config:",{args:args})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmberCli.a$cls);
- $core.addMethod(
- $core.method({
- selector: "handleArguments:",
- protocol: "commandline",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["args"],
- source: "handleArguments: args\x0a\x09| selector |\x0a\x0a\x09selector := self selectorForCommandLineSwitch: (args first).\x0a\x09args remove: args first.\x0a\x09self perform: selector withArguments: { args }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["selectorForCommandLineSwitch:", "first", "remove:", "perform:withArguments:"]
- }, function ($methodClass){ return function (args){
- var self=this,$self=this;
- var selector;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- selector=$self._selectorForCommandLineSwitch_([$recv(args)._first()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["first"]=1
- //>>excludeEnd("ctx");
- ][0]);
- $recv(args)._remove_($recv(args)._first());
- $self._perform_withArguments_(selector,[args]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"handleArguments:",{args:args,selector:selector})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmberCli.a$cls);
- $core.addMethod(
- $core.method({
- selector: "help:",
- protocol: "commands",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["args"],
- source: "help: args\x0a\x09Transcript show: 'Available commands'.\x0a\x09self commandLineSwitches do: [ :each | console log: each ]",
- referencedClasses: ["Transcript"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["show:", "do:", "commandLineSwitches", "log:"]
- }, function ($methodClass){ return function (args){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($globals.Transcript)._show_("Available commands");
- $recv($self._commandLineSwitches())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(console)._log_(each);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"help:",{args:args})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmberCli.a$cls);
- $core.addMethod(
- $core.method({
- selector: "init:",
- protocol: "commands",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["args"],
- source: "init: args\x0a\x09Initer new start",
- referencedClasses: ["Initer"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["start", "new"]
- }, function ($methodClass){ return function (args){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv($globals.Initer)._new())._start();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"init:",{args:args})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmberCli.a$cls);
- $core.addMethod(
- $core.method({
- selector: "main",
- protocol: "startup",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "main\x0a\x09\x22Main entry point for Amber applications.\x0a\x09Parses commandline arguments and starts the according subprogram.\x22\x0a\x09| args packageJSON |\x0a\x09\x0a\x09packageJSON := require value: '../package.json'.\x0a\x09Transcript show: 'Welcome to Amber CLI version ', packageJSON version, ' (Amber ', Smalltalk version, ', NodeJS ', process versions node, ').'.\x0a\x0a\x09args := process argv.\x0a\x09\x22Remove the first args which contain the path to the node executable and the script file.\x22\x0a\x09args removeFrom: 1 to: 2.\x0a\x09\x0a\x09args\x0a\x09\x09ifEmpty: [self help: nil]\x0a\x09\x09ifNotEmpty: [^self handleArguments: args]",
- referencedClasses: ["Transcript", "Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:", "show:", ",", "version", "node", "versions", "argv", "removeFrom:to:", "ifEmpty:ifNotEmpty:", "help:", "handleArguments:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var args,packageJSON;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- packageJSON=$recv(require)._value_("../package.json");
- $recv($globals.Transcript)._show_([$recv([$recv([$recv([$recv([$recv("Welcome to Amber CLI version ".__comma([$recv(packageJSON)._version()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["version"]=1
- //>>excludeEnd("ctx");
- ][0])).__comma(" (Amber ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=5
- //>>excludeEnd("ctx");
- ][0]).__comma($recv($globals.Smalltalk)._version())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=4
- //>>excludeEnd("ctx");
- ][0]).__comma(", NodeJS ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0]).__comma($recv($recv(process)._versions())._node())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(").")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]);
- args=$recv(process)._argv();
- $recv(args)._removeFrom_to_((1),(2));
- $recv(args)._ifEmpty_ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._help_(nil);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- throw $early=[$self._handleArguments_(args)];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- return self;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"main",{args:args,packageJSON:packageJSON})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmberCli.a$cls);
- $core.addMethod(
- $core.method({
- selector: "repl:",
- protocol: "commands",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["args"],
- source: "repl: args\x0a\x09^ Repl new createInterface",
- referencedClasses: ["Repl"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["createInterface", "new"]
- }, function ($methodClass){ return function (args){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.Repl)._new())._createInterface();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"repl:",{args:args})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmberCli.a$cls);
- $core.addMethod(
- $core.method({
- selector: "selectorForCommandLineSwitch:",
- protocol: "commandline",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aSwitch"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "includes:", "commandLineSwitches", ",", "replace:with:", "asUppercase", "second"]
- }, function ($methodClass){ return function (aSwitch){
- var self=this,$self=this;
- var command,selector;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($self._commandLineSwitches())._includes_(aSwitch))){
- selector=$recv($recv(aSwitch)._replace_with_("-[a-z]",(function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv(each)._second())._asUppercase();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }))).__comma(":");
- selector;
- } else {
- selector="help:";
- selector;
- }
- return selector;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"selectorForCommandLineSwitch:",{aSwitch:aSwitch,command:command,selector:selector})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmberCli.a$cls);
- $core.addMethod(
- $core.method({
- selector: "serve:",
- protocol: "commands",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["args"],
- source: "serve: args\x0a\x09^ (FileServer createServerWithArguments: args) start",
- referencedClasses: ["FileServer"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["start", "createServerWithArguments:"]
- }, function ($methodClass){ return function (args){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.FileServer)._createServerWithArguments_(args))._start();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"serve:",{args:args})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.AmberCli.a$cls);
- $core.addMethod(
- $core.method({
- selector: "version:",
- protocol: "commands",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["arguments"],
- source: "version: arguments",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (arguments_){
- var self=this,$self=this;
- return self;
- }; }),
- $globals.AmberCli.a$cls);
- $core.addClass("BaseFileManipulator", $globals.Object, "AmberCli");
- $core.setSlots($globals.BaseFileManipulator, ["path", "fs"]);
- $core.addMethod(
- $core.method({
- selector: "dirname",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "dirname\x0a\x09<inlineJS: 'return __dirname'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return __dirname"]]],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return __dirname;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"dirname",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BaseFileManipulator);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x09path := require value: 'path'.\x0a\x09fs := require value: 'fs'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "value:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.path=[$recv(require)._value_("path")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self.fs=$recv(require)._value_("fs");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BaseFileManipulator);
- $core.addMethod(
- $core.method({
- selector: "rootDirname",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "rootDirname\x0a\x09^ path join: self dirname with: '..'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["join:with:", "dirname"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.path)._join_with_($self._dirname(),"..");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"rootDirname",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.BaseFileManipulator);
- $core.addClass("Configurator", $globals.BaseFileManipulator, "AmberCli");
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Configurator);
- $core.addMethod(
- $core.method({
- selector: "start",
- protocol: "action",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "start\x0a\x09self writeConfigThenDo: [ :err | err\x0a\x09\x09ifNotNil: [ process exit: 111 ]\x0a\x09\x09ifNil: [ process exit ]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["writeConfigThenDo:", "ifNotNil:ifNil:", "exit:", "exit"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._writeConfigThenDo_((function(err){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if(err == null || err.a$nil){
- return $recv(process)._exit();
- } else {
- return $recv(process)._exit_((111));
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({err:err},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"start",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Configurator);
- $core.addMethod(
- $core.method({
- selector: "writeConfigThenDo:",
- protocol: "action",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "writeConfigThenDo: aBlock\x0a\x09(require value: '@ambers/sdk') configBuilder\x0a\x09\x09writeConfig: process cwd\x0a\x09\x09toFile: 'config.js'\x0a\x09\x09thenDo: aBlock",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["writeConfig:toFile:thenDo:", "configBuilder", "value:", "cwd"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv($recv(require)._value_("@ambers/sdk"))._configBuilder())._writeConfig_toFile_thenDo_($recv(process)._cwd(),"config.js",aBlock);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"writeConfigThenDo:",{aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Configurator);
- $core.addClass("FileServer", $globals.BaseFileManipulator, "AmberCli");
- $core.setSlots($globals.FileServer, ["http", "url", "host", "port", "basePath", "util", "username", "password", "fallbackPage"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "base64Decode:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "base64Decode: aString\x0a\x09<inlineJS: 'return (new Buffer(aString, \x22base64\x22).toString())'>",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [["inlineJS:", ["return (new Buffer(aString, \x22base64\x22).toString())"]]],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return (new Buffer(aString, "base64").toString());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"base64Decode:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "basePath",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "basePath\x0a\x09^ basePath ifNil: [self class defaultBasePath]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "defaultBasePath", "class"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.basePath;
- if($1 == null || $1.a$nil){
- return $recv($self._class())._defaultBasePath();
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basePath",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "basePath:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "basePath: aString\x0a\x09basePath := aString.\x0a\x09self validateBasePath.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["validateBasePath"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.basePath=aString;
- $self._validateBasePath();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"basePath:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "checkDirectoryLayout",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.'].",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "existsSync:", "withBasePath:", "warn:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv($self.fs)._existsSync_($self._withBasePath_("index.html")))){
- [$recv(console)._warn_("Warning: project directory does not contain index.html.")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["warn:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(console)._warn_(" You can specify the directory containing index.html with --base-path.")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["warn:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(console)._warn_(" You can also specify a page to be served by default,")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["warn:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv(console)._warn_(" for all paths that do not map to a file, with --fallback-page.");
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"checkDirectoryLayout",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "fallbackPage",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "fallbackPage\x0a\x09^ fallbackPage",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.fallbackPage;
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "fallbackPage:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "fallbackPage: aString\x0a\x09fallbackPage := aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- $self.fallbackPage=aString;
- return self;
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "handleGETRequest:respondTo:",
- protocol: "request handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aRequest", "aResponse"],
- source: "handleGETRequest: aRequest respondTo: aResponse\x0a\x09| uri filename |\x0a\x09uri := url parse: aRequest url.\x0a\x09filename := path join: self basePath with: uri pathname uriDecoded.\x0a\x09fs exists: filename do: [:aBoolean |\x0a\x09\x09aBoolean\x0a\x09\x09\x09ifFalse: [self respondNotFoundTo: aResponse]\x0a\x09\x09\x09ifTrue: [(fs statSync: filename) isDirectory\x0a\x09\x09\x09\x09ifTrue: [self respondDirectoryNamed: filename from: uri to: aResponse]\x0a\x09\x09\x09\x09ifFalse: [self respondFileNamed: filename to: aResponse]]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parse:", "url", "join:with:", "basePath", "uriDecoded", "pathname", "exists:do:", "ifFalse:ifTrue:", "respondNotFoundTo:", "ifTrue:ifFalse:", "isDirectory", "statSync:", "respondDirectoryNamed:from:to:", "respondFileNamed:to:"]
- }, function ($methodClass){ return function (aRequest,aResponse){
- var self=this,$self=this;
- var uri,filename;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- uri=$recv($self.url)._parse_($recv(aRequest)._url());
- filename=$recv($self.path)._join_with_($self._basePath(),$recv($recv(uri)._pathname())._uriDecoded());
- $recv($self.fs)._exists_do_(filename,(function(aBoolean){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert(aBoolean)){
- if($core.assert($recv($recv($self.fs)._statSync_(filename))._isDirectory())){
- return $self._respondDirectoryNamed_from_to_(filename,uri,aResponse);
- } else {
- return $self._respondFileNamed_to_(filename,aResponse);
- }
- } else {
- return $self._respondNotFoundTo_(aResponse);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({aBoolean:aBoolean},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"handleGETRequest:respondTo:",{aRequest:aRequest,aResponse:aResponse,uri:uri,filename:filename})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "handleOPTIONSRequest:respondTo:",
- protocol: "request handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aRequest", "aResponse"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["writeHead:options:", "end"]
- }, function ($methodClass){ return function (aRequest,aResponse){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $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)]));
- $recv(aResponse)._end();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"handleOPTIONSRequest:respondTo:",{aRequest:aRequest,aResponse:aResponse})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "handlePUTRequest:respondTo:",
- protocol: "request handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aRequest", "aResponse"],
- source: "handlePUTRequest: aRequest respondTo: aResponse\x0a\x09| file stream |\x0a\x09(self isAuthenticated: aRequest)\x0a\x09\x09ifFalse: [self respondAuthenticationRequiredTo: aResponse. ^ nil].\x0a\x0a\x09file := '.', aRequest url uriDecoded.\x0a\x09stream := fs createWriteStream: file.\x0a\x0a\x09stream on: 'error' do: [:error |\x0a\x09\x09console warn: 'Error creating WriteStream for file ', file.\x0a\x09\x09console warn: ' Did you forget to create the necessary directory in your project (often /src)?'.\x0a\x09\x09console warn: ' The exact error is: ', error asString.\x0a\x09\x09self respondNotCreatedTo: aResponse].\x0a\x0a\x09stream on: 'close' do: [\x0a\x09\x09self respondCreatedTo: aResponse].\x0a\x0a\x09aRequest setEncoding: 'utf8'.\x0a\x09aRequest on: 'data' do: [:data |\x0a\x09\x09stream write: data].\x0a\x0a\x09aRequest on: 'end' do: [\x0a\x09\x09stream writable ifTrue: [stream end]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "isAuthenticated:", "respondAuthenticationRequiredTo:", ",", "uriDecoded", "url", "createWriteStream:", "on:do:", "warn:", "asString", "respondNotCreatedTo:", "respondCreatedTo:", "setEncoding:", "write:", "ifTrue:", "writable", "end"]
- }, function ($methodClass){ return function (aRequest,aResponse){
- var self=this,$self=this;
- var file,stream;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert($self._isAuthenticated_(aRequest))){
- $self._respondAuthenticationRequiredTo_(aResponse);
- return nil;
- }
- file=[".".__comma($recv($recv(aRequest)._url())._uriDecoded())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- stream=$recv($self.fs)._createWriteStream_(file);
- [$recv(stream)._on_do_("error",(function(error){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- [$recv(console)._warn_(["Error creating WriteStream for file ".__comma(file)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["warn:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(console)._warn_(" Did you forget to create the necessary directory in your project (often /src)?")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["warn:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(console)._warn_(" The exact error is: ".__comma($recv(error)._asString()));
- return $self._respondNotCreatedTo_(aResponse);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["on:do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(stream)._on_do_("close",(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._respondCreatedTo_(aResponse);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["on:do:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv(aRequest)._setEncoding_("utf8");
- [$recv(aRequest)._on_do_("data",(function(data){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(stream)._write_(data);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({data:data},$ctx1,4)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["on:do:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv(aRequest)._on_do_("end",(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(stream)._writable())){
- return $recv(stream)._end();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"handlePUTRequest:respondTo:",{aRequest:aRequest,aResponse:aResponse,file:file,stream:stream})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "handleRequest:respondTo:",
- protocol: "request handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aRequest", "aResponse"],
- 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]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "=", "method", "handlePUTRequest:respondTo:", "handleGETRequest:respondTo:", "handleOPTIONSRequest:respondTo:"]
- }, function ($methodClass){ return function (aRequest,aResponse){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if($core.assert([$recv([$recv(aRequest)._method()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["method"]=1
- //>>excludeEnd("ctx");
- ][0]).__eq("PUT")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])){
- $self._handlePUTRequest_respondTo_(aRequest,aResponse);
- }
- if($core.assert([$recv([$recv(aRequest)._method()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["method"]=2
- //>>excludeEnd("ctx");
- ][0]).__eq("GET")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["="]=2
- //>>excludeEnd("ctx");
- ][0])){
- $self._handleGETRequest_respondTo_(aRequest,aResponse);
- }
- if($core.assert($recv($recv(aRequest)._method()).__eq("OPTIONS"))){
- $self._handleOPTIONSRequest_respondTo_(aRequest,aResponse);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"handleRequest:respondTo:",{aRequest:aRequest,aResponse:aResponse})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "host",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "host\x0a\x09^ host",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.host;
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "host:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["hostname"],
- source: "host: hostname\x0a\x09host := hostname",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (hostname){
- var self=this,$self=this;
- $self.host=hostname;
- return self;
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "require:", "defaultHost", "class", "defaultPort"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.http=[$self._require_("http")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["require:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self.util=[$self._require_("util")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["require:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $self.url=$self._require_("url");
- $self.host=$recv([$self._class()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["class"]=1
- //>>excludeEnd("ctx");
- ][0])._defaultHost();
- $self.port=$recv($self._class())._defaultPort();
- $self.username=nil;
- $self.password=nil;
- $self.fallbackPage=nil;
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "isAuthenticated:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aRequest"],
- source: "isAuthenticated: aRequest\x0a\x09\x22Basic HTTP Auth: http://stackoverflow.com/a/5957629/293175\x0a\x09 and https://gist.github.com/1686663\x22\x0a\x09| header token auth parts|\x0a\x0a\x09(username isNil and: [password isNil]) ifTrue: [^ true].\x0a\x0a\x09\x22get authentication header\x22\x0a\x09header := (aRequest headers at: 'authorization') ifNil:[''].\x0a\x09header\x0a\x09ifEmpty: [^ false]\x0a\x09ifNotEmpty: [\x0a\x09\x09\x22get authentication token\x22\x0a\x09\x09token := (header tokenize: ' ') ifNil:[''].\x0a\x09\x09\x22convert back from base64\x22\x0a\x09\x09auth := self base64Decode: (token at: 2).\x0a\x09\x09\x22split token at colon\x22\x0a\x09\x09parts := auth tokenize: ':'.\x0a\x0a\x09\x09((username = (parts at: 1)) and: [password = (parts at: 2)])\x0a\x09\x09\x09ifTrue: [^ true]\x0a\x09\x09\x09ifFalse: [^ false]\x0a\x09].",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "and:", "isNil", "ifNil:", "at:", "headers", "ifEmpty:ifNotEmpty:", "tokenize:", "base64Decode:", "ifTrue:ifFalse:", "="]
- }, function ($methodClass){ return function (aRequest){
- var self=this,$self=this;
- var header,token,auth,parts;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3,$4;
- var $early={};
- try {
- if($core.assert([$recv($self.username)._isNil()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["isNil"]=1
- //>>excludeEnd("ctx");
- ][0])){
- $1=$recv($self.password)._isNil();
- } else {
- $1=false;
- }
- if($core.assert($1)){
- return true;
- }
- $2=[$recv($recv(aRequest)._headers())._at_("authorization")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($2 == null || $2.a$nil){
- header="";
- } else {
- header=$2;
- }
- $recv(header)._ifEmpty_ifNotEmpty_((function(){
- throw $early=[false];
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- $3=[$recv(header)._tokenize_(" ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["tokenize:"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($3 == null || $3.a$nil){
- token="";
- } else {
- token=$3;
- }
- auth=$self._base64Decode_([$recv(token)._at_((2))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["at:"]=2
- //>>excludeEnd("ctx");
- ][0]);
- parts=$recv(auth)._tokenize_(":");
- if($core.assert([$recv($self.username).__eq([$recv(parts)._at_((1))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["at:"]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["="]=1
- //>>excludeEnd("ctx");
- ][0])){
- $4=$recv($self.password).__eq($recv(parts)._at_((2)));
- } else {
- $4=false;
- }
- if($core.assert($4)){
- throw $early=[true];
- } else {
- throw $early=[false];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
- //>>excludeEnd("ctx");
- }));
- return self;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isAuthenticated:",{aRequest:aRequest,header:header,token:token,auth:auth,parts:parts})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "password:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPassword"],
- source: "password: aPassword\x0a\x09password := aPassword.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aPassword){
- var self=this,$self=this;
- $self.password=aPassword;
- return self;
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "port",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "port\x0a\x09^ port",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.port;
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "port:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aNumber"],
- source: "port: aNumber\x0a\x09port := aNumber",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aNumber){
- var self=this,$self=this;
- $self.port=aNumber;
- return self;
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "require:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aModuleString"],
- source: "require: aModuleString\x0a\x09\x22call to the require function\x22\x0a\x09^require value: aModuleString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["value:"]
- }, function ($methodClass){ return function (aModuleString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(require)._value_(aModuleString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"require:",{aModuleString:aModuleString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "respondAuthenticationRequiredTo:",
- protocol: "request handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aResponse"],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["writeHead:options:", "write:", "end"]
- }, function ($methodClass){ return function (aResponse){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aResponse)._writeHead_options_((401),$globals.HashedCollection._newFromPairs_(["WWW-Authenticate","Basic realm=\x22Secured Developer Area\x22"]));
- $recv(aResponse)._write_("<html><body>Authentication needed</body></html>");
- $recv(aResponse)._end();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"respondAuthenticationRequiredTo:",{aResponse:aResponse})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "respondCreatedTo:",
- protocol: "request handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aResponse"],
- source: "respondCreatedTo: aResponse\x0a\x09aResponse\x0a\x09\x09writeHead: 201 options: #{'Content-Type' -> 'text/plain'. 'Access-Control-Allow-Origin' -> '*'};\x0a\x09\x09end.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["writeHead:options:", "end"]
- }, function ($methodClass){ return function (aResponse){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aResponse)._writeHead_options_((201),$globals.HashedCollection._newFromPairs_(["Content-Type","text/plain","Access-Control-Allow-Origin","*"]));
- $recv(aResponse)._end();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"respondCreatedTo:",{aResponse:aResponse})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "respondDirectoryNamed:from:to:",
- protocol: "request handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aDirname", "aUrl", "aResponse"],
- 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]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:ifFalse:", "endsWith:", "pathname", "respondFileNamed:to:", ",", "respondRedirect:to:", "ifNil:", "search"]
- }, function ($methodClass){ return function (aDirname,aUrl,aResponse){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2,$3;
- if($core.assert($recv([$recv(aUrl)._pathname()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["pathname"]=1
- //>>excludeEnd("ctx");
- ][0])._endsWith_("/"))){
- $self._respondFileNamed_to_([$recv(aDirname).__comma("index.html")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0],aResponse);
- } else {
- $1=$recv($recv(aUrl)._pathname()).__comma("/");
- $2=$recv(aUrl)._search();
- if($2 == null || $2.a$nil){
- $3="";
- } else {
- $3=$2;
- }
- $self._respondRedirect_to_([$recv($1).__comma($3)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0],aResponse);
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"respondDirectoryNamed:from:to:",{aDirname:aDirname,aUrl:aUrl,aResponse:aResponse})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "respondFileNamed:to:",
- protocol: "request handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aFilename", "aResponse"],
- 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]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["readFile:do:", "ifTrue:ifFalse:", "notNil", "log:", ",", "respondNotFoundTo:", "mimeTypeFor:", "class", "ifTrue:", "=", "writeHead:options:", "write:encoding:", "end"]
- }, function ($methodClass){ return function (aFilename,aResponse){
- var self=this,$self=this;
- var type,filename;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- filename=aFilename;
- $recv($self.fs)._readFile_do_(filename,(function(ex,file){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(ex)._notNil())){
- $recv(console)._log_([$recv(filename).__comma(" does not exist")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]);
- return $self._respondNotFoundTo_(aResponse);
- } else {
- type=$recv($self._class())._mimeTypeFor_(filename);
- if($core.assert($recv(type).__eq("application/javascript"))){
- type=$recv(type).__comma(";charset=utf-8");
- type;
- }
- $recv(aResponse)._writeHead_options_((200),$globals.HashedCollection._newFromPairs_(["Content-Type",type]));
- $recv(aResponse)._write_encoding_(file,"binary");
- return $recv(aResponse)._end();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({ex:ex,file:file},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"respondFileNamed:to:",{aFilename:aFilename,aResponse:aResponse,type:type,filename:filename})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "respondInternalErrorTo:",
- protocol: "request handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aResponse"],
- source: "respondInternalErrorTo: aResponse\x0a\x09aResponse \x0a\x09\x09writeHead: 500 options: #{'Content-Type' -> 'text/plain'};\x0a\x09\x09write: '500 Internal server error';\x0a\x09\x09end",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["writeHead:options:", "write:", "end"]
- }, function ($methodClass){ return function (aResponse){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aResponse)._writeHead_options_((500),$globals.HashedCollection._newFromPairs_(["Content-Type","text/plain"]));
- $recv(aResponse)._write_("500 Internal server error");
- $recv(aResponse)._end();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"respondInternalErrorTo:",{aResponse:aResponse})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "respondNotCreatedTo:",
- protocol: "request handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aResponse"],
- 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.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["writeHead:options:", "write:", "end"]
- }, function ($methodClass){ return function (aResponse){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aResponse)._writeHead_options_((400),$globals.HashedCollection._newFromPairs_(["Content-Type","text/plain"]));
- $recv(aResponse)._write_("File could not be created. Did you forget to create the src directory on the server?");
- $recv(aResponse)._end();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"respondNotCreatedTo:",{aResponse:aResponse})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "respondNotFoundTo:",
- protocol: "request handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aResponse"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifFalse:", "isNil", "fallbackPage", "respondFileNamed:to:", "writeHead:options:", "write:", "end"]
- }, function ($methodClass){ return function (aResponse){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- if(!$core.assert($recv([$self._fallbackPage()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["fallbackPage"]=1
- //>>excludeEnd("ctx");
- ][0])._isNil())){
- return $self._respondFileNamed_to_($self._fallbackPage(),aResponse);
- }
- $recv(aResponse)._writeHead_options_((404),$globals.HashedCollection._newFromPairs_(["Content-Type","text/html"]));
- [$recv(aResponse)._write_("<html><body><p>404 Not found</p>")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$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>")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aResponse)._write_("<li>create an index.html in the served directory.</li>")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=3
- //>>excludeEnd("ctx");
- ][0];
- [$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>")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=4
- //>>excludeEnd("ctx");
- ][0];
- [$recv(aResponse)._write_("<li>change the directory to be served with the \x22--base-path\x22 option.</li>")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["write:"]=5
- //>>excludeEnd("ctx");
- ][0];
- $recv(aResponse)._write_("</ul></p></body></html>");
- $recv(aResponse)._end();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"respondNotFoundTo:",{aResponse:aResponse})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "respondOKTo:",
- protocol: "request handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aResponse"],
- source: "respondOKTo: aResponse\x0a\x09aResponse\x0a\x09\x09writeHead: 200 options: #{'Content-Type' -> 'text/plain'. 'Access-Control-Allow-Origin' -> '*'};\x0a\x09\x09end.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["writeHead:options:", "end"]
- }, function ($methodClass){ return function (aResponse){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aResponse)._writeHead_options_((200),$globals.HashedCollection._newFromPairs_(["Content-Type","text/plain","Access-Control-Allow-Origin","*"]));
- $recv(aResponse)._end();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"respondOKTo:",{aResponse:aResponse})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "respondRedirect:to:",
- protocol: "request handling",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aResponse"],
- source: "respondRedirect: aString to: aResponse\x0a\x09aResponse\x0a\x09\x09writeHead: 303 options: #{'Location' -> aString};\x0a\x09\x09end.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["writeHead:options:", "end"]
- }, function ($methodClass){ return function (aString,aResponse){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(aResponse)._writeHead_options_((303),$globals.HashedCollection._newFromPairs_(["Location",aString]));
- $recv(aResponse)._end();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"respondRedirect:to:",{aString:aString,aResponse:aResponse})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "start",
- protocol: "starting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "start\x0a\x09\x22Checks if required directory layout is present (issue warning if not).\x0a\x09 Afterwards start the server.\x22\x0a\x09self checkDirectoryLayout.\x0a\x09(http createServer: [:request :response |\x0a\x09 self handleRequest: request respondTo: response])\x0a\x09 on: 'error' do: [:error | console log: 'Error starting server: ', error asString];\x0a\x09 on: 'listening' do: [console log: 'Starting file server on http://', self host, ':', self port asString];\x0a\x09 listen: self port host: self host.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["checkDirectoryLayout", "on:do:", "createServer:", "handleRequest:respondTo:", "log:", ",", "asString", "host", "port", "listen:host:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $self._checkDirectoryLayout();
- $1=$recv($self.http)._createServer_((function(request,response){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._handleRequest_respondTo_(request,response);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({request:request,response:response},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- [$recv($1)._on_do_("error",(function(error){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv(console)._log_(["Error starting server: ".__comma([$recv(error)._asString()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["asString"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["log:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,2)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["on:do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._on_do_("listening",(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(console)._log_([$recv([$recv("Starting file server on http://".__comma([$self._host()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["host"]=1
- //>>excludeEnd("ctx");
- ][0])).__comma(":")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0]).__comma($recv([$self._port()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["port"]=1
- //>>excludeEnd("ctx");
- ][0])._asString())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- $recv($1)._listen_host_($self._port(),$self._host());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"start",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "startOn:",
- protocol: "starting",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aPort"],
- source: "startOn: aPort\x0a\x09self port: aPort.\x0a\x09self start",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["port:", "start"]
- }, function ($methodClass){ return function (aPort){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self._port_(aPort);
- $self._start();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"startOn:",{aPort:aPort})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "username:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aUsername"],
- source: "username: aUsername\x0a\x09username := aUsername.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (aUsername){
- var self=this,$self=this;
- $self.username=aUsername;
- return self;
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "validateBasePath",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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.' ]].",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["stat:then:", "basePath", "ifNil:ifNotNil:", "ifFalse:", "isDirectory", "warn:", ","]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.fs)._stat_then_([$self._basePath()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["basePath"]=1
- //>>excludeEnd("ctx");
- ][0],(function(err,stat){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if(err == null || err.a$nil){
- if(!$core.assert($recv(stat)._isDirectory())){
- return [$recv(console)._warn_([$recv(["Warning: --base-path parameter ".__comma([$self._basePath()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["basePath"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(" is not a directory.")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["warn:"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- } else {
- return $recv(console)._warn_([$recv("Warning: path at --base-path parameter ".__comma($self._basePath())).__comma(" does not exist.")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0]);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({err:err,stat:stat},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"validateBasePath",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "withBasePath:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBaseRelativePath"],
- source: "withBasePath: aBaseRelativePath\x0a\x09\x22return a file path which is relative to the basePath.\x22\x0a\x09^ path join: self basePath with: aBaseRelativePath",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["join:with:", "basePath"]
- }, function ($methodClass){ return function (aBaseRelativePath){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self.path)._join_with_($self._basePath(),aBaseRelativePath);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"withBasePath:",{aBaseRelativePath:aBaseRelativePath})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.addMethod(
- $core.method({
- selector: "writeData:toFileNamed:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["data", "aFilename"],
- source: "writeData: data toFileNamed: aFilename\x0a\x09console log: aFilename",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["log:"]
- }, function ($methodClass){ return function (data,aFilename){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(console)._log_(aFilename);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"writeData:toFileNamed:",{data:data,aFilename:aFilename})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer);
- $core.setSlots($globals.FileServer.a$cls, ["mimeTypes"]);
- $core.addMethod(
- $core.method({
- selector: "commandLineSwitches",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "methodsInProtocol:", "selector", "select:", "match:", "replace:with:", "asLowercase", "allButLast"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var switches;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- switches=[$recv($self._methodsInProtocol_("accessing"))._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._selector();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["collect:"]=1
- //>>excludeEnd("ctx");
- ][0];
- switches=$recv(switches)._select_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(each)._match_("^[^:]*:$");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- switches=$recv(switches)._collect_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return [$recv($recv($recv($recv(each)._allButLast())._replace_with_("([A-Z])","-$1"))._asLowercase())._replace_with_("^([a-z])","--$1")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["replace:with:"]=1
- //>>excludeEnd("ctx");
- ][0];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return switches;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"commandLineSwitches",{switches:switches})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer.a$cls);
- $core.addMethod(
- $core.method({
- selector: "createServerWithArguments:",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["options"],
- source: "createServerWithArguments: options\x0a\x09\x22If options are empty return a default FileServer instance.\x0a\x09 If options are given loop through them and set the passed in values\x0a\x09 on the FileServer instance.\x0a\x09 \x0a\x09 Commanline options map directly to methods in the 'accessing' protocol\x0a\x09 taking one parameter.\x0a\x09 Adding a method to this protocol makes it directly settable through\x0a\x09 command line options.\x0a\x09 \x22\x0a\x09| server popFront front optionName optionValue switches |\x0a\x0a\x09switches := self commandLineSwitches.\x0a\x0a\x09server := self new.\x0a\x0a\x09options ifEmpty: [^server].\x0a\x0a\x09(options size even) ifFalse: [\x0a\x09\x09console log: 'Using default parameters.'.\x0a\x09\x09console log: 'Wrong commandline options or not enough arguments for: ' , (' ' join: options).\x0a\x09\x09console log: 'Use any of the following ones: ', (',' join: switches).\x0a\x09\x09^server].\x0a\x0a\x09popFront := [:args |\x0a\x09\x09front := args first.\x0a\x09\x09args remove: front.\x0a\x09\x09front].\x0a\x0a\x09[options notEmpty] whileTrue: [\x0a\x09\x09optionName := popFront value: options.\x0a\x09\x09optionValue := popFront value: options.\x0a\x0a\x09\x09(switches includes: optionName) ifTrue: [\x0a\x09\x09\x09optionName := self selectorForCommandLineSwitch: optionName.\x0a\x09\x09\x09server perform: optionName withArguments: { optionValue } ]\x0a\x09\x09\x09ifFalse: [\x0a\x09\x09\x09\x09console log: optionName, ' is not a valid commandline option'.\x0a\x09\x09\x09\x09console log: 'Use any of the following ones: ', (',' join: switches) ]].\x0a\x09^ server.",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["commandLineSwitches", "new", "ifEmpty:", "ifFalse:", "even", "size", "log:", ",", "join:", "first", "remove:", "whileTrue:", "notEmpty", "value:", "ifTrue:ifFalse:", "includes:", "selectorForCommandLineSwitch:", "perform:withArguments:"]
- }, function ($methodClass){ return function (options){
- var self=this,$self=this;
- var server,popFront,front,optionName,optionValue,switches;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- switches=$self._commandLineSwitches();
- server=$self._new();
- $recv(options)._ifEmpty_((function(){
- throw $early=[server];
- }));
- if(!$core.assert($recv($recv(options)._size())._even())){
- [$recv(console)._log_("Using default parameters.")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["log:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(console)._log_(["Wrong commandline options or not enough arguments for: ".__comma([" "._join_(options)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["join:"]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["log:"]=2
- //>>excludeEnd("ctx");
- ][0];
- [$recv(console)._log_(["Use any of the following ones: ".__comma([","._join_(switches)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["join:"]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["log:"]=3
- //>>excludeEnd("ctx");
- ][0];
- return server;
- }
- popFront=(function(args){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- front=$recv(args)._first();
- $recv(args)._remove_(front);
- return front;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({args:args},$ctx1,3)});
- //>>excludeEnd("ctx");
- });
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(options)._notEmpty();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,4)});
- //>>excludeEnd("ctx");
- }))._whileTrue_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- optionName=[$recv(popFront)._value_(options)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["value:"]=1
- //>>excludeEnd("ctx");
- ][0];
- optionValue=$recv(popFront)._value_(options);
- if($core.assert($recv(switches)._includes_(optionName))){
- optionName=$self._selectorForCommandLineSwitch_(optionName);
- return $recv(server)._perform_withArguments_(optionName,[optionValue]);
- } else {
- [$recv(console)._log_([$recv(optionName).__comma(" is not a valid commandline option")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0])
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["log:"]=4
- //>>excludeEnd("ctx");
- ][0];
- return $recv(console)._log_("Use any of the following ones: ".__comma(","._join_(switches)));
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,5)});
- //>>excludeEnd("ctx");
- }));
- return server;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"createServerWithArguments:",{options:options,server:server,popFront:popFront,front:front,optionName:optionName,optionValue:optionValue,switches:switches})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer.a$cls);
- $core.addMethod(
- $core.method({
- selector: "defaultBasePath",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "defaultBasePath\x0a\x09^ './'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "./";
- }; }),
- $globals.FileServer.a$cls);
- $core.addMethod(
- $core.method({
- selector: "defaultHost",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "defaultHost\x0a\x09^ '127.0.0.1'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "127.0.0.1";
- }; }),
- $globals.FileServer.a$cls);
- $core.addMethod(
- $core.method({
- selector: "defaultMimeTypes",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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}",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $globals.HashedCollection._newFromPairs_(["%","application/x-trash","323","text/h323","abw","application/x-abiword","ai","application/postscript","aif","audio/x-aiff","aifc","audio/x-aiff","aiff","audio/x-aiff","alc","chemical/x-alchemy","art","image/x-jg","asc","text/plain","asf","video/x-ms-asf","asn","chemical/x-ncbi-asn1-spec","aso","chemical/x-ncbi-asn1-binary","asx","video/x-ms-asf","au","audio/basic","avi","video/x-msvideo","b","chemical/x-molconn-Z","bak","application/x-trash","bat","application/x-msdos-program","bcpio","application/x-bcpio","bib","text/x-bibtex","bin","application/octet-stream","bmp","image/x-ms-bmp","book","application/x-maker","bsd","chemical/x-crossfire","c","text/x-csrc","c++","text/x-c++src","c3d","chemical/x-chem3d","cac","chemical/x-cache","cache","chemical/x-cache","cascii","chemical/x-cactvs-binary","cat","application/vnd.ms-pki.seccat","cbin","chemical/x-cactvs-binary","cc","text/x-c++src","cdf","application/x-cdf","cdr","image/x-coreldraw","cdt","image/x-coreldrawtemplate","cdx","chemical/x-cdx","cdy","application/vnd.cinderella","cef","chemical/x-cxf","cer","chemical/x-cerius","chm","chemical/x-chemdraw","chrt","application/x-kchart","cif","chemical/x-cif","class","application/java-vm","cls","text/x-tex","cmdf","chemical/x-cmdf","cml","chemical/x-cml","cod","application/vnd.rim.cod","com","application/x-msdos-program","cpa","chemical/x-compass","cpio","application/x-cpio","cpp","text/x-c++src","cpt","image/x-corelphotopaint","crl","application/x-pkcs7-crl","crt","application/x-x509-ca-cert","csf","chemical/x-cache-csf","csh","text/x-csh","csm","chemical/x-csml","csml","chemical/x-csml","css","text/css","csv","text/comma-separated-values","ctab","chemical/x-cactvs-binary","ctx","chemical/x-ctx","cu","application/cu-seeme","cub","chemical/x-gaussian-cube","cxf","chemical/x-cxf","cxx","text/x-c++src","dat","chemical/x-mopac-input","dcr","application/x-director","deb","application/x-debian-package","dif","video/dv","diff","text/plain","dir","application/x-director","djv","image/vnd.djvu","djvu","image/vnd.djvu","dl","video/dl","dll","application/x-msdos-program","dmg","application/x-apple-diskimage","dms","application/x-dms","doc","application/msword","dot","application/msword","dv","video/dv","dvi","application/x-dvi","dx","chemical/x-jcamp-dx","dxr","application/x-director","emb","chemical/x-embl-dl-nucleotide","embl","chemical/x-embl-dl-nucleotide","ent","chemical/x-pdb","eps","application/postscript","etx","text/x-setext","exe","application/x-msdos-program","ez","application/andrew-inset","fb","application/x-maker","fbdoc","application/x-maker","fch","chemical/x-gaussian-checkpoint","fchk","chemical/x-gaussian-checkpoint","fig","application/x-xfig","flac","application/x-flac","fli","video/fli","fm","application/x-maker","frame","application/x-maker","frm","application/x-maker","gal","chemical/x-gaussian-log","gam","chemical/x-gamess-input","gamin","chemical/x-gamess-input","gau","chemical/x-gaussian-input","gcd","text/x-pcs-gcd","gcf","application/x-graphing-calculator","gcg","chemical/x-gcg8-sequence","gen","chemical/x-genbank","gf","application/x-tex-gf","gif","image/gif","gjc","chemical/x-gaussian-input","gjf","chemical/x-gaussian-input","gl","video/gl","gnumeric","application/x-gnumeric","gpt","chemical/x-mopac-graph","gsf","application/x-font","gsm","audio/x-gsm","gtar","application/x-gtar","h","text/x-chdr","h++","text/x-c++hdr","hdf","application/x-hdf","hh","text/x-c++hdr","hin","chemical/x-hin","hpp","text/x-c++hdr","hqx","application/mac-binhex40","hs","text/x-haskell","hta","application/hta","htc","text/x-component","htm","text/html","html","text/html","hxx","text/x-c++hdr","ica","application/x-ica","ice","x-conference/x-cooltalk","ico","image/x-icon","ics","text/calendar","icz","text/calendar","ief","image/ief","iges","model/iges","igs","model/iges","iii","application/x-iphone","inp","chemical/x-gamess-input","ins","application/x-internet-signup","iso","application/x-iso9660-image","isp","application/x-internet-signup","ist","chemical/x-isostar","istr","chemical/x-isostar","jad","text/vnd.sun.j2me.app-descriptor","jar","application/java-archive","java","text/x-java","jdx","chemical/x-jcamp-dx","jmz","application/x-jmol","jng","image/x-jng","jnlp","application/x-java-jnlp-file","jpe","image/jpeg","jpeg","image/jpeg","jpg","image/jpeg","js","application/javascript","kar","audio/midi","key","application/pgp-keys","kil","application/x-killustrator","kin","chemical/x-kinemage","kpr","application/x-kpresenter","kpt","application/x-kpresenter","ksp","application/x-kspread","kwd","application/x-kword","kwt","application/x-kword","latex","application/x-latex","lha","application/x-lha","lhs","text/x-literate-haskell","lsf","video/x-la-asf","lsx","video/x-la-asf","ltx","text/x-tex","lzh","application/x-lzh","lzx","application/x-lzx","m3u","audio/x-mpegurl","m4a","audio/mpeg","maker","application/x-maker","man","application/x-troff-man","mcif","chemical/x-mmcif","mcm","chemical/x-macmolecule","mdb","application/msaccess","me","application/x-troff-me","mesh","model/mesh","mid","audio/midi","midi","audio/midi","mif","application/x-mif","mm","application/x-freemind","mmd","chemical/x-macromodel-input","mmf","application/vnd.smaf","mml","text/mathml","mmod","chemical/x-macromodel-input","mng","video/x-mng","moc","text/x-moc","mol","chemical/x-mdl-molfile","mol2","chemical/x-mol2","moo","chemical/x-mopac-out","mop","chemical/x-mopac-input","mopcrt","chemical/x-mopac-input","mov","video/quicktime","movie","video/x-sgi-movie","mp2","audio/mpeg","mp3","audio/mpeg","mp4","video/mp4","mpc","chemical/x-mopac-input","mpe","video/mpeg","mpeg","video/mpeg","mpega","audio/mpeg","mpg","video/mpeg","mpga","audio/mpeg","ms","application/x-troff-ms","msh","model/mesh","msi","application/x-msi","mvb","chemical/x-mopac-vib","mxu","video/vnd.mpegurl","nb","application/mathematica","nc","application/x-netcdf","nwc","application/x-nwc","o","application/x-object","oda","application/oda","odb","application/vnd.oasis.opendocument.database","odc","application/vnd.oasis.opendocument.chart","odf","application/vnd.oasis.opendocument.formula","odg","application/vnd.oasis.opendocument.graphics","odi","application/vnd.oasis.opendocument.image","odm","application/vnd.oasis.opendocument.text-master","odp","application/vnd.oasis.opendocument.presentation","ods","application/vnd.oasis.opendocument.spreadsheet","odt","application/vnd.oasis.opendocument.text","ogg","application/ogg","old","application/x-trash","oth","application/vnd.oasis.opendocument.text-web","oza","application/x-oz-application","p","text/x-pascal","p7r","application/x-pkcs7-certreqresp","pac","application/x-ns-proxy-autoconfig","pas","text/x-pascal","pat","image/x-coreldrawpattern","pbm","image/x-portable-bitmap","pcf","application/x-font","pcf.Z","application/x-font","pcx","image/pcx","pdb","chemical/x-pdb","pdf","application/pdf","pfa","application/x-font","pfb","application/x-font","pgm","image/x-portable-graymap","pgn","application/x-chess-pgn","pgp","application/pgp-signature","pk","application/x-tex-pk","pl","text/x-perl","pls","audio/x-scpls","pm","text/x-perl","png","image/png","pnm","image/x-portable-anymap","pot","text/plain","ppm","image/x-portable-pixmap","pps","application/vnd.ms-powerpoint","ppt","application/vnd.ms-powerpoint","prf","application/pics-rules","prt","chemical/x-ncbi-asn1-ascii","ps","application/postscript","psd","image/x-photoshop","psp","text/x-psp","py","text/x-python","pyc","application/x-python-code","pyo","application/x-python-code","qt","video/quicktime","qtl","application/x-quicktimeplayer","ra","audio/x-realaudio","ram","audio/x-pn-realaudio","rar","application/rar","ras","image/x-cmu-raster","rd","chemical/x-mdl-rdfile","rdf","application/rdf+xml","rgb","image/x-rgb","rm","audio/x-pn-realaudio","roff","application/x-troff","ros","chemical/x-rosdal","rpm","application/x-redhat-package-manager","rss","application/rss+xml","rtf","text/rtf","rtx","text/richtext","rxn","chemical/x-mdl-rxnfile","sct","text/scriptlet","sd","chemical/x-mdl-sdfile","sd2","audio/x-sd2","sda","application/vnd.stardivision.draw","sdc","application/vnd.stardivision.calc","sdd","application/vnd.stardivision.impress","sdf","chemical/x-mdl-sdfile","sdp","application/vnd.stardivision.impress","sdw","application/vnd.stardivision.writer","ser","application/java-serialized-object","sgf","application/x-go-sgf","sgl","application/vnd.stardivision.writer-global","sh","text/x-sh","shar","application/x-shar","shtml","text/html","sid","audio/prs.sid","sik","application/x-trash","silo","model/mesh","sis","application/vnd.symbian.install","sit","application/x-stuffit","skd","application/x-koan","skm","application/x-koan","skp","application/x-koan","skt","application/x-koan","smf","application/vnd.stardivision.math","smi","application/smil","smil","application/smil","snd","audio/basic","spc","chemical/x-galactic-spc","spl","application/x-futuresplash","src","application/x-wais-source","stc","application/vnd.sun.xml.calc.template","std","application/vnd.sun.xml.draw.template","sti","application/vnd.sun.xml.impress.template","stl","application/vnd.ms-pki.stl","stw","application/vnd.sun.xml.writer.template","sty","text/x-tex","sv4cpio","application/x-sv4cpio","sv4crc","application/x-sv4crc","svg","image/svg+xml","svgz","image/svg+xml","sw","chemical/x-swissprot","swf","application/x-shockwave-flash","swfl","application/x-shockwave-flash","sxc","application/vnd.sun.xml.calc","sxd","application/vnd.sun.xml.draw","sxg","application/vnd.sun.xml.writer.global","sxi","application/vnd.sun.xml.impress","sxm","application/vnd.sun.xml.math","sxw","application/vnd.sun.xml.writer","t","application/x-troff","tar","application/x-tar","taz","application/x-gtar","tcl","text/x-tcl","tex","text/x-tex","texi","application/x-texinfo","texinfo","application/x-texinfo","text","text/plain","tgf","chemical/x-mdl-tgf","tgz","application/x-gtar","tif","image/tiff","tiff","image/tiff","tk","text/x-tcl","tm","text/texmacs","torrent","application/x-bittorrent","tr","application/x-troff","ts","text/texmacs","tsp","application/dsptype","tsv","text/tab-separated-values","txt","text/plain","udeb","application/x-debian-package","uls","text/iuls","ustar","application/x-ustar","val","chemical/x-ncbi-asn1-binary","vcd","application/x-cdlink","vcf","text/x-vcard","vcs","text/x-vcalendar","vmd","chemical/x-vmd","vms","chemical/x-vamas-iso14976","vor","application/vnd.stardivision.writer","vrm","x-world/x-vrml","vrml","x-world/x-vrml","vsd","application/vnd.visio","wad","application/x-doom","wav","audio/x-wav","wax","audio/x-ms-wax","wbmp","image/vnd.wap.wbmp","wbxml","application/vnd.wap.wbxml","wk","application/x-123","wm","video/x-ms-wm","wma","audio/x-ms-wma","wmd","application/x-ms-wmd","wml","text/vnd.wap.wml","wmlc","application/vnd.wap.wmlc","wmls","text/vnd.wap.wmlscript","wmlsc","application/vnd.wap.wmlscriptc","wmv","video/x-ms-wmv","wmx","video/x-ms-wmx","wmz","application/x-ms-wmz","wp5","application/wordperfect5.1","wpd","application/wordperfect","wrl","x-world/x-vrml","wsc","text/scriptlet","wvx","video/x-ms-wvx","wz","application/x-wingz","xbm","image/x-xbitmap","xcf","application/x-xcf","xht","application/xhtml+xml","xhtml","application/xhtml+xml","xlb","application/vnd.ms-excel","xls","application/vnd.ms-excel","xlt","application/vnd.ms-excel","xml","application/xml","xpi","application/x-xpinstall","xpm","image/x-xpixmap","xsl","application/xml","xtel","chemical/x-xtel","xul","application/vnd.mozilla.xul+xml","xwd","image/x-xwindowdump","xyz","chemical/x-xyz","zip","application/zip","zmt","chemical/x-mopac-input","~","application/x-trash"]);
- }; }),
- $globals.FileServer.a$cls);
- $core.addMethod(
- $core.method({
- selector: "defaultPort",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "defaultPort\x0a\x09^ 4000",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return (4000);
- }; }),
- $globals.FileServer.a$cls);
- $core.addMethod(
- $core.method({
- selector: "main",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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]",
- referencedClasses: ["FileServer"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["argv", "removeFrom:to:", "detect:ifNone:", "ifTrue:", "=", "printHelp", "createServerWithArguments:", "start"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var fileServer,args;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- args=$recv(process)._argv();
- $recv(args)._removeFrom_to_((1),(3));
- $recv(args)._detect_ifNone_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(each).__eq("--help"))){
- return $recv($globals.FileServer)._printHelp();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }),(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- fileServer=$recv($globals.FileServer)._createServerWithArguments_(args);
- throw $early=[$recv(fileServer)._start()];
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,3)});
- //>>excludeEnd("ctx");
- }));
- return self;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"main",{fileServer:fileServer,args:args})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer.a$cls);
- $core.addMethod(
- $core.method({
- selector: "mimeTypeFor:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "mimeTypeFor: aString\x0a\x09^ self mimeTypes at: (aString replace: '.*[\x5c.]' with: '') ifAbsent: ['text/plain']",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["at:ifAbsent:", "mimeTypes", "replace:with:"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._mimeTypes())._at_ifAbsent_($recv(aString)._replace_with_(".*[\x5c.]",""),(function(){
- return "text/plain";
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"mimeTypeFor:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer.a$cls);
- $core.addMethod(
- $core.method({
- selector: "mimeTypes",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "mimeTypes\x0a\x09^ mimeTypes ifNil: [mimeTypes := self defaultMimeTypes]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNil:", "defaultMimeTypes"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.mimeTypes;
- if($1 == null || $1.a$nil){
- $self.mimeTypes=$self._defaultMimeTypes();
- return $self.mimeTypes;
- } else {
- return $1;
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"mimeTypes",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer.a$cls);
- $core.addMethod(
- $core.method({
- selector: "printHelp",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "printHelp\x0a\x09console log: 'Available commandline options are:'.\x0a\x09console log: '--help'.\x0a\x09self commandLineSwitches do: [ :each |\x0a\x09\x09console log: each, ' <parameter>']",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["log:", "do:", "commandLineSwitches", ","]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [$recv(console)._log_("Available commandline options are:")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["log:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv(console)._log_("--help")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["log:"]=2
- //>>excludeEnd("ctx");
- ][0];
- $recv($self._commandLineSwitches())._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(console)._log_($recv(each).__comma(" <parameter>"));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printHelp",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer.a$cls);
- $core.addMethod(
- $core.method({
- selector: "selectorForCommandLineSwitch:",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aSwitch"],
- 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 ]), ':'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: [",", "replace:with:", "asUppercase", "second"]
- }, function ($methodClass){ return function (aSwitch){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv([$recv($recv(aSwitch)._replace_with_("^--",""))._replace_with_("-[a-z]",(function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($recv(each)._second())._asUppercase();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["replace:with:"]=1
- //>>excludeEnd("ctx");
- ][0]).__comma(":");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"selectorForCommandLineSwitch:",{aSwitch:aSwitch})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.FileServer.a$cls);
- $core.addClass("Initer", $globals.BaseFileManipulator, "AmberCli");
- $core.setSlots($globals.Initer, ["childProcess", "nmPath"]);
- $core.addMethod(
- $core.method({
- selector: "finishMessage",
- protocol: "action",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "finishMessage\x0a\x09console log: (#(\x0a\x09\x09' '\x0a\x09\x09'The project should now be set up.'\x0a\x09\x09' '\x0a\x09\x09' '\x0a\x09) join: String lf).\x0a\x09[] valueWithTimeout: 600",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["log:", "join:", "lf", "valueWithTimeout:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(console)._log_([" ", "The project should now be set up.", " ", " "]._join_($recv($globals.String)._lf()));
- $recv((function(){
- }))._valueWithTimeout_((600));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"finishMessage",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Initer);
- $core.addMethod(
- $core.method({
- selector: "gruntInitThenDo:",
- protocol: "action",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "gruntInitThenDo: aBlock\x0a\x09| child sanitizedTemplatePath |\x0a\x09sanitizedTemplatePath := ((path join: nmPath with: '@ambers/grunt-init-amber-project')\x0a\x09\x09replace: '\x5c\x5c' with: '\x5c\x5c') replace: ':' with: '\x5c:'.\x0a\x09child := childProcess\x0a\x09\x09fork: (self npmScriptForModule: 'grunt-init' named: 'grunt-init')\x0a\x09\x09args: {sanitizedTemplatePath}.\x0a\x09child\x0a\x09\x09on: 'error' do: aBlock;\x0a\x09\x09on: 'close' do: [ :code |\x0a\x09\x09\x09aBlock value: (code = 0 ifTrue: [ nil ] ifFalse: [ code ]) ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["replace:with:", "join:with:", "fork:args:", "npmScriptForModule:named:", "on:do:", "value:", "ifTrue:ifFalse:", "="]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- var child,sanitizedTemplatePath;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- sanitizedTemplatePath=[$recv($recv($recv($self.path)._join_with_($self.nmPath,"@ambers/grunt-init-amber-project"))._replace_with_("\x5c\x5c","\x5c\x5c"))._replace_with_(":","\x5c:")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["replace:with:"]=1
- //>>excludeEnd("ctx");
- ][0];
- child=$recv($self.childProcess)._fork_args_($self._npmScriptForModule_named_("grunt-init","grunt-init"),[sanitizedTemplatePath]);
- $1=child;
- [$recv($1)._on_do_("error",aBlock)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["on:do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($1)._on_do_("close",(function(code){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(code).__eq((0)))){
- $2=nil;
- } else {
- $2=code;
- }
- return $recv(aBlock)._value_($2);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({code:code},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"gruntInitThenDo:",{aBlock:aBlock,child:child,sanitizedTemplatePath:sanitizedTemplatePath})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Initer);
- $core.addMethod(
- $core.method({
- selector: "initProjectThenDo:",
- protocol: "action",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aBlock"],
- source: "initProjectThenDo: aBlock\x0a\x09| child |\x0a\x09child := childProcess\x0a\x09\x09exec: 'npm run init'\x0a\x09\x09thenDo: aBlock.\x0a\x09child stdout pipe: process stdout options: #{ 'end' -> false }",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["exec:thenDo:", "pipe:options:", "stdout"]
- }, function ($methodClass){ return function (aBlock){
- var self=this,$self=this;
- var child;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- child=$recv($self.childProcess)._exec_thenDo_("npm run init",aBlock);
- $recv([$recv(child)._stdout()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["stdout"]=1
- //>>excludeEnd("ctx");
- ][0])._pipe_options_($recv(process)._stdout(),$globals.HashedCollection._newFromPairs_(["end",false]));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initProjectThenDo:",{aBlock:aBlock,child:child})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Initer);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x09childProcess := require value: 'child_process'.\x0a\x09nmPath := path join: self rootDirname with: 'node_modules'",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "value:", "join:with:", "rootDirname"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.childProcess=$recv(require)._value_("child_process");
- $self.nmPath=$recv($self.path)._join_with_($self._rootDirname(),"node_modules");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Initer);
- $core.addMethod(
- $core.method({
- selector: "npmScriptForModule:named:",
- protocol: "npm",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anotherString"],
- source: "npmScriptForModule: aString named: anotherString\x0a\x09| modulePath packageJson binSection scriptPath |\x0a\x09modulePath := path dirname: (\x0a\x09\x09require provided resolve: aString, '/package.json').\x0a\x09packageJson := Smalltalk readJSObject: (\x0a\x09\x09require value: aString, '/package.json').\x0a\x09binSection := packageJson at: 'bin'.\x0a\x09scriptPath := binSection isString\x0a\x09\x09ifTrue: [ binSection ]\x0a\x09\x09ifFalse: [ binSection at: anotherString ].\x0a\x09^ path join: modulePath with: scriptPath",
- referencedClasses: ["Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["dirname:", "resolve:", "provided", ",", "readJSObject:", "value:", "at:", "ifTrue:ifFalse:", "isString", "join:with:"]
- }, function ($methodClass){ return function (aString,anotherString){
- var self=this,$self=this;
- var modulePath,packageJson,binSection,scriptPath;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- modulePath=$recv($self.path)._dirname_($recv($recv(require)._provided())._resolve_([$recv(aString).__comma("/package.json")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]));
- packageJson=$recv($globals.Smalltalk)._readJSObject_($recv(require)._value_($recv(aString).__comma("/package.json")));
- binSection=[$recv(packageJson)._at_("bin")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["at:"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($core.assert($recv(binSection)._isString())){
- scriptPath=binSection;
- } else {
- scriptPath=$recv(binSection)._at_(anotherString);
- }
- return $recv($self.path)._join_with_(modulePath,scriptPath);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"npmScriptForModule:named:",{aString:aString,anotherString:anotherString,modulePath:modulePath,packageJson:packageJson,binSection:binSection,scriptPath:scriptPath})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Initer);
- $core.addMethod(
- $core.method({
- selector: "start",
- protocol: "action",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "start\x0a\x09self gruntInitThenDo: [ :error | error\x0a\x09ifNotNil: [\x0a\x09\x09console log: 'grunt-init exec error:'; log: error.\x0a\x09\x09process exit: 101 ]\x0a\x09ifNil: [\x0a\x0a\x09self initProjectThenDo: [ :error2 | error2\x0a\x09ifNotNil: [\x0a\x09\x09console log: 'npm run init exec error:'; log: error2.\x0a\x09\x09process exit: 105 ]\x0a\x09ifNil: [\x0a\x0a\x09self finishMessage.\x0a\x09process exit ]]]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["gruntInitThenDo:", "ifNotNil:ifNil:", "log:", "exit:", "initProjectThenDo:", "finishMessage", "exit"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- $self._gruntInitThenDo_((function(error){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if(error == null || error.a$nil){
- return $self._initProjectThenDo_((function(error2){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- if(error2 == null || error2.a$nil){
- $self._finishMessage();
- return $recv(process)._exit();
- } else {
- $2=console;
- [$recv($2)._log_("npm run init exec error:")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx["log:"]=3
- //>>excludeEnd("ctx");
- ][0];
- $recv($2)._log_(error2);
- return $recv(process)._exit_((105));
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({error2:error2},$ctx2,4)});
- //>>excludeEnd("ctx");
- }));
- } else {
- $1=console;
- [$recv($1)._log_("grunt-init exec error:")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["log:"]=1
- //>>excludeEnd("ctx");
- ][0];
- [$recv($1)._log_(error)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["log:"]=2
- //>>excludeEnd("ctx");
- ][0];
- return [$recv(process)._exit_((101))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx2.sendIdx["exit:"]=1
- //>>excludeEnd("ctx");
- ][0];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({error:error},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"start",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Initer);
- $core.addClass("Repl", $globals.Object, "AmberCli");
- $core.setSlots($globals.Repl, ["readline", "interface", "util", "session", "resultCount", "commands"]);
- //>>excludeStart("ide", pragmas.excludeIdeData);
- $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.";
- //>>excludeEnd("ide");
- $core.addMethod(
- $core.method({
- selector: "addVariableNamed:to:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["subclass:withVariable:", "class", "encapsulateVariable:withValue:in:", "new", "setPreviousVariablesFor:from:"]
- }, function ($methodClass){ return function (aString,anObject){
- var self=this,$self=this;
- var newClass,newObject;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- newClass=$self._subclass_withVariable_($recv(anObject)._class(),aString);
- $self._encapsulateVariable_withValue_in_(aString,anObject,newClass);
- newObject=$recv(newClass)._new();
- $self._setPreviousVariablesFor_from_(newObject,anObject);
- return newObject;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"addVariableNamed:to:",{aString:aString,anObject:anObject,newClass:newClass,newObject:newObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "assignNewVariable:do:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["buffer", "aBlock"],
- 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]",
- referencedClasses: ["Error", "ConsoleErrorHandler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["parseAssignment:do:", "ifNil:", "nextResultName", "addVariableNamed:to:", "on:do:", "eval:on:", ",", "logError:", "new", "value:value:"]
- }, function ($methodClass){ return function (buffer,aBlock){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1,$2;
- return $self._parseAssignment_do_(buffer,(function(name,expr){
- var varName,value;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if(name == null || name.a$nil){
- varName=$self._nextResultName();
- } else {
- varName=name;
- }
- $self.session=$self._addVariableNamed_to_(varName,$self.session);
- $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- $1=$recv(varName).__comma(" := ");
- if(expr == null || expr.a$nil){
- $2=buffer;
- } else {
- $2=expr;
- }
- value=$self._eval_on_([$recv($1).__comma($2)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx3.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0],$self.session);
- return value;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,3)});
- //>>excludeEnd("ctx");
- }))._on_do_($globals.Error,(function(e){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- $recv($recv($globals.ConsoleErrorHandler)._new())._logError_(e);
- value=nil;
- return value;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({e:e},$ctx2,5)});
- //>>excludeEnd("ctx");
- }));
- return $recv(aBlock)._value_value_(varName,value);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({name:name,expr:expr,varName:varName,value:value},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"assignNewVariable:do:",{buffer:buffer,aBlock:aBlock})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "clearScreen",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: ["String"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["fromCharCode:", ",", "write:", "stdout", "prompt"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- var esc,cls;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- esc=$recv($globals.String)._fromCharCode_((27));
- cls=[$recv([$recv($recv(esc).__comma("[2J")).__comma(esc)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma("[0;0f")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($recv(process)._stdout())._write_(cls);
- $recv($self.interface)._prompt();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"clearScreen",{esc:esc,cls:cls})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "close",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "close\x0a\x09process stdin destroy",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["destroy", "stdin"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(process)._stdin())._destroy();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"close",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "commands",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "commands\x0a\x09^ commands",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return $self.commands;
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "createInterface",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["createInterface:stdout:", "stdin", "stdout", "on:do:", "processLine:", "close", "printWelcome", "setupHotkeys", "setPrompt", "prompt"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.interface=$recv($self.readline)._createInterface_stdout_($recv(process)._stdin(),$recv(process)._stdout());
- [$recv($self.interface)._on_do_("line",(function(buffer){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._processLine_(buffer);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({buffer:buffer},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["on:do:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv($self.interface)._on_do_("close",(function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._close();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }));
- $self._printWelcome();
- $self._setupHotkeys();
- $self._setPrompt();
- $recv($self.interface)._prompt();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"createInterface",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "encapsulateVariable:withValue:in:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "anObject", "aClass"],
- 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'.",
- referencedClasses: ["Compiler"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["new", "install:forClass:protocol:", ","]
- }, function ($methodClass){ return function (aString,anObject,aClass){
- var self=this,$self=this;
- var compiler;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- compiler=$recv($globals.Compiler)._new();
- [$recv(compiler)._install_forClass_protocol_([$recv([$recv([$recv(aString).__comma(": anObject ^ ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0]).__comma(aString)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma(" := anObject")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0],aClass,"session")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["install:forClass:protocol:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $recv(compiler)._install_forClass_protocol_([$recv($recv(aString).__comma(" ^ ")).__comma(aString)
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=4
- //>>excludeEnd("ctx");
- ][0],aClass,"session");
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"encapsulateVariable:withValue:in:",{aString:aString,anObject:anObject,aClass:aClass,compiler:compiler})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "eval:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["buffer"],
- source: "eval: buffer\x0a\x09^ self eval: buffer on: DoIt new.",
- referencedClasses: ["DoIt"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["eval:on:", "new"]
- }, function ($methodClass){ return function (buffer){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $self._eval_on_(buffer,$recv($globals.DoIt)._new());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"eval:",{buffer:buffer})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "eval:on:",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["buffer", "anObject"],
- source: "eval: buffer on: anObject\x0a\x09| result |\x0a\x09buffer ifNotEmpty: [\x0a\x09\x09[result := Compiler new evaluateExpression: buffer on: anObject]\x0a\x09\x09\x09tryIfTrue: [ :e | (Smalltalk isError: e) not or: [ e context isNil ] ]\x0a\x09\x09\x09catch: [ :e | process stdout write: e jsStack ]].\x0a\x09^ result",
- referencedClasses: ["Compiler", "Smalltalk"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotEmpty:", "tryIfTrue:catch:", "evaluateExpression:on:", "new", "or:", "not", "isError:", "isNil", "context", "write:", "stdout", "jsStack"]
- }, function ($methodClass){ return function (buffer,anObject){
- var self=this,$self=this;
- var result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv(buffer)._ifNotEmpty_((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- result=$recv($recv($globals.Compiler)._new())._evaluateExpression_on_(buffer,anObject);
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({},$ctx2,2)});
- //>>excludeEnd("ctx");
- }))._tryIfTrue_catch_((function(e){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- if($core.assert($recv($recv($globals.Smalltalk)._isError_(e))._not())){
- return true;
- } else {
- return $recv($recv(e)._context())._isNil();
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({e:e},$ctx2,3)});
- //>>excludeEnd("ctx");
- }),(function(e){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx3) {
- //>>excludeEnd("ctx");
- return $recv($recv(process)._stdout())._write_($recv(e)._jsStack());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx3) {$ctx3.fillBlock({e:e},$ctx2,5)});
- //>>excludeEnd("ctx");
- }));
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return result;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"eval:on:",{buffer:buffer,anObject:anObject,result:result})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "executeCommand:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- 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",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["keysAndValuesDo:", "commands", "ifTrue:", "includes:", "value"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $early={};
- try {
- $recv($self._commands())._keysAndValuesDo_((function(names,cmd){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if($core.assert($recv(names)._includes_(aString))){
- $recv(cmd)._value();
- throw $early=[true];
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({names:names,cmd:cmd},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return false;
- }
- catch(e) {if(e===$early)return e[0]; throw e}
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"executeCommand:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "initialize",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "initialize\x0a\x09super initialize.\x0a\x09session := DoIt new.\x0a\x09readline := require value: 'readline'.\x0a\x09util := require value: 'util'.\x0a\x09self setupCommands",
- referencedClasses: ["DoIt"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["initialize", "new", "value:", "setupCommands"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- [(
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- $ctx1.supercall = true,
- //>>excludeEnd("ctx");
- ($methodClass.superclass||$boot.nilAsClass).fn.prototype._initialize.call($self))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.supercall = false
- //>>excludeEnd("ctx");
- ][0];
- $self.session=$recv($globals.DoIt)._new();
- $self.readline=[$recv(require)._value_("readline")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value:"]=1
- //>>excludeEnd("ctx");
- ][0];
- $self.util=$recv(require)._value_("util");
- $self._setupCommands();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"initialize",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "instanceVariableNamesFor:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- 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]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:ifNil:", "superclass", "copyWithAll:", "instanceVariableNames", "instanceVariableNamesFor:"]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[$recv(aClass)._superclass()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["superclass"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- return $recv(aClass)._instanceVariableNames();
- } else {
- return $recv([$recv(aClass)._instanceVariableNames()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["instanceVariableNames"]=1
- //>>excludeEnd("ctx");
- ][0])._copyWithAll_($self._instanceVariableNamesFor_($recv(aClass)._superclass()));
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"instanceVariableNamesFor:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "isIdentifier:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "isIdentifier: aString\x0a\x09^ aString match: '^[a-z_]\x5cw*$' asRegexp",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["match:", "asRegexp"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv(aString)._match_("^[a-z_]\x5cw*$"._asRegexp());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isIdentifier:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "isVariableDefined:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString"],
- source: "isVariableDefined: aString\x0a\x09^ (self instanceVariableNamesFor: session class) includes: aString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["includes:", "instanceVariableNamesFor:", "class"]
- }, function ($methodClass){ return function (aString){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($self._instanceVariableNamesFor_($recv($self.session)._class()))._includes_(aString);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"isVariableDefined:",{aString:aString})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "nextResultName",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "nextResultName\x0a\x09resultCount := resultCount\x0a \x09ifNotNil: [resultCount + 1]\x0a \x09ifNil: [1].\x0a ^ 'res', resultCount asString",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:ifNil:", "+", ",", "asString"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$self.resultCount;
- if($1 == null || $1.a$nil){
- $self.resultCount=(1);
- } else {
- $self.resultCount=$recv($self.resultCount).__plus((1));
- }
- return "res".__comma($recv($self.resultCount)._asString());
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"nextResultName",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "onKeyPress:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["key"],
- source: "onKeyPress: key\x0a\x09(key ctrl and: [key name = 'l'])\x0a\x09\x09ifTrue: [self clearScreen]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifTrue:", "and:", "ctrl", "=", "name", "clearScreen"]
- }, function ($methodClass){ return function (key){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- if($core.assert($recv(key)._ctrl())){
- $1=$recv($recv(key)._name()).__eq("l");
- } else {
- $1=false;
- }
- if($core.assert($1)){
- $self._clearScreen();
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"onKeyPress:",{key:key})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "parseAssignment:do:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aString", "aBlock"],
- 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 ]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["collect:", "tokenize:", "trimBoth", "ifTrue:ifFalse:", "and:", "=", "size", "isIdentifier:", "first", "value:value:", "last"]
- }, function ($methodClass){ return function (aString,aBlock){
- var self=this,$self=this;
- var assignment;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- assignment=$recv($recv(aString)._tokenize_(":="))._collect_((function(s){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(s)._trimBoth();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({s:s},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- if($core.assert($recv($recv(assignment)._size()).__eq((2)))){
- $1=$self._isIdentifier_([$recv(assignment)._first()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["first"]=1
- //>>excludeEnd("ctx");
- ][0]);
- } else {
- $1=false;
- }
- if($core.assert($1)){
- return [$recv(aBlock)._value_value_($recv(assignment)._first(),$recv(assignment)._last())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["value:value:"]=1
- //>>excludeEnd("ctx");
- ][0];
- } else {
- return $recv(aBlock)._value_value_(nil,nil);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"parseAssignment:do:",{aString:aString,aBlock:aBlock,assignment:assignment})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "presentResultNamed:withValue:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["varName", "value"],
- source: "presentResultNamed: varName withValue: value\x0a\x09Transcript show: varName, ': ', value class name, ' = ', value asString; cr.\x0a\x09interface prompt",
- referencedClasses: ["Transcript"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["show:", ",", "name", "class", "asString", "cr", "prompt"]
- }, function ($methodClass){ return function (varName,value){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$globals.Transcript;
- $recv($1)._show_([$recv([$recv([$recv($recv(varName).__comma(": ")).__comma($recv($recv(value)._class())._name())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=3
- //>>excludeEnd("ctx");
- ][0]).__comma(" = ")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=2
- //>>excludeEnd("ctx");
- ][0]).__comma($recv(value)._asString())
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx[","]=1
- //>>excludeEnd("ctx");
- ][0]);
- $recv($1)._cr();
- $recv($self.interface)._prompt();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"presentResultNamed:withValue:",{varName:varName,value:value})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "printWelcome",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "printWelcome\x0a\x09Transcript show: 'Type :q to exit.'; cr.",
- referencedClasses: ["Transcript"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["show:", "cr"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=$globals.Transcript;
- $recv($1)._show_("Type :q to exit.");
- $recv($1)._cr();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"printWelcome",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "processLine:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["buffer"],
- 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]]",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["presentResultNamed:withValue:", "ifFalse:", "executeCommand:", "ifTrue:ifFalse:", "isVariableDefined:", "value:value:", "perform:", "assignNewVariable:do:"]
- }, function ($methodClass){ return function (buffer){
- var self=this,$self=this;
- var show;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- show=(function(varName,value){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $self._presentResultNamed_withValue_(varName,value);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({varName:varName,value:value},$ctx1,1)});
- //>>excludeEnd("ctx");
- });
- if(!$core.assert($self._executeCommand_(buffer))){
- if($core.assert($self._isVariableDefined_(buffer))){
- $recv(show)._value_value_(buffer,$recv($self.session)._perform_(buffer));
- } else {
- $self._assignNewVariable_do_(buffer,show);
- }
- }
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"processLine:",{buffer:buffer,show:show})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "prompt",
- protocol: "accessing",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "prompt\x0a\x09^ 'amber >> '",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: []
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- return "amber >> ";
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "setPreviousVariablesFor:from:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["newObject", "oldObject"],
- source: "setPreviousVariablesFor: newObject from: oldObject\x0a\x09(self instanceVariableNamesFor: oldObject class) do: [:each |\x0a\x09\x09newObject perform: each, ':' withArguments: {oldObject perform: each}].",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["do:", "instanceVariableNamesFor:", "class", "perform:withArguments:", ",", "perform:"]
- }, function ($methodClass){ return function (newObject,oldObject){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._instanceVariableNamesFor_($recv(oldObject)._class()))._do_((function(each){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(newObject)._perform_withArguments_($recv(each).__comma(":"),[$recv(oldObject)._perform_(each)]);
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({each:each},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setPreviousVariablesFor:from:",{newObject:newObject,oldObject:oldObject})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "setPrompt",
- protocol: "actions",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "setPrompt\x0a\x09interface setPrompt: self prompt",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["setPrompt:", "prompt"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self.interface)._setPrompt_($self._prompt());
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setPrompt",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "setupCommands",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "setupCommands\x0a\x09commands := Dictionary from: {\x0a\x09\x09{':q'} -> [process exit].\x0a\x09\x09{''} -> [interface prompt]}",
- referencedClasses: ["Dictionary"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["from:", "->", "exit", "prompt"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $self.commands=$recv($globals.Dictionary)._from_([[$recv([":q"]).__minus_gt((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv(process)._exit();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,1)});
- //>>excludeEnd("ctx");
- }))
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["->"]=1
- //>>excludeEnd("ctx");
- ][0],$recv([""]).__minus_gt((function(){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- return $recv($self.interface)._prompt();
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({},$ctx1,2)});
- //>>excludeEnd("ctx");
- }))]);
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setupCommands",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "setupHotkeys",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "setupHotkeys\x0a\x09process stdin on: 'keypress' do: [:s :key | key ifNotNil: [self onKeyPress: key]].",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["on:do:", "stdin", "ifNotNil:", "onKeyPress:"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($recv(process)._stdin())._on_do_("keypress",(function(s,key){
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx2) {
- //>>excludeEnd("ctx");
- if(key == null || key.a$nil){
- return key;
- } else {
- return $self._onKeyPress_(key);
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx2) {$ctx2.fillBlock({s:s,key:key},$ctx1,1)});
- //>>excludeEnd("ctx");
- }));
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"setupHotkeys",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "subclass:withVariable:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass", "varName"],
- source: "subclass: aClass withVariable: varName\x0a\x09\x22Create subclass with new variable.\x22\x0a\x09^ ClassBuilder new\x0a\x09\x09addSubclassOf: aClass\x0a\x09\x09named: (self subclassNameFor: aClass) asSymbol\x0a\x09\x09slots: {varName}\x0a\x09\x09package: 'Compiler-Core'",
- referencedClasses: ["ClassBuilder"],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["addSubclassOf:named:slots:package:", "new", "asSymbol", "subclassNameFor:"]
- }, function ($methodClass){ return function (aClass,varName){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- return $recv($recv($globals.ClassBuilder)._new())._addSubclassOf_named_slots_package_(aClass,$recv($self._subclassNameFor_(aClass))._asSymbol(),[varName],"Compiler-Core");
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclass:withVariable:",{aClass:aClass,varName:varName})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "subclassNameFor:",
- protocol: "private",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: ["aClass"],
- 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'].",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["ifNotNil:ifNil:", "matchesOf:", "name", "+", "asNumber", "first", "replaceRegexp:with:", "asRegexp", "asString", ","]
- }, function ($methodClass){ return function (aClass){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- var $1;
- $1=[$recv([$recv(aClass)._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["name"]=1
- //>>excludeEnd("ctx");
- ][0])._matchesOf_("\x5cd+$")
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["matchesOf:"]=1
- //>>excludeEnd("ctx");
- ][0];
- if($1 == null || $1.a$nil){
- return $recv($recv(aClass)._name()).__comma("2");
- } else {
- var counter;
- counter=$recv($recv($recv($recv([$recv(aClass)._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["name"]=2
- //>>excludeEnd("ctx");
- ][0])._matchesOf_("\x5cd+$"))._first())._asNumber()).__plus((1));
- return $recv([$recv(aClass)._name()
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- ,$ctx1.sendIdx["name"]=3
- //>>excludeEnd("ctx");
- ][0])._replaceRegexp_with_("\x5cd+$"._asRegexp(),$recv(counter)._asString());
- }
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"subclassNameFor:",{aClass:aClass})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl);
- $core.addMethod(
- $core.method({
- selector: "main",
- protocol: "initialization",
- //>>excludeStart("ide", pragmas.excludeIdeData);
- args: [],
- source: "main\x0a\x09self new createInterface",
- referencedClasses: [],
- //>>excludeEnd("ide");
- pragmas: [],
- messageSends: ["createInterface", "new"]
- }, function ($methodClass){ return function (){
- var self=this,$self=this;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- return $core.withContext(function($ctx1) {
- //>>excludeEnd("ctx");
- $recv($self._new())._createInterface();
- return self;
- //>>excludeStart("ctx", pragmas.excludeDebugContexts);
- }, function($ctx1) {$ctx1.fill(self,"main",{})});
- //>>excludeEnd("ctx");
- }; }),
- $globals.Repl.a$cls);
- });
- (function () {
- define('__app__',["amber/devel", "amber/core/Platform-Node", "amber_cli/AmberCli"], function (amber) {
- amber.initialize().then(function () {
- amber.globals.AmberCli._main();
- });
- });
- }());
- (function () {
- define('app',["require", "amber/es6-promise"], function (require, promiseLib) {
- promiseLib.polyfill();
- return new Promise(function (resolve, reject) {
- require(["__app__"], resolve, reject);
- });
- });
- }());
- require(["app"]);
- });
- }((function amdefine(module, requireFn) {
- 'use strict';
- var defineCache = {},
- loaderCache = {},
- alreadyCalled = false,
- path = require('path'),
- makeRequire, stringRequire;
- /**
- * Trims the . and .. from an array of path segments.
- * It will keep a leading path segment if a .. will become
- * the first path segment, to help with module name lookups,
- * which act like paths, but can be remapped. But the end result,
- * all paths that use this function should look normalized.
- * NOTE: this method MODIFIES the input array.
- * @param {Array} ary the array of path segments.
- */
- function trimDots(ary) {
- var i, part;
- for (i = 0; ary[i]; i+= 1) {
- part = ary[i];
- if (part === '.') {
- ary.splice(i, 1);
- i -= 1;
- } else if (part === '..') {
- if (i === 1 && (ary[2] === '..' || ary[0] === '..')) {
- //End of the line. Keep at least one non-dot
- //path segment at the front so it can be mapped
- //correctly to disk. Otherwise, there is likely
- //no path mapping for a path starting with '..'.
- //This can still fail, but catches the most reasonable
- //uses of ..
- break;
- } else if (i > 0) {
- ary.splice(i - 1, 2);
- i -= 2;
- }
- }
- }
- }
- function normalize(name, baseName) {
- var baseParts;
- //Adjust any relative paths.
- if (name && name.charAt(0) === '.') {
- //If have a base name, try to normalize against it,
- //otherwise, assume it is a top-level require that will
- //be relative to baseUrl in the end.
- if (baseName) {
- baseParts = baseName.split('/');
- baseParts = baseParts.slice(0, baseParts.length - 1);
- baseParts = baseParts.concat(name.split('/'));
- trimDots(baseParts);
- name = baseParts.join('/');
- }
- }
- return name;
- }
- /**
- * Create the normalize() function passed to a loader plugin's
- * normalize method.
- */
- function makeNormalize(relName) {
- return function (name) {
- return normalize(name, relName);
- };
- }
- function makeLoad(id) {
- function load(value) {
- loaderCache[id] = value;
- }
- load.fromText = function (id, text) {
- //This one is difficult because the text can/probably uses
- //define, and any relative paths and requires should be relative
- //to that id was it would be found on disk. But this would require
- //bootstrapping a module/require fairly deeply from node core.
- //Not sure how best to go about that yet.
- throw new Error('amdefine does not implement load.fromText');
- };
- return load;
- }
- makeRequire = function (systemRequire, exports, module, relId) {
- function requireInContext(depName) {
- return stringRequire(systemRequire, exports, module, depName, relId);
- }
- function amdRequire(deps, callback) {
- if (typeof deps === 'string') {
- //Synchronous, single module require('')
- return requireInContext(deps);
- } else {
- //Array of dependencies with a callback.
- if (callback) {
- //Wait for next tick to call back the require call.
- process.nextTick(function () {
- //Convert the dependencies to modules.
- callback.apply(null, deps.map(requireInContext));
- });
- } else {
- //Require the dependencies' moduies.
- deps.forEach(requireInContext);
- }
- }
- }
- amdRequire.toUrl = function (filePath) {
- if (filePath.indexOf('.') === 0) {
- return normalize(filePath, path.dirname(module.filename));
- } else {
- return filePath;
- }
- };
- return amdRequire;
- };
- //Favor explicit value, passed in if the module wants to support Node 0.4.
- requireFn = requireFn || function req() {
- return module.require.apply(module, arguments);
- };
- function runFactory(id, deps, factory) {
- var r, e, m, result;
- if (id) {
- e = loaderCache[id] = {};
- m = {
- id: id,
- uri: __filename,
- exports: e
- };
- r = makeRequire(requireFn, e, m, id);
- } else {
- //Only support one define call per file
- if (alreadyCalled) {
- throw new Error('amdefine with no module ID cannot be called more than once per file.');
- }
- alreadyCalled = true;
- //Use the real variables from node
- //Use module.exports for exports, since
- //the exports in here is amdefine exports.
- e = module.exports;
- m = module;
- r = makeRequire(requireFn, e, m, module.id);
- }
- //If there are dependencies, they are strings, so need
- //to convert them to dependency values.
- if (deps) {
- deps = deps.map(function (depName) {
- return r(depName);
- });
- }
- //Call the factory with the right dependencies.
- if (typeof factory === 'function') {
- result = factory.apply(m.exports, deps);
- } else {
- result = factory;
- }
- if (result !== undefined) {
- m.exports = result;
- if (id) {
- loaderCache[id] = m.exports;
- }
- }
- }
- stringRequire = function (systemRequire, exports, module, id, relId) {
- //Split the ID by a ! so that
- var index = id.indexOf('!'),
- originalId = id,
- prefix, plugin;
- if (index === -1) {
- id = normalize(id, relId);
- //Straight module lookup. If it is one of the special dependencies,
- //deal with it, otherwise, delegate to node.
- if (id === 'require') {
- return makeRequire(systemRequire, exports, module, relId);
- } else if (id === 'exports') {
- return exports;
- } else if (id === 'module') {
- return module;
- } else if (loaderCache.hasOwnProperty(id)) {
- return loaderCache[id];
- } else if (defineCache[id]) {
- runFactory.apply(null, defineCache[id]);
- return loaderCache[id];
- } else {
- if(systemRequire) {
- return systemRequire(originalId);
- } else {
- throw new Error('No module with ID: ' + id);
- }
- }
- } else {
- //There is a plugin in play.
- prefix = id.substring(0, index);
- id = id.substring(index + 1, id.length);
- plugin = stringRequire(systemRequire, exports, module, prefix, relId);
- if (plugin.normalize) {
- id = plugin.normalize(id, makeNormalize(relId));
- } else {
- //Normalize the ID normally.
- id = normalize(id, relId);
- }
- if (loaderCache[id]) {
- return loaderCache[id];
- } else {
- plugin.load(id, makeRequire(systemRequire, exports, module, relId), makeLoad(id), {});
- return loaderCache[id];
- }
- }
- };
- //Create a define function specific to the module asking for amdefine.
- function define(id, deps, factory) {
- if (Array.isArray(id)) {
- factory = deps;
- deps = id;
- id = undefined;
- } else if (typeof id !== 'string') {
- factory = id;
- id = deps = undefined;
- }
- if (deps && !Array.isArray(deps)) {
- factory = deps;
- deps = undefined;
- }
- if (!deps) {
- deps = ['require', 'exports', 'module'];
- }
- //Set up properties for this module. If an ID, then use
- //internal cache. If no ID, then use the external variables
- //for this node module.
- if (id) {
- //Put the module in deep freeze until there is a
- //require call for it.
- defineCache[id] = [id, deps, factory];
- } else {
- runFactory(id, deps, factory);
- }
- }
- //define.require, which has access to all the values in the
- //cache. Useful for AMD modules that all have IDs in the file,
- //but need to finally export a value to node based on one of those
- //IDs.
- define.require = function (id) {
- if (loaderCache[id]) {
- return loaderCache[id];
- }
- if (defineCache[id]) {
- runFactory.apply(null, defineCache[id]);
- return loaderCache[id];
- }
- };
- define.amd = {};
- return define;
- }(module)), require));
|