test.js 666 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238
  1. /*
  2. Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
  3. Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
  4. Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>
  5. Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>
  6. Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>
  7. Copyright (C) 2011 Yusuke Suzuki <utatane.tea@gmail.com>
  8. Copyright (C) 2011 Arpad Borsos <arpad.borsos@googlemail.com>
  9. Redistribution and use in source and binary forms, with or without
  10. modification, are permitted provided that the following conditions are met:
  11. * Redistributions of source code must retain the above copyright
  12. notice, this list of conditions and the following disclaimer.
  13. * Redistributions in binary form must reproduce the above copyright
  14. notice, this list of conditions and the following disclaimer in the
  15. documentation and/or other materials provided with the distribution.
  16. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  17. AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  18. IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  19. ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
  20. DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  21. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  22. LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  23. ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  24. (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  25. THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  26. */
  27. var testFixture = {
  28. 'Primary Expression': {
  29. 'this\n': {
  30. type: 'Program',
  31. body: [{
  32. type: 'ExpressionStatement',
  33. expression: {
  34. type: 'ThisExpression',
  35. range: [0, 4],
  36. loc: {
  37. start: { line: 1, column: 0 },
  38. end: { line: 1, column: 4 }
  39. }
  40. },
  41. range: [0, 5],
  42. loc: {
  43. start: { line: 1, column: 0 },
  44. end: { line: 2, column: 0 }
  45. }
  46. }],
  47. range: [0, 5],
  48. loc: {
  49. start: { line: 1, column: 0 },
  50. end: { line: 2, column: 0 }
  51. },
  52. tokens: [{
  53. type: 'Keyword',
  54. value: 'this',
  55. range: [0, 4],
  56. loc: {
  57. start: { line: 1, column: 0 },
  58. end: { line: 1, column: 4 }
  59. }
  60. }]
  61. },
  62. 'null\n': {
  63. type: 'Program',
  64. body: [{
  65. type: 'ExpressionStatement',
  66. expression: {
  67. type: 'Literal',
  68. value: null,
  69. raw: 'null',
  70. range: [0, 4],
  71. loc: {
  72. start: { line: 1, column: 0 },
  73. end: { line: 1, column: 4 }
  74. }
  75. },
  76. range: [0, 5],
  77. loc: {
  78. start: { line: 1, column: 0 },
  79. end: { line: 2, column: 0 }
  80. }
  81. }],
  82. range: [0, 5],
  83. loc: {
  84. start: { line: 1, column: 0 },
  85. end: { line: 2, column: 0 }
  86. },
  87. tokens: [{
  88. type: 'Null',
  89. value: 'null',
  90. range: [0, 4],
  91. loc: {
  92. start: { line: 1, column: 0 },
  93. end: { line: 1, column: 4 }
  94. }
  95. }]
  96. },
  97. '\n 42\n\n': {
  98. type: 'Program',
  99. body: [{
  100. type: 'ExpressionStatement',
  101. expression: {
  102. type: 'Literal',
  103. value: 42,
  104. raw: '42',
  105. range: [5, 7],
  106. loc: {
  107. start: { line: 2, column: 4 },
  108. end: { line: 2, column: 6 }
  109. }
  110. },
  111. range: [5, 9],
  112. loc: {
  113. start: { line: 2, column: 4 },
  114. end: { line: 4, column: 0 }
  115. }
  116. }],
  117. range: [5, 9],
  118. loc: {
  119. start: { line: 2, column: 4 },
  120. end: { line: 4, column: 0 }
  121. },
  122. tokens: [{
  123. type: 'Numeric',
  124. value: '42',
  125. range: [5, 7],
  126. loc: {
  127. start: { line: 2, column: 4 },
  128. end: { line: 2, column: 6 }
  129. }
  130. }]
  131. },
  132. '(1 + 2 ) * 3': {
  133. type: 'ExpressionStatement',
  134. expression: {
  135. type: 'BinaryExpression',
  136. operator: '*',
  137. left: {
  138. type: 'BinaryExpression',
  139. operator: '+',
  140. left: {
  141. type: 'Literal',
  142. value: 1,
  143. raw: '1',
  144. range: [1, 2],
  145. loc: {
  146. start: { line: 1, column: 1 },
  147. end: { line: 1, column: 2 }
  148. }
  149. },
  150. right: {
  151. type: 'Literal',
  152. value: 2,
  153. raw: '2',
  154. range: [5, 6],
  155. loc: {
  156. start: { line: 1, column: 5 },
  157. end: { line: 1, column: 6 }
  158. }
  159. },
  160. range: [1, 6],
  161. loc: {
  162. start: { line: 1, column: 1 },
  163. end: { line: 1, column: 6 }
  164. }
  165. },
  166. right: {
  167. type: 'Literal',
  168. value: 3,
  169. raw: '3',
  170. range: [11, 12],
  171. loc: {
  172. start: { line: 1, column: 11 },
  173. end: { line: 1, column: 12 }
  174. }
  175. },
  176. range: [0, 12],
  177. loc: {
  178. start: { line: 1, column: 0 },
  179. end: { line: 1, column: 12 }
  180. }
  181. },
  182. range: [0, 12],
  183. loc: {
  184. start: { line: 1, column: 0 },
  185. end: { line: 1, column: 12 }
  186. }
  187. }
  188. },
  189. 'Grouping Operator': {
  190. '(1) + (2 ) + 3': {
  191. type: 'ExpressionStatement',
  192. expression: {
  193. type: 'BinaryExpression',
  194. operator: '+',
  195. left: {
  196. type: 'BinaryExpression',
  197. operator: '+',
  198. left: {
  199. type: 'Literal',
  200. value: 1,
  201. raw: '1',
  202. range: [1, 2],
  203. loc: {
  204. start: { line: 1, column: 1 },
  205. end: { line: 1, column: 2 }
  206. }
  207. },
  208. right: {
  209. type: 'Literal',
  210. value: 2,
  211. raw: '2',
  212. range: [7, 8],
  213. loc: {
  214. start: { line: 1, column: 7 },
  215. end: { line: 1, column: 8 }
  216. }
  217. },
  218. range: [0, 11],
  219. loc: {
  220. start: { line: 1, column: 0 },
  221. end: { line: 1, column: 11 }
  222. }
  223. },
  224. right: {
  225. type: 'Literal',
  226. value: 3,
  227. raw: '3',
  228. range: [14, 15],
  229. loc: {
  230. start: { line: 1, column: 14 },
  231. end: { line: 1, column: 15 }
  232. }
  233. },
  234. range: [0, 15],
  235. loc: {
  236. start: { line: 1, column: 0 },
  237. end: { line: 1, column: 15 }
  238. }
  239. },
  240. range: [0, 15],
  241. loc: {
  242. start: { line: 1, column: 0 },
  243. end: { line: 1, column: 15 }
  244. }
  245. },
  246. '4 + 5 << (6)': {
  247. type: 'ExpressionStatement',
  248. expression: {
  249. type: 'BinaryExpression',
  250. operator: '<<',
  251. left: {
  252. type: 'BinaryExpression',
  253. operator: '+',
  254. left: {
  255. type: 'Literal',
  256. value: 4,
  257. raw: '4',
  258. range: [0, 1],
  259. loc: {
  260. start: { line: 1, column: 0 },
  261. end: { line: 1, column: 1 }
  262. }
  263. },
  264. right: {
  265. type: 'Literal',
  266. value: 5,
  267. raw: '5',
  268. range: [4, 5],
  269. loc: {
  270. start: { line: 1, column: 4 },
  271. end: { line: 1, column: 5 }
  272. }
  273. },
  274. range: [0, 5],
  275. loc: {
  276. start: { line: 1, column: 0 },
  277. end: { line: 1, column: 5 }
  278. }
  279. },
  280. right: {
  281. type: 'Literal',
  282. value: 6,
  283. raw: '6',
  284. range: [10, 11],
  285. loc: {
  286. start: { line: 1, column: 10 },
  287. end: { line: 1, column: 11 }
  288. }
  289. },
  290. range: [0, 12],
  291. loc: {
  292. start: { line: 1, column: 0 },
  293. end: { line: 1, column: 12 }
  294. }
  295. },
  296. range: [0, 12],
  297. loc: {
  298. start: { line: 1, column: 0 },
  299. end: { line: 1, column: 12 }
  300. }
  301. }
  302. },
  303. 'Array Initializer': {
  304. 'x = []': {
  305. type: 'Program',
  306. body: [{
  307. type: 'ExpressionStatement',
  308. expression: {
  309. type: 'AssignmentExpression',
  310. operator: '=',
  311. left: {
  312. type: 'Identifier',
  313. name: 'x',
  314. range: [0, 1],
  315. loc: {
  316. start: { line: 1, column: 0 },
  317. end: { line: 1, column: 1 }
  318. }
  319. },
  320. right: {
  321. type: 'ArrayExpression',
  322. elements: [],
  323. range: [4, 6],
  324. loc: {
  325. start: { line: 1, column: 4 },
  326. end: { line: 1, column: 6 }
  327. }
  328. },
  329. range: [0, 6],
  330. loc: {
  331. start: { line: 1, column: 0 },
  332. end: { line: 1, column: 6 }
  333. }
  334. },
  335. range: [0, 6],
  336. loc: {
  337. start: { line: 1, column: 0 },
  338. end: { line: 1, column: 6 }
  339. }
  340. }],
  341. range: [0, 6],
  342. loc: {
  343. start: { line: 1, column: 0 },
  344. end: { line: 1, column: 6 }
  345. },
  346. tokens: [{
  347. type: 'Identifier',
  348. value: 'x',
  349. range: [0, 1],
  350. loc: {
  351. start: { line: 1, column: 0 },
  352. end: { line: 1, column: 1 }
  353. }
  354. }, {
  355. type: 'Punctuator',
  356. value: '=',
  357. range: [2, 3],
  358. loc: {
  359. start: { line: 1, column: 2 },
  360. end: { line: 1, column: 3 }
  361. }
  362. }, {
  363. type: 'Punctuator',
  364. value: '[',
  365. range: [4, 5],
  366. loc: {
  367. start: { line: 1, column: 4 },
  368. end: { line: 1, column: 5 }
  369. }
  370. }, {
  371. type: 'Punctuator',
  372. value: ']',
  373. range: [5, 6],
  374. loc: {
  375. start: { line: 1, column: 5 },
  376. end: { line: 1, column: 6 }
  377. }
  378. }]
  379. },
  380. 'x = [ ]': {
  381. type: 'ExpressionStatement',
  382. expression: {
  383. type: 'AssignmentExpression',
  384. operator: '=',
  385. left: {
  386. type: 'Identifier',
  387. name: 'x',
  388. range: [0, 1],
  389. loc: {
  390. start: { line: 1, column: 0 },
  391. end: { line: 1, column: 1 }
  392. }
  393. },
  394. right: {
  395. type: 'ArrayExpression',
  396. elements: [],
  397. range: [4, 7],
  398. loc: {
  399. start: { line: 1, column: 4 },
  400. end: { line: 1, column: 7 }
  401. }
  402. },
  403. range: [0, 7],
  404. loc: {
  405. start: { line: 1, column: 0 },
  406. end: { line: 1, column: 7 }
  407. }
  408. },
  409. range: [0, 7],
  410. loc: {
  411. start: { line: 1, column: 0 },
  412. end: { line: 1, column: 7 }
  413. }
  414. },
  415. 'x = [ 42 ]': {
  416. type: 'ExpressionStatement',
  417. expression: {
  418. type: 'AssignmentExpression',
  419. operator: '=',
  420. left: {
  421. type: 'Identifier',
  422. name: 'x',
  423. range: [0, 1],
  424. loc: {
  425. start: { line: 1, column: 0 },
  426. end: { line: 1, column: 1 }
  427. }
  428. },
  429. right: {
  430. type: 'ArrayExpression',
  431. elements: [{
  432. type: 'Literal',
  433. value: 42,
  434. raw: '42',
  435. range: [6, 8],
  436. loc: {
  437. start: { line: 1, column: 6 },
  438. end: { line: 1, column: 8 }
  439. }
  440. }],
  441. range: [4, 10],
  442. loc: {
  443. start: { line: 1, column: 4 },
  444. end: { line: 1, column: 10 }
  445. }
  446. },
  447. range: [0, 10],
  448. loc: {
  449. start: { line: 1, column: 0 },
  450. end: { line: 1, column: 10 }
  451. }
  452. },
  453. range: [0, 10],
  454. loc: {
  455. start: { line: 1, column: 0 },
  456. end: { line: 1, column: 10 }
  457. }
  458. },
  459. 'x = [ 42, ]': {
  460. type: 'ExpressionStatement',
  461. expression: {
  462. type: 'AssignmentExpression',
  463. operator: '=',
  464. left: {
  465. type: 'Identifier',
  466. name: 'x',
  467. range: [0, 1],
  468. loc: {
  469. start: { line: 1, column: 0 },
  470. end: { line: 1, column: 1 }
  471. }
  472. },
  473. right: {
  474. type: 'ArrayExpression',
  475. elements: [{
  476. type: 'Literal',
  477. value: 42,
  478. raw: '42',
  479. range: [6, 8],
  480. loc: {
  481. start: { line: 1, column: 6 },
  482. end: { line: 1, column: 8 }
  483. }
  484. }],
  485. range: [4, 11],
  486. loc: {
  487. start: { line: 1, column: 4 },
  488. end: { line: 1, column: 11 }
  489. }
  490. },
  491. range: [0, 11],
  492. loc: {
  493. start: { line: 1, column: 0 },
  494. end: { line: 1, column: 11 }
  495. }
  496. },
  497. range: [0, 11],
  498. loc: {
  499. start: { line: 1, column: 0 },
  500. end: { line: 1, column: 11 }
  501. }
  502. },
  503. 'x = [ ,, 42 ]': {
  504. type: 'ExpressionStatement',
  505. expression: {
  506. type: 'AssignmentExpression',
  507. operator: '=',
  508. left: {
  509. type: 'Identifier',
  510. name: 'x',
  511. range: [0, 1],
  512. loc: {
  513. start: { line: 1, column: 0 },
  514. end: { line: 1, column: 1 }
  515. }
  516. },
  517. right: {
  518. type: 'ArrayExpression',
  519. elements: [
  520. null,
  521. null,
  522. {
  523. type: 'Literal',
  524. value: 42,
  525. raw: '42',
  526. range: [9, 11],
  527. loc: {
  528. start: { line: 1, column: 9 },
  529. end: { line: 1, column: 11 }
  530. }
  531. }],
  532. range: [4, 13],
  533. loc: {
  534. start: { line: 1, column: 4 },
  535. end: { line: 1, column: 13 }
  536. }
  537. },
  538. range: [0, 13],
  539. loc: {
  540. start: { line: 1, column: 0 },
  541. end: { line: 1, column: 13 }
  542. }
  543. },
  544. range: [0, 13],
  545. loc: {
  546. start: { line: 1, column: 0 },
  547. end: { line: 1, column: 13 }
  548. }
  549. },
  550. 'x = [ 1, 2, 3, ]': {
  551. type: 'ExpressionStatement',
  552. expression: {
  553. type: 'AssignmentExpression',
  554. operator: '=',
  555. left: {
  556. type: 'Identifier',
  557. name: 'x',
  558. range: [0, 1],
  559. loc: {
  560. start: { line: 1, column: 0 },
  561. end: { line: 1, column: 1 }
  562. }
  563. },
  564. right: {
  565. type: 'ArrayExpression',
  566. elements: [{
  567. type: 'Literal',
  568. value: 1,
  569. raw: '1',
  570. range: [6, 7],
  571. loc: {
  572. start: { line: 1, column: 6 },
  573. end: { line: 1, column: 7 }
  574. }
  575. }, {
  576. type: 'Literal',
  577. value: 2,
  578. raw: '2',
  579. range: [9, 10],
  580. loc: {
  581. start: { line: 1, column: 9 },
  582. end: { line: 1, column: 10 }
  583. }
  584. }, {
  585. type: 'Literal',
  586. value: 3,
  587. raw: '3',
  588. range: [12, 13],
  589. loc: {
  590. start: { line: 1, column: 12 },
  591. end: { line: 1, column: 13 }
  592. }
  593. }],
  594. range: [4, 16],
  595. loc: {
  596. start: { line: 1, column: 4 },
  597. end: { line: 1, column: 16 }
  598. }
  599. },
  600. range: [0, 16],
  601. loc: {
  602. start: { line: 1, column: 0 },
  603. end: { line: 1, column: 16 }
  604. }
  605. },
  606. range: [0, 16],
  607. loc: {
  608. start: { line: 1, column: 0 },
  609. end: { line: 1, column: 16 }
  610. }
  611. },
  612. 'x = [ 1, 2,, 3, ]': {
  613. type: 'ExpressionStatement',
  614. expression: {
  615. type: 'AssignmentExpression',
  616. operator: '=',
  617. left: {
  618. type: 'Identifier',
  619. name: 'x',
  620. range: [0, 1],
  621. loc: {
  622. start: { line: 1, column: 0 },
  623. end: { line: 1, column: 1 }
  624. }
  625. },
  626. right: {
  627. type: 'ArrayExpression',
  628. elements: [{
  629. type: 'Literal',
  630. value: 1,
  631. raw: '1',
  632. range: [6, 7],
  633. loc: {
  634. start: { line: 1, column: 6 },
  635. end: { line: 1, column: 7 }
  636. }
  637. }, {
  638. type: 'Literal',
  639. value: 2,
  640. raw: '2',
  641. range: [9, 10],
  642. loc: {
  643. start: { line: 1, column: 9 },
  644. end: { line: 1, column: 10 }
  645. }
  646. }, null, {
  647. type: 'Literal',
  648. value: 3,
  649. raw: '3',
  650. range: [13, 14],
  651. loc: {
  652. start: { line: 1, column: 13 },
  653. end: { line: 1, column: 14 }
  654. }
  655. }],
  656. range: [4, 17],
  657. loc: {
  658. start: { line: 1, column: 4 },
  659. end: { line: 1, column: 17 }
  660. }
  661. },
  662. range: [0, 17],
  663. loc: {
  664. start: { line: 1, column: 0 },
  665. end: { line: 1, column: 17 }
  666. }
  667. },
  668. range: [0, 17],
  669. loc: {
  670. start: { line: 1, column: 0 },
  671. end: { line: 1, column: 17 }
  672. }
  673. },
  674. '日本語 = []': {
  675. type: 'ExpressionStatement',
  676. expression: {
  677. type: 'AssignmentExpression',
  678. operator: '=',
  679. left: {
  680. type: 'Identifier',
  681. name: '日本語',
  682. range: [0, 3],
  683. loc: {
  684. start: { line: 1, column: 0 },
  685. end: { line: 1, column: 3 }
  686. }
  687. },
  688. right: {
  689. type: 'ArrayExpression',
  690. elements: [],
  691. range: [6, 8],
  692. loc: {
  693. start: { line: 1, column: 6 },
  694. end: { line: 1, column: 8 }
  695. }
  696. },
  697. range: [0, 8],
  698. loc: {
  699. start: { line: 1, column: 0 },
  700. end: { line: 1, column: 8 }
  701. }
  702. },
  703. range: [0, 8],
  704. loc: {
  705. start: { line: 1, column: 0 },
  706. end: { line: 1, column: 8 }
  707. }
  708. },
  709. 'T\u203F = []': {
  710. type: 'ExpressionStatement',
  711. expression: {
  712. type: 'AssignmentExpression',
  713. operator: '=',
  714. left: {
  715. type: 'Identifier',
  716. name: 'T\u203F',
  717. range: [0, 2],
  718. loc: {
  719. start: { line: 1, column: 0 },
  720. end: { line: 1, column: 2 }
  721. }
  722. },
  723. right: {
  724. type: 'ArrayExpression',
  725. elements: [],
  726. range: [5, 7],
  727. loc: {
  728. start: { line: 1, column: 5 },
  729. end: { line: 1, column: 7 }
  730. }
  731. },
  732. range: [0, 7],
  733. loc: {
  734. start: { line: 1, column: 0 },
  735. end: { line: 1, column: 7 }
  736. }
  737. },
  738. range: [0, 7],
  739. loc: {
  740. start: { line: 1, column: 0 },
  741. end: { line: 1, column: 7 }
  742. }
  743. },
  744. 'T\u200C = []': {
  745. type: 'ExpressionStatement',
  746. expression: {
  747. type: 'AssignmentExpression',
  748. operator: '=',
  749. left: {
  750. type: 'Identifier',
  751. name: 'T\u200C',
  752. range: [0, 2],
  753. loc: {
  754. start: { line: 1, column: 0 },
  755. end: { line: 1, column: 2 }
  756. }
  757. },
  758. right: {
  759. type: 'ArrayExpression',
  760. elements: [],
  761. range: [5, 7],
  762. loc: {
  763. start: { line: 1, column: 5 },
  764. end: { line: 1, column: 7 }
  765. }
  766. },
  767. range: [0, 7],
  768. loc: {
  769. start: { line: 1, column: 0 },
  770. end: { line: 1, column: 7 }
  771. }
  772. },
  773. range: [0, 7],
  774. loc: {
  775. start: { line: 1, column: 0 },
  776. end: { line: 1, column: 7 }
  777. }
  778. },
  779. 'T\u200D = []': {
  780. type: 'ExpressionStatement',
  781. expression: {
  782. type: 'AssignmentExpression',
  783. operator: '=',
  784. left: {
  785. type: 'Identifier',
  786. name: 'T\u200D',
  787. range: [0, 2],
  788. loc: {
  789. start: { line: 1, column: 0 },
  790. end: { line: 1, column: 2 }
  791. }
  792. },
  793. right: {
  794. type: 'ArrayExpression',
  795. elements: [],
  796. range: [5, 7],
  797. loc: {
  798. start: { line: 1, column: 5 },
  799. end: { line: 1, column: 7 }
  800. }
  801. },
  802. range: [0, 7],
  803. loc: {
  804. start: { line: 1, column: 0 },
  805. end: { line: 1, column: 7 }
  806. }
  807. },
  808. range: [0, 7],
  809. loc: {
  810. start: { line: 1, column: 0 },
  811. end: { line: 1, column: 7 }
  812. }
  813. },
  814. '\u2163\u2161 = []': {
  815. type: 'ExpressionStatement',
  816. expression: {
  817. type: 'AssignmentExpression',
  818. operator: '=',
  819. left: {
  820. type: 'Identifier',
  821. name: '\u2163\u2161',
  822. range: [0, 2],
  823. loc: {
  824. start: { line: 1, column: 0 },
  825. end: { line: 1, column: 2 }
  826. }
  827. },
  828. right: {
  829. type: 'ArrayExpression',
  830. elements: [],
  831. range: [5, 7],
  832. loc: {
  833. start: { line: 1, column: 5 },
  834. end: { line: 1, column: 7 }
  835. }
  836. },
  837. range: [0, 7],
  838. loc: {
  839. start: { line: 1, column: 0 },
  840. end: { line: 1, column: 7 }
  841. }
  842. },
  843. range: [0, 7],
  844. loc: {
  845. start: { line: 1, column: 0 },
  846. end: { line: 1, column: 7 }
  847. }
  848. },
  849. '\u2163\u2161\u200A=\u2009[]': {
  850. type: 'ExpressionStatement',
  851. expression: {
  852. type: 'AssignmentExpression',
  853. operator: '=',
  854. left: {
  855. type: 'Identifier',
  856. name: '\u2163\u2161',
  857. range: [0, 2],
  858. loc: {
  859. start: { line: 1, column: 0 },
  860. end: { line: 1, column: 2 }
  861. }
  862. },
  863. right: {
  864. type: 'ArrayExpression',
  865. elements: [],
  866. range: [5, 7],
  867. loc: {
  868. start: { line: 1, column: 5 },
  869. end: { line: 1, column: 7 }
  870. }
  871. },
  872. range: [0, 7],
  873. loc: {
  874. start: { line: 1, column: 0 },
  875. end: { line: 1, column: 7 }
  876. }
  877. },
  878. range: [0, 7],
  879. loc: {
  880. start: { line: 1, column: 0 },
  881. end: { line: 1, column: 7 }
  882. }
  883. }
  884. },
  885. 'Object Initializer': {
  886. 'x = {}': {
  887. type: 'ExpressionStatement',
  888. expression: {
  889. type: 'AssignmentExpression',
  890. operator: '=',
  891. left: {
  892. type: 'Identifier',
  893. name: 'x',
  894. range: [0, 1],
  895. loc: {
  896. start: { line: 1, column: 0 },
  897. end: { line: 1, column: 1 }
  898. }
  899. },
  900. right: {
  901. type: 'ObjectExpression',
  902. properties: [],
  903. range: [4, 6],
  904. loc: {
  905. start: { line: 1, column: 4 },
  906. end: { line: 1, column: 6 }
  907. }
  908. },
  909. range: [0, 6],
  910. loc: {
  911. start: { line: 1, column: 0 },
  912. end: { line: 1, column: 6 }
  913. }
  914. },
  915. range: [0, 6],
  916. loc: {
  917. start: { line: 1, column: 0 },
  918. end: { line: 1, column: 6 }
  919. }
  920. },
  921. 'x = { }': {
  922. type: 'ExpressionStatement',
  923. expression: {
  924. type: 'AssignmentExpression',
  925. operator: '=',
  926. left: {
  927. type: 'Identifier',
  928. name: 'x',
  929. range: [0, 1],
  930. loc: {
  931. start: { line: 1, column: 0 },
  932. end: { line: 1, column: 1 }
  933. }
  934. },
  935. right: {
  936. type: 'ObjectExpression',
  937. properties: [],
  938. range: [4, 7],
  939. loc: {
  940. start: { line: 1, column: 4 },
  941. end: { line: 1, column: 7 }
  942. }
  943. },
  944. range: [0, 7],
  945. loc: {
  946. start: { line: 1, column: 0 },
  947. end: { line: 1, column: 7 }
  948. }
  949. },
  950. range: [0, 7],
  951. loc: {
  952. start: { line: 1, column: 0 },
  953. end: { line: 1, column: 7 }
  954. }
  955. },
  956. 'x = { answer: 42 }': {
  957. type: 'ExpressionStatement',
  958. expression: {
  959. type: 'AssignmentExpression',
  960. operator: '=',
  961. left: {
  962. type: 'Identifier',
  963. name: 'x',
  964. range: [0, 1],
  965. loc: {
  966. start: { line: 1, column: 0 },
  967. end: { line: 1, column: 1 }
  968. }
  969. },
  970. right: {
  971. type: 'ObjectExpression',
  972. properties: [{
  973. type: 'Property',
  974. key: {
  975. type: 'Identifier',
  976. name: 'answer',
  977. range: [6, 12],
  978. loc: {
  979. start: { line: 1, column: 6 },
  980. end: { line: 1, column: 12 }
  981. }
  982. },
  983. value: {
  984. type: 'Literal',
  985. value: 42,
  986. raw: '42',
  987. range: [14, 16],
  988. loc: {
  989. start: { line: 1, column: 14 },
  990. end: { line: 1, column: 16 }
  991. }
  992. },
  993. kind: 'init',
  994. range: [6, 16],
  995. loc: {
  996. start: { line: 1, column: 6 },
  997. end: { line: 1, column: 16 }
  998. }
  999. }],
  1000. range: [4, 18],
  1001. loc: {
  1002. start: { line: 1, column: 4 },
  1003. end: { line: 1, column: 18 }
  1004. }
  1005. },
  1006. range: [0, 18],
  1007. loc: {
  1008. start: { line: 1, column: 0 },
  1009. end: { line: 1, column: 18 }
  1010. }
  1011. },
  1012. range: [0, 18],
  1013. loc: {
  1014. start: { line: 1, column: 0 },
  1015. end: { line: 1, column: 18 }
  1016. }
  1017. },
  1018. 'x = { if: 42 }': {
  1019. type: 'ExpressionStatement',
  1020. expression: {
  1021. type: 'AssignmentExpression',
  1022. operator: '=',
  1023. left: {
  1024. type: 'Identifier',
  1025. name: 'x',
  1026. range: [0, 1],
  1027. loc: {
  1028. start: { line: 1, column: 0 },
  1029. end: { line: 1, column: 1 }
  1030. }
  1031. },
  1032. right: {
  1033. type: 'ObjectExpression',
  1034. properties: [{
  1035. type: 'Property',
  1036. key: {
  1037. type: 'Identifier',
  1038. name: 'if',
  1039. range: [6, 8],
  1040. loc: {
  1041. start: { line: 1, column: 6 },
  1042. end: { line: 1, column: 8 }
  1043. }
  1044. },
  1045. value: {
  1046. type: 'Literal',
  1047. value: 42,
  1048. raw: '42',
  1049. range: [10, 12],
  1050. loc: {
  1051. start: { line: 1, column: 10 },
  1052. end: { line: 1, column: 12 }
  1053. }
  1054. },
  1055. kind: 'init',
  1056. range: [6, 12],
  1057. loc: {
  1058. start: { line: 1, column: 6 },
  1059. end: { line: 1, column: 12 }
  1060. }
  1061. }],
  1062. range: [4, 14],
  1063. loc: {
  1064. start: { line: 1, column: 4 },
  1065. end: { line: 1, column: 14 }
  1066. }
  1067. },
  1068. range: [0, 14],
  1069. loc: {
  1070. start: { line: 1, column: 0 },
  1071. end: { line: 1, column: 14 }
  1072. }
  1073. },
  1074. range: [0, 14],
  1075. loc: {
  1076. start: { line: 1, column: 0 },
  1077. end: { line: 1, column: 14 }
  1078. }
  1079. },
  1080. 'x = { true: 42 }': {
  1081. type: 'ExpressionStatement',
  1082. expression: {
  1083. type: 'AssignmentExpression',
  1084. operator: '=',
  1085. left: {
  1086. type: 'Identifier',
  1087. name: 'x',
  1088. range: [0, 1],
  1089. loc: {
  1090. start: { line: 1, column: 0 },
  1091. end: { line: 1, column: 1 }
  1092. }
  1093. },
  1094. right: {
  1095. type: 'ObjectExpression',
  1096. properties: [{
  1097. type: 'Property',
  1098. key: {
  1099. type: 'Identifier',
  1100. name: 'true',
  1101. range: [6, 10],
  1102. loc: {
  1103. start: { line: 1, column: 6 },
  1104. end: { line: 1, column: 10 }
  1105. }
  1106. },
  1107. value: {
  1108. type: 'Literal',
  1109. value: 42,
  1110. raw: '42',
  1111. range: [12, 14],
  1112. loc: {
  1113. start: { line: 1, column: 12 },
  1114. end: { line: 1, column: 14 }
  1115. }
  1116. },
  1117. kind: 'init',
  1118. range: [6, 14],
  1119. loc: {
  1120. start: { line: 1, column: 6 },
  1121. end: { line: 1, column: 14 }
  1122. }
  1123. }],
  1124. range: [4, 16],
  1125. loc: {
  1126. start: { line: 1, column: 4 },
  1127. end: { line: 1, column: 16 }
  1128. }
  1129. },
  1130. range: [0, 16],
  1131. loc: {
  1132. start: { line: 1, column: 0 },
  1133. end: { line: 1, column: 16 }
  1134. }
  1135. },
  1136. range: [0, 16],
  1137. loc: {
  1138. start: { line: 1, column: 0 },
  1139. end: { line: 1, column: 16 }
  1140. }
  1141. },
  1142. 'x = { false: 42 }': {
  1143. type: 'ExpressionStatement',
  1144. expression: {
  1145. type: 'AssignmentExpression',
  1146. operator: '=',
  1147. left: {
  1148. type: 'Identifier',
  1149. name: 'x',
  1150. range: [0, 1],
  1151. loc: {
  1152. start: { line: 1, column: 0 },
  1153. end: { line: 1, column: 1 }
  1154. }
  1155. },
  1156. right: {
  1157. type: 'ObjectExpression',
  1158. properties: [{
  1159. type: 'Property',
  1160. key: {
  1161. type: 'Identifier',
  1162. name: 'false',
  1163. range: [6, 11],
  1164. loc: {
  1165. start: { line: 1, column: 6 },
  1166. end: { line: 1, column: 11 }
  1167. }
  1168. },
  1169. value: {
  1170. type: 'Literal',
  1171. value: 42,
  1172. raw: '42',
  1173. range: [13, 15],
  1174. loc: {
  1175. start: { line: 1, column: 13 },
  1176. end: { line: 1, column: 15 }
  1177. }
  1178. },
  1179. kind: 'init',
  1180. range: [6, 15],
  1181. loc: {
  1182. start: { line: 1, column: 6 },
  1183. end: { line: 1, column: 15 }
  1184. }
  1185. }],
  1186. range: [4, 17],
  1187. loc: {
  1188. start: { line: 1, column: 4 },
  1189. end: { line: 1, column: 17 }
  1190. }
  1191. },
  1192. range: [0, 17],
  1193. loc: {
  1194. start: { line: 1, column: 0 },
  1195. end: { line: 1, column: 17 }
  1196. }
  1197. },
  1198. range: [0, 17],
  1199. loc: {
  1200. start: { line: 1, column: 0 },
  1201. end: { line: 1, column: 17 }
  1202. }
  1203. },
  1204. 'x = { null: 42 }': {
  1205. type: 'ExpressionStatement',
  1206. expression: {
  1207. type: 'AssignmentExpression',
  1208. operator: '=',
  1209. left: {
  1210. type: 'Identifier',
  1211. name: 'x',
  1212. range: [0, 1],
  1213. loc: {
  1214. start: { line: 1, column: 0 },
  1215. end: { line: 1, column: 1 }
  1216. }
  1217. },
  1218. right: {
  1219. type: 'ObjectExpression',
  1220. properties: [{
  1221. type: 'Property',
  1222. key: {
  1223. type: 'Identifier',
  1224. name: 'null',
  1225. range: [6, 10],
  1226. loc: {
  1227. start: { line: 1, column: 6 },
  1228. end: { line: 1, column: 10 }
  1229. }
  1230. },
  1231. value: {
  1232. type: 'Literal',
  1233. value: 42,
  1234. raw: '42',
  1235. range: [12, 14],
  1236. loc: {
  1237. start: { line: 1, column: 12 },
  1238. end: { line: 1, column: 14 }
  1239. }
  1240. },
  1241. kind: 'init',
  1242. range: [6, 14],
  1243. loc: {
  1244. start: { line: 1, column: 6 },
  1245. end: { line: 1, column: 14 }
  1246. }
  1247. }],
  1248. range: [4, 16],
  1249. loc: {
  1250. start: { line: 1, column: 4 },
  1251. end: { line: 1, column: 16 }
  1252. }
  1253. },
  1254. range: [0, 16],
  1255. loc: {
  1256. start: { line: 1, column: 0 },
  1257. end: { line: 1, column: 16 }
  1258. }
  1259. },
  1260. range: [0, 16],
  1261. loc: {
  1262. start: { line: 1, column: 0 },
  1263. end: { line: 1, column: 16 }
  1264. }
  1265. },
  1266. 'x = { "answer": 42 }': {
  1267. type: 'ExpressionStatement',
  1268. expression: {
  1269. type: 'AssignmentExpression',
  1270. operator: '=',
  1271. left: {
  1272. type: 'Identifier',
  1273. name: 'x',
  1274. range: [0, 1],
  1275. loc: {
  1276. start: { line: 1, column: 0 },
  1277. end: { line: 1, column: 1 }
  1278. }
  1279. },
  1280. right: {
  1281. type: 'ObjectExpression',
  1282. properties: [{
  1283. type: 'Property',
  1284. key: {
  1285. type: 'Literal',
  1286. value: 'answer',
  1287. raw: '"answer"',
  1288. range: [6, 14],
  1289. loc: {
  1290. start: { line: 1, column: 6 },
  1291. end: { line: 1, column: 14 }
  1292. }
  1293. },
  1294. value: {
  1295. type: 'Literal',
  1296. value: 42,
  1297. raw: '42',
  1298. range: [16, 18],
  1299. loc: {
  1300. start: { line: 1, column: 16 },
  1301. end: { line: 1, column: 18 }
  1302. }
  1303. },
  1304. kind: 'init',
  1305. range: [6, 18],
  1306. loc: {
  1307. start: { line: 1, column: 6 },
  1308. end: { line: 1, column: 18 }
  1309. }
  1310. }],
  1311. range: [4, 20],
  1312. loc: {
  1313. start: { line: 1, column: 4 },
  1314. end: { line: 1, column: 20 }
  1315. }
  1316. },
  1317. range: [0, 20],
  1318. loc: {
  1319. start: { line: 1, column: 0 },
  1320. end: { line: 1, column: 20 }
  1321. }
  1322. },
  1323. range: [0, 20],
  1324. loc: {
  1325. start: { line: 1, column: 0 },
  1326. end: { line: 1, column: 20 }
  1327. }
  1328. },
  1329. 'x = { x: 1, x: 2 }': {
  1330. type: 'ExpressionStatement',
  1331. expression: {
  1332. type: 'AssignmentExpression',
  1333. operator: '=',
  1334. left: {
  1335. type: 'Identifier',
  1336. name: 'x',
  1337. range: [0, 1],
  1338. loc: {
  1339. start: { line: 1, column: 0 },
  1340. end: { line: 1, column: 1 }
  1341. }
  1342. },
  1343. right: {
  1344. type: 'ObjectExpression',
  1345. properties: [
  1346. {
  1347. type: 'Property',
  1348. key: {
  1349. type: 'Identifier',
  1350. name: 'x',
  1351. range: [6, 7],
  1352. loc: {
  1353. start: { line: 1, column: 6 },
  1354. end: { line: 1, column: 7 }
  1355. }
  1356. },
  1357. value: {
  1358. type: 'Literal',
  1359. value: 1,
  1360. raw: '1',
  1361. range: [9, 10],
  1362. loc: {
  1363. start: { line: 1, column: 9 },
  1364. end: { line: 1, column: 10 }
  1365. }
  1366. },
  1367. kind: 'init',
  1368. range: [6, 10],
  1369. loc: {
  1370. start: { line: 1, column: 6 },
  1371. end: { line: 1, column: 10 }
  1372. }
  1373. },
  1374. {
  1375. type: 'Property',
  1376. key: {
  1377. type: 'Identifier',
  1378. name: 'x',
  1379. range: [12, 13],
  1380. loc: {
  1381. start: { line: 1, column: 12 },
  1382. end: { line: 1, column: 13 }
  1383. }
  1384. },
  1385. value: {
  1386. type: 'Literal',
  1387. value: 2,
  1388. raw: '2',
  1389. range: [15, 16],
  1390. loc: {
  1391. start: { line: 1, column: 15 },
  1392. end: { line: 1, column: 16 }
  1393. }
  1394. },
  1395. kind: 'init',
  1396. range: [12, 16],
  1397. loc: {
  1398. start: { line: 1, column: 12 },
  1399. end: { line: 1, column: 16 }
  1400. }
  1401. }
  1402. ],
  1403. range: [4, 18],
  1404. loc: {
  1405. start: { line: 1, column: 4 },
  1406. end: { line: 1, column: 18 }
  1407. }
  1408. },
  1409. range: [0, 18],
  1410. loc: {
  1411. start: { line: 1, column: 0 },
  1412. end: { line: 1, column: 18 }
  1413. }
  1414. },
  1415. range: [0, 18],
  1416. loc: {
  1417. start: { line: 1, column: 0 },
  1418. end: { line: 1, column: 18 }
  1419. }
  1420. },
  1421. 'x = { get width() { return m_width } }': {
  1422. type: 'ExpressionStatement',
  1423. expression: {
  1424. type: 'AssignmentExpression',
  1425. operator: '=',
  1426. left: {
  1427. type: 'Identifier',
  1428. name: 'x',
  1429. range: [0, 1],
  1430. loc: {
  1431. start: { line: 1, column: 0 },
  1432. end: { line: 1, column: 1 }
  1433. }
  1434. },
  1435. right: {
  1436. type: 'ObjectExpression',
  1437. properties: [{
  1438. type: 'Property',
  1439. key: {
  1440. type: 'Identifier',
  1441. name: 'width',
  1442. range: [10, 15],
  1443. loc: {
  1444. start: { line: 1, column: 10 },
  1445. end: { line: 1, column: 15 }
  1446. }
  1447. },
  1448. value: {
  1449. type: 'FunctionExpression',
  1450. id: null,
  1451. params: [],
  1452. defaults: [],
  1453. body: {
  1454. type: 'BlockStatement',
  1455. body: [{
  1456. type: 'ReturnStatement',
  1457. argument: {
  1458. type: 'Identifier',
  1459. name: 'm_width',
  1460. range: [27, 34],
  1461. loc: {
  1462. start: { line: 1, column: 27 },
  1463. end: { line: 1, column: 34 }
  1464. }
  1465. },
  1466. range: [20, 35],
  1467. loc: {
  1468. start: { line: 1, column: 20 },
  1469. end: { line: 1, column: 35 }
  1470. }
  1471. }],
  1472. range: [18, 36],
  1473. loc: {
  1474. start: { line: 1, column: 18 },
  1475. end: { line: 1, column: 36 }
  1476. }
  1477. },
  1478. rest: null,
  1479. generator: false,
  1480. expression: false,
  1481. range: [18, 36],
  1482. loc: {
  1483. start: { line: 1, column: 18 },
  1484. end: { line: 1, column: 36 }
  1485. }
  1486. },
  1487. kind: 'get',
  1488. range: [6, 36],
  1489. loc: {
  1490. start: { line: 1, column: 6 },
  1491. end: { line: 1, column: 36 }
  1492. }
  1493. }],
  1494. range: [4, 38],
  1495. loc: {
  1496. start: { line: 1, column: 4 },
  1497. end: { line: 1, column: 38 }
  1498. }
  1499. },
  1500. range: [0, 38],
  1501. loc: {
  1502. start: { line: 1, column: 0 },
  1503. end: { line: 1, column: 38 }
  1504. }
  1505. },
  1506. range: [0, 38],
  1507. loc: {
  1508. start: { line: 1, column: 0 },
  1509. end: { line: 1, column: 38 }
  1510. }
  1511. },
  1512. 'x = { get undef() {} }': {
  1513. type: 'ExpressionStatement',
  1514. expression: {
  1515. type: 'AssignmentExpression',
  1516. operator: '=',
  1517. left: {
  1518. type: 'Identifier',
  1519. name: 'x',
  1520. range: [0, 1],
  1521. loc: {
  1522. start: { line: 1, column: 0 },
  1523. end: { line: 1, column: 1 }
  1524. }
  1525. },
  1526. right: {
  1527. type: 'ObjectExpression',
  1528. properties: [{
  1529. type: 'Property',
  1530. key: {
  1531. type: 'Identifier',
  1532. name: 'undef',
  1533. range: [10, 15],
  1534. loc: {
  1535. start: { line: 1, column: 10 },
  1536. end: { line: 1, column: 15 }
  1537. }
  1538. },
  1539. value: {
  1540. type: 'FunctionExpression',
  1541. id: null,
  1542. params: [],
  1543. defaults: [],
  1544. body: {
  1545. type: 'BlockStatement',
  1546. body: [],
  1547. range: [18, 20],
  1548. loc: {
  1549. start: { line: 1, column: 18 },
  1550. end: { line: 1, column: 20 }
  1551. }
  1552. },
  1553. rest: null,
  1554. generator: false,
  1555. expression: false,
  1556. range: [18, 20],
  1557. loc: {
  1558. start: { line: 1, column: 18 },
  1559. end: { line: 1, column: 20 }
  1560. }
  1561. },
  1562. kind: 'get',
  1563. range: [6, 20],
  1564. loc: {
  1565. start: { line: 1, column: 6 },
  1566. end: { line: 1, column: 20 }
  1567. }
  1568. }],
  1569. range: [4, 22],
  1570. loc: {
  1571. start: { line: 1, column: 4 },
  1572. end: { line: 1, column: 22 }
  1573. }
  1574. },
  1575. range: [0, 22],
  1576. loc: {
  1577. start: { line: 1, column: 0 },
  1578. end: { line: 1, column: 22 }
  1579. }
  1580. },
  1581. range: [0, 22],
  1582. loc: {
  1583. start: { line: 1, column: 0 },
  1584. end: { line: 1, column: 22 }
  1585. }
  1586. },
  1587. 'x = { get if() {} }': {
  1588. type: 'ExpressionStatement',
  1589. expression: {
  1590. type: 'AssignmentExpression',
  1591. operator: '=',
  1592. left: {
  1593. type: 'Identifier',
  1594. name: 'x',
  1595. range: [0, 1],
  1596. loc: {
  1597. start: { line: 1, column: 0 },
  1598. end: { line: 1, column: 1 }
  1599. }
  1600. },
  1601. right: {
  1602. type: 'ObjectExpression',
  1603. properties: [{
  1604. type: 'Property',
  1605. key: {
  1606. type: 'Identifier',
  1607. name: 'if',
  1608. range: [10, 12],
  1609. loc: {
  1610. start: { line: 1, column: 10 },
  1611. end: { line: 1, column: 12 }
  1612. }
  1613. },
  1614. value: {
  1615. type: 'FunctionExpression',
  1616. id: null,
  1617. params: [],
  1618. defaults: [],
  1619. body: {
  1620. type: 'BlockStatement',
  1621. body: [],
  1622. range: [15, 17],
  1623. loc: {
  1624. start: { line: 1, column: 15 },
  1625. end: { line: 1, column: 17 }
  1626. }
  1627. },
  1628. rest: null,
  1629. generator: false,
  1630. expression: false,
  1631. range: [15, 17],
  1632. loc: {
  1633. start: { line: 1, column: 15 },
  1634. end: { line: 1, column: 17 }
  1635. }
  1636. },
  1637. kind: 'get',
  1638. range: [6, 17],
  1639. loc: {
  1640. start: { line: 1, column: 6 },
  1641. end: { line: 1, column: 17 }
  1642. }
  1643. }],
  1644. range: [4, 19],
  1645. loc: {
  1646. start: { line: 1, column: 4 },
  1647. end: { line: 1, column: 19 }
  1648. }
  1649. },
  1650. range: [0, 19],
  1651. loc: {
  1652. start: { line: 1, column: 0 },
  1653. end: { line: 1, column: 19 }
  1654. }
  1655. },
  1656. range: [0, 19],
  1657. loc: {
  1658. start: { line: 1, column: 0 },
  1659. end: { line: 1, column: 19 }
  1660. }
  1661. },
  1662. 'x = { get true() {} }': {
  1663. type: 'ExpressionStatement',
  1664. expression: {
  1665. type: 'AssignmentExpression',
  1666. operator: '=',
  1667. left: {
  1668. type: 'Identifier',
  1669. name: 'x',
  1670. range: [0, 1],
  1671. loc: {
  1672. start: { line: 1, column: 0 },
  1673. end: { line: 1, column: 1 }
  1674. }
  1675. },
  1676. right: {
  1677. type: 'ObjectExpression',
  1678. properties: [{
  1679. type: 'Property',
  1680. key: {
  1681. type: 'Identifier',
  1682. name: 'true',
  1683. range: [10, 14],
  1684. loc: {
  1685. start: { line: 1, column: 10 },
  1686. end: { line: 1, column: 14 }
  1687. }
  1688. },
  1689. value: {
  1690. type: 'FunctionExpression',
  1691. id: null,
  1692. params: [],
  1693. defaults: [],
  1694. body: {
  1695. type: 'BlockStatement',
  1696. body: [],
  1697. range: [17, 19],
  1698. loc: {
  1699. start: { line: 1, column: 17 },
  1700. end: { line: 1, column: 19 }
  1701. }
  1702. },
  1703. rest: null,
  1704. generator: false,
  1705. expression: false,
  1706. range: [17, 19],
  1707. loc: {
  1708. start: { line: 1, column: 17 },
  1709. end: { line: 1, column: 19 }
  1710. }
  1711. },
  1712. kind: 'get',
  1713. range: [6, 19],
  1714. loc: {
  1715. start: { line: 1, column: 6 },
  1716. end: { line: 1, column: 19 }
  1717. }
  1718. }],
  1719. range: [4, 21],
  1720. loc: {
  1721. start: { line: 1, column: 4 },
  1722. end: { line: 1, column: 21 }
  1723. }
  1724. },
  1725. range: [0, 21],
  1726. loc: {
  1727. start: { line: 1, column: 0 },
  1728. end: { line: 1, column: 21 }
  1729. }
  1730. },
  1731. range: [0, 21],
  1732. loc: {
  1733. start: { line: 1, column: 0 },
  1734. end: { line: 1, column: 21 }
  1735. }
  1736. },
  1737. 'x = { get false() {} }': {
  1738. type: 'ExpressionStatement',
  1739. expression: {
  1740. type: 'AssignmentExpression',
  1741. operator: '=',
  1742. left: {
  1743. type: 'Identifier',
  1744. name: 'x',
  1745. range: [0, 1],
  1746. loc: {
  1747. start: { line: 1, column: 0 },
  1748. end: { line: 1, column: 1 }
  1749. }
  1750. },
  1751. right: {
  1752. type: 'ObjectExpression',
  1753. properties: [{
  1754. type: 'Property',
  1755. key: {
  1756. type: 'Identifier',
  1757. name: 'false',
  1758. range: [10, 15],
  1759. loc: {
  1760. start: { line: 1, column: 10 },
  1761. end: { line: 1, column: 15 }
  1762. }
  1763. },
  1764. value: {
  1765. type: 'FunctionExpression',
  1766. id: null,
  1767. params: [],
  1768. defaults: [],
  1769. body: {
  1770. type: 'BlockStatement',
  1771. body: [],
  1772. range: [18, 20],
  1773. loc: {
  1774. start: { line: 1, column: 18 },
  1775. end: { line: 1, column: 20 }
  1776. }
  1777. },
  1778. rest: null,
  1779. generator: false,
  1780. expression: false,
  1781. range: [18, 20],
  1782. loc: {
  1783. start: { line: 1, column: 18 },
  1784. end: { line: 1, column: 20 }
  1785. }
  1786. },
  1787. kind: 'get',
  1788. range: [6, 20],
  1789. loc: {
  1790. start: { line: 1, column: 6 },
  1791. end: { line: 1, column: 20 }
  1792. }
  1793. }],
  1794. range: [4, 22],
  1795. loc: {
  1796. start: { line: 1, column: 4 },
  1797. end: { line: 1, column: 22 }
  1798. }
  1799. },
  1800. range: [0, 22],
  1801. loc: {
  1802. start: { line: 1, column: 0 },
  1803. end: { line: 1, column: 22 }
  1804. }
  1805. },
  1806. range: [0, 22],
  1807. loc: {
  1808. start: { line: 1, column: 0 },
  1809. end: { line: 1, column: 22 }
  1810. }
  1811. },
  1812. 'x = { get null() {} }': {
  1813. type: 'ExpressionStatement',
  1814. expression: {
  1815. type: 'AssignmentExpression',
  1816. operator: '=',
  1817. left: {
  1818. type: 'Identifier',
  1819. name: 'x',
  1820. range: [0, 1],
  1821. loc: {
  1822. start: { line: 1, column: 0 },
  1823. end: { line: 1, column: 1 }
  1824. }
  1825. },
  1826. right: {
  1827. type: 'ObjectExpression',
  1828. properties: [{
  1829. type: 'Property',
  1830. key: {
  1831. type: 'Identifier',
  1832. name: 'null',
  1833. range: [10, 14],
  1834. loc: {
  1835. start: { line: 1, column: 10 },
  1836. end: { line: 1, column: 14 }
  1837. }
  1838. },
  1839. value: {
  1840. type: 'FunctionExpression',
  1841. id: null,
  1842. params: [],
  1843. defaults: [],
  1844. body: {
  1845. type: 'BlockStatement',
  1846. body: [],
  1847. range: [17, 19],
  1848. loc: {
  1849. start: { line: 1, column: 17 },
  1850. end: { line: 1, column: 19 }
  1851. }
  1852. },
  1853. rest: null,
  1854. generator: false,
  1855. expression: false,
  1856. range: [17, 19],
  1857. loc: {
  1858. start: { line: 1, column: 17 },
  1859. end: { line: 1, column: 19 }
  1860. }
  1861. },
  1862. kind: 'get',
  1863. range: [6, 19],
  1864. loc: {
  1865. start: { line: 1, column: 6 },
  1866. end: { line: 1, column: 19 }
  1867. }
  1868. }],
  1869. range: [4, 21],
  1870. loc: {
  1871. start: { line: 1, column: 4 },
  1872. end: { line: 1, column: 21 }
  1873. }
  1874. },
  1875. range: [0, 21],
  1876. loc: {
  1877. start: { line: 1, column: 0 },
  1878. end: { line: 1, column: 21 }
  1879. }
  1880. },
  1881. range: [0, 21],
  1882. loc: {
  1883. start: { line: 1, column: 0 },
  1884. end: { line: 1, column: 21 }
  1885. }
  1886. },
  1887. 'x = { get "undef"() {} }': {
  1888. type: 'ExpressionStatement',
  1889. expression: {
  1890. type: 'AssignmentExpression',
  1891. operator: '=',
  1892. left: {
  1893. type: 'Identifier',
  1894. name: 'x',
  1895. range: [0, 1],
  1896. loc: {
  1897. start: { line: 1, column: 0 },
  1898. end: { line: 1, column: 1 }
  1899. }
  1900. },
  1901. right: {
  1902. type: 'ObjectExpression',
  1903. properties: [{
  1904. type: 'Property',
  1905. key: {
  1906. type: 'Literal',
  1907. value: 'undef',
  1908. raw: '"undef"',
  1909. range: [10, 17],
  1910. loc: {
  1911. start: { line: 1, column: 10 },
  1912. end: { line: 1, column: 17 }
  1913. }
  1914. },
  1915. value: {
  1916. type: 'FunctionExpression',
  1917. id: null,
  1918. params: [],
  1919. defaults: [],
  1920. body: {
  1921. type: 'BlockStatement',
  1922. body: [],
  1923. range: [20, 22],
  1924. loc: {
  1925. start: { line: 1, column: 20 },
  1926. end: { line: 1, column: 22 }
  1927. }
  1928. },
  1929. rest: null,
  1930. generator: false,
  1931. expression: false,
  1932. range: [20, 22],
  1933. loc: {
  1934. start: { line: 1, column: 20 },
  1935. end: { line: 1, column: 22 }
  1936. }
  1937. },
  1938. kind: 'get',
  1939. range: [6, 22],
  1940. loc: {
  1941. start: { line: 1, column: 6 },
  1942. end: { line: 1, column: 22 }
  1943. }
  1944. }],
  1945. range: [4, 24],
  1946. loc: {
  1947. start: { line: 1, column: 4 },
  1948. end: { line: 1, column: 24 }
  1949. }
  1950. },
  1951. range: [0, 24],
  1952. loc: {
  1953. start: { line: 1, column: 0 },
  1954. end: { line: 1, column: 24 }
  1955. }
  1956. },
  1957. range: [0, 24],
  1958. loc: {
  1959. start: { line: 1, column: 0 },
  1960. end: { line: 1, column: 24 }
  1961. }
  1962. },
  1963. 'x = { get 10() {} }': {
  1964. type: 'ExpressionStatement',
  1965. expression: {
  1966. type: 'AssignmentExpression',
  1967. operator: '=',
  1968. left: {
  1969. type: 'Identifier',
  1970. name: 'x',
  1971. range: [0, 1],
  1972. loc: {
  1973. start: { line: 1, column: 0 },
  1974. end: { line: 1, column: 1 }
  1975. }
  1976. },
  1977. right: {
  1978. type: 'ObjectExpression',
  1979. properties: [{
  1980. type: 'Property',
  1981. key: {
  1982. type: 'Literal',
  1983. value: 10,
  1984. raw: '10',
  1985. range: [10, 12],
  1986. loc: {
  1987. start: { line: 1, column: 10 },
  1988. end: { line: 1, column: 12 }
  1989. }
  1990. },
  1991. value: {
  1992. type: 'FunctionExpression',
  1993. id: null,
  1994. params: [],
  1995. defaults: [],
  1996. body: {
  1997. type: 'BlockStatement',
  1998. body: [],
  1999. range: [15, 17],
  2000. loc: {
  2001. start: { line: 1, column: 15 },
  2002. end: { line: 1, column: 17 }
  2003. }
  2004. },
  2005. rest: null,
  2006. generator: false,
  2007. expression: false,
  2008. range: [15, 17],
  2009. loc: {
  2010. start: { line: 1, column: 15 },
  2011. end: { line: 1, column: 17 }
  2012. }
  2013. },
  2014. kind: 'get',
  2015. range: [6, 17],
  2016. loc: {
  2017. start: { line: 1, column: 6 },
  2018. end: { line: 1, column: 17 }
  2019. }
  2020. }],
  2021. range: [4, 19],
  2022. loc: {
  2023. start: { line: 1, column: 4 },
  2024. end: { line: 1, column: 19 }
  2025. }
  2026. },
  2027. range: [0, 19],
  2028. loc: {
  2029. start: { line: 1, column: 0 },
  2030. end: { line: 1, column: 19 }
  2031. }
  2032. },
  2033. range: [0, 19],
  2034. loc: {
  2035. start: { line: 1, column: 0 },
  2036. end: { line: 1, column: 19 }
  2037. }
  2038. },
  2039. 'x = { set width(w) { m_width = w } }': {
  2040. type: 'ExpressionStatement',
  2041. expression: {
  2042. type: 'AssignmentExpression',
  2043. operator: '=',
  2044. left: {
  2045. type: 'Identifier',
  2046. name: 'x',
  2047. range: [0, 1],
  2048. loc: {
  2049. start: { line: 1, column: 0 },
  2050. end: { line: 1, column: 1 }
  2051. }
  2052. },
  2053. right: {
  2054. type: 'ObjectExpression',
  2055. properties: [{
  2056. type: 'Property',
  2057. key: {
  2058. type: 'Identifier',
  2059. name: 'width',
  2060. range: [10, 15],
  2061. loc: {
  2062. start: { line: 1, column: 10 },
  2063. end: { line: 1, column: 15 }
  2064. }
  2065. },
  2066. value: {
  2067. type: 'FunctionExpression',
  2068. id: null,
  2069. params: [{
  2070. type: 'Identifier',
  2071. name: 'w',
  2072. range: [16, 17],
  2073. loc: {
  2074. start: { line: 1, column: 16 },
  2075. end: { line: 1, column: 17 }
  2076. }
  2077. }],
  2078. defaults: [],
  2079. body: {
  2080. type: 'BlockStatement',
  2081. body: [{
  2082. type: 'ExpressionStatement',
  2083. expression: {
  2084. type: 'AssignmentExpression',
  2085. operator: '=',
  2086. left: {
  2087. type: 'Identifier',
  2088. name: 'm_width',
  2089. range: [21, 28],
  2090. loc: {
  2091. start: { line: 1, column: 21 },
  2092. end: { line: 1, column: 28 }
  2093. }
  2094. },
  2095. right: {
  2096. type: 'Identifier',
  2097. name: 'w',
  2098. range: [31, 32],
  2099. loc: {
  2100. start: { line: 1, column: 31 },
  2101. end: { line: 1, column: 32 }
  2102. }
  2103. },
  2104. range: [21, 32],
  2105. loc: {
  2106. start: { line: 1, column: 21 },
  2107. end: { line: 1, column: 32 }
  2108. }
  2109. },
  2110. range: [21, 33],
  2111. loc: {
  2112. start: { line: 1, column: 21 },
  2113. end: { line: 1, column: 33 }
  2114. }
  2115. }],
  2116. range: [19, 34],
  2117. loc: {
  2118. start: { line: 1, column: 19 },
  2119. end: { line: 1, column: 34 }
  2120. }
  2121. },
  2122. rest: null,
  2123. generator: false,
  2124. expression: false,
  2125. range: [19, 34],
  2126. loc: {
  2127. start: { line: 1, column: 19 },
  2128. end: { line: 1, column: 34 }
  2129. }
  2130. },
  2131. kind: 'set',
  2132. range: [6, 34],
  2133. loc: {
  2134. start: { line: 1, column: 6 },
  2135. end: { line: 1, column: 34 }
  2136. }
  2137. }],
  2138. range: [4, 36],
  2139. loc: {
  2140. start: { line: 1, column: 4 },
  2141. end: { line: 1, column: 36 }
  2142. }
  2143. },
  2144. range: [0, 36],
  2145. loc: {
  2146. start: { line: 1, column: 0 },
  2147. end: { line: 1, column: 36 }
  2148. }
  2149. },
  2150. range: [0, 36],
  2151. loc: {
  2152. start: { line: 1, column: 0 },
  2153. end: { line: 1, column: 36 }
  2154. }
  2155. },
  2156. 'x = { set if(w) { m_if = w } }': {
  2157. type: 'ExpressionStatement',
  2158. expression: {
  2159. type: 'AssignmentExpression',
  2160. operator: '=',
  2161. left: {
  2162. type: 'Identifier',
  2163. name: 'x',
  2164. range: [0, 1],
  2165. loc: {
  2166. start: { line: 1, column: 0 },
  2167. end: { line: 1, column: 1 }
  2168. }
  2169. },
  2170. right: {
  2171. type: 'ObjectExpression',
  2172. properties: [{
  2173. type: 'Property',
  2174. key: {
  2175. type: 'Identifier',
  2176. name: 'if',
  2177. range: [10, 12],
  2178. loc: {
  2179. start: { line: 1, column: 10 },
  2180. end: { line: 1, column: 12 }
  2181. }
  2182. },
  2183. value: {
  2184. type: 'FunctionExpression',
  2185. id: null,
  2186. params: [{
  2187. type: 'Identifier',
  2188. name: 'w',
  2189. range: [13, 14],
  2190. loc: {
  2191. start: { line: 1, column: 13 },
  2192. end: { line: 1, column: 14 }
  2193. }
  2194. }],
  2195. defaults: [],
  2196. body: {
  2197. type: 'BlockStatement',
  2198. body: [{
  2199. type: 'ExpressionStatement',
  2200. expression: {
  2201. type: 'AssignmentExpression',
  2202. operator: '=',
  2203. left: {
  2204. type: 'Identifier',
  2205. name: 'm_if',
  2206. range: [18, 22],
  2207. loc: {
  2208. start: { line: 1, column: 18 },
  2209. end: { line: 1, column: 22 }
  2210. }
  2211. },
  2212. right: {
  2213. type: 'Identifier',
  2214. name: 'w',
  2215. range: [25, 26],
  2216. loc: {
  2217. start: { line: 1, column: 25 },
  2218. end: { line: 1, column: 26 }
  2219. }
  2220. },
  2221. range: [18, 26],
  2222. loc: {
  2223. start: { line: 1, column: 18 },
  2224. end: { line: 1, column: 26 }
  2225. }
  2226. },
  2227. range: [18, 27],
  2228. loc: {
  2229. start: { line: 1, column: 18 },
  2230. end: { line: 1, column: 27 }
  2231. }
  2232. }],
  2233. range: [16, 28],
  2234. loc: {
  2235. start: { line: 1, column: 16 },
  2236. end: { line: 1, column: 28 }
  2237. }
  2238. },
  2239. rest: null,
  2240. generator: false,
  2241. expression: false,
  2242. range: [16, 28],
  2243. loc: {
  2244. start: { line: 1, column: 16 },
  2245. end: { line: 1, column: 28 }
  2246. }
  2247. },
  2248. kind: 'set',
  2249. range: [6, 28],
  2250. loc: {
  2251. start: { line: 1, column: 6 },
  2252. end: { line: 1, column: 28 }
  2253. }
  2254. }],
  2255. range: [4, 30],
  2256. loc: {
  2257. start: { line: 1, column: 4 },
  2258. end: { line: 1, column: 30 }
  2259. }
  2260. },
  2261. range: [0, 30],
  2262. loc: {
  2263. start: { line: 1, column: 0 },
  2264. end: { line: 1, column: 30 }
  2265. }
  2266. },
  2267. range: [0, 30],
  2268. loc: {
  2269. start: { line: 1, column: 0 },
  2270. end: { line: 1, column: 30 }
  2271. }
  2272. },
  2273. 'x = { set true(w) { m_true = w } }': {
  2274. type: 'ExpressionStatement',
  2275. expression: {
  2276. type: 'AssignmentExpression',
  2277. operator: '=',
  2278. left: {
  2279. type: 'Identifier',
  2280. name: 'x',
  2281. range: [0, 1],
  2282. loc: {
  2283. start: { line: 1, column: 0 },
  2284. end: { line: 1, column: 1 }
  2285. }
  2286. },
  2287. right: {
  2288. type: 'ObjectExpression',
  2289. properties: [{
  2290. type: 'Property',
  2291. key: {
  2292. type: 'Identifier',
  2293. name: 'true',
  2294. range: [10, 14],
  2295. loc: {
  2296. start: { line: 1, column: 10 },
  2297. end: { line: 1, column: 14 }
  2298. }
  2299. },
  2300. value: {
  2301. type: 'FunctionExpression',
  2302. id: null,
  2303. params: [{
  2304. type: 'Identifier',
  2305. name: 'w',
  2306. range: [15, 16],
  2307. loc: {
  2308. start: { line: 1, column: 15 },
  2309. end: { line: 1, column: 16 }
  2310. }
  2311. }],
  2312. defaults: [],
  2313. body: {
  2314. type: 'BlockStatement',
  2315. body: [{
  2316. type: 'ExpressionStatement',
  2317. expression: {
  2318. type: 'AssignmentExpression',
  2319. operator: '=',
  2320. left: {
  2321. type: 'Identifier',
  2322. name: 'm_true',
  2323. range: [20, 26],
  2324. loc: {
  2325. start: { line: 1, column: 20 },
  2326. end: { line: 1, column: 26 }
  2327. }
  2328. },
  2329. right: {
  2330. type: 'Identifier',
  2331. name: 'w',
  2332. range: [29, 30],
  2333. loc: {
  2334. start: { line: 1, column: 29 },
  2335. end: { line: 1, column: 30 }
  2336. }
  2337. },
  2338. range: [20, 30],
  2339. loc: {
  2340. start: { line: 1, column: 20 },
  2341. end: { line: 1, column: 30 }
  2342. }
  2343. },
  2344. range: [20, 31],
  2345. loc: {
  2346. start: { line: 1, column: 20 },
  2347. end: { line: 1, column: 31 }
  2348. }
  2349. }],
  2350. range: [18, 32],
  2351. loc: {
  2352. start: { line: 1, column: 18 },
  2353. end: { line: 1, column: 32 }
  2354. }
  2355. },
  2356. rest: null,
  2357. generator: false,
  2358. expression: false,
  2359. range: [18, 32],
  2360. loc: {
  2361. start: { line: 1, column: 18 },
  2362. end: { line: 1, column: 32 }
  2363. }
  2364. },
  2365. kind: 'set',
  2366. range: [6, 32],
  2367. loc: {
  2368. start: { line: 1, column: 6 },
  2369. end: { line: 1, column: 32 }
  2370. }
  2371. }],
  2372. range: [4, 34],
  2373. loc: {
  2374. start: { line: 1, column: 4 },
  2375. end: { line: 1, column: 34 }
  2376. }
  2377. },
  2378. range: [0, 34],
  2379. loc: {
  2380. start: { line: 1, column: 0 },
  2381. end: { line: 1, column: 34 }
  2382. }
  2383. },
  2384. range: [0, 34],
  2385. loc: {
  2386. start: { line: 1, column: 0 },
  2387. end: { line: 1, column: 34 }
  2388. }
  2389. },
  2390. 'x = { set false(w) { m_false = w } }': {
  2391. type: 'ExpressionStatement',
  2392. expression: {
  2393. type: 'AssignmentExpression',
  2394. operator: '=',
  2395. left: {
  2396. type: 'Identifier',
  2397. name: 'x',
  2398. range: [0, 1],
  2399. loc: {
  2400. start: { line: 1, column: 0 },
  2401. end: { line: 1, column: 1 }
  2402. }
  2403. },
  2404. right: {
  2405. type: 'ObjectExpression',
  2406. properties: [{
  2407. type: 'Property',
  2408. key: {
  2409. type: 'Identifier',
  2410. name: 'false',
  2411. range: [10, 15],
  2412. loc: {
  2413. start: { line: 1, column: 10 },
  2414. end: { line: 1, column: 15 }
  2415. }
  2416. },
  2417. value: {
  2418. type: 'FunctionExpression',
  2419. id: null,
  2420. params: [{
  2421. type: 'Identifier',
  2422. name: 'w',
  2423. range: [16, 17],
  2424. loc: {
  2425. start: { line: 1, column: 16 },
  2426. end: { line: 1, column: 17 }
  2427. }
  2428. }],
  2429. defaults: [],
  2430. body: {
  2431. type: 'BlockStatement',
  2432. body: [{
  2433. type: 'ExpressionStatement',
  2434. expression: {
  2435. type: 'AssignmentExpression',
  2436. operator: '=',
  2437. left: {
  2438. type: 'Identifier',
  2439. name: 'm_false',
  2440. range: [21, 28],
  2441. loc: {
  2442. start: { line: 1, column: 21 },
  2443. end: { line: 1, column: 28 }
  2444. }
  2445. },
  2446. right: {
  2447. type: 'Identifier',
  2448. name: 'w',
  2449. range: [31, 32],
  2450. loc: {
  2451. start: { line: 1, column: 31 },
  2452. end: { line: 1, column: 32 }
  2453. }
  2454. },
  2455. range: [21, 32],
  2456. loc: {
  2457. start: { line: 1, column: 21 },
  2458. end: { line: 1, column: 32 }
  2459. }
  2460. },
  2461. range: [21, 33],
  2462. loc: {
  2463. start: { line: 1, column: 21 },
  2464. end: { line: 1, column: 33 }
  2465. }
  2466. }],
  2467. range: [19, 34],
  2468. loc: {
  2469. start: { line: 1, column: 19 },
  2470. end: { line: 1, column: 34 }
  2471. }
  2472. },
  2473. rest: null,
  2474. generator: false,
  2475. expression: false,
  2476. range: [19, 34],
  2477. loc: {
  2478. start: { line: 1, column: 19 },
  2479. end: { line: 1, column: 34 }
  2480. }
  2481. },
  2482. kind: 'set',
  2483. range: [6, 34],
  2484. loc: {
  2485. start: { line: 1, column: 6 },
  2486. end: { line: 1, column: 34 }
  2487. }
  2488. }],
  2489. range: [4, 36],
  2490. loc: {
  2491. start: { line: 1, column: 4 },
  2492. end: { line: 1, column: 36 }
  2493. }
  2494. },
  2495. range: [0, 36],
  2496. loc: {
  2497. start: { line: 1, column: 0 },
  2498. end: { line: 1, column: 36 }
  2499. }
  2500. },
  2501. range: [0, 36],
  2502. loc: {
  2503. start: { line: 1, column: 0 },
  2504. end: { line: 1, column: 36 }
  2505. }
  2506. },
  2507. 'x = { set null(w) { m_null = w } }': {
  2508. type: 'ExpressionStatement',
  2509. expression: {
  2510. type: 'AssignmentExpression',
  2511. operator: '=',
  2512. left: {
  2513. type: 'Identifier',
  2514. name: 'x',
  2515. range: [0, 1],
  2516. loc: {
  2517. start: { line: 1, column: 0 },
  2518. end: { line: 1, column: 1 }
  2519. }
  2520. },
  2521. right: {
  2522. type: 'ObjectExpression',
  2523. properties: [{
  2524. type: 'Property',
  2525. key: {
  2526. type: 'Identifier',
  2527. name: 'null',
  2528. range: [10, 14],
  2529. loc: {
  2530. start: { line: 1, column: 10 },
  2531. end: { line: 1, column: 14 }
  2532. }
  2533. },
  2534. value: {
  2535. type: 'FunctionExpression',
  2536. id: null,
  2537. params: [{
  2538. type: 'Identifier',
  2539. name: 'w',
  2540. range: [15, 16],
  2541. loc: {
  2542. start: { line: 1, column: 15 },
  2543. end: { line: 1, column: 16 }
  2544. }
  2545. }],
  2546. defaults: [],
  2547. body: {
  2548. type: 'BlockStatement',
  2549. body: [{
  2550. type: 'ExpressionStatement',
  2551. expression: {
  2552. type: 'AssignmentExpression',
  2553. operator: '=',
  2554. left: {
  2555. type: 'Identifier',
  2556. name: 'm_null',
  2557. range: [20, 26],
  2558. loc: {
  2559. start: { line: 1, column: 20 },
  2560. end: { line: 1, column: 26 }
  2561. }
  2562. },
  2563. right: {
  2564. type: 'Identifier',
  2565. name: 'w',
  2566. range: [29, 30],
  2567. loc: {
  2568. start: { line: 1, column: 29 },
  2569. end: { line: 1, column: 30 }
  2570. }
  2571. },
  2572. range: [20, 30],
  2573. loc: {
  2574. start: { line: 1, column: 20 },
  2575. end: { line: 1, column: 30 }
  2576. }
  2577. },
  2578. range: [20, 31],
  2579. loc: {
  2580. start: { line: 1, column: 20 },
  2581. end: { line: 1, column: 31 }
  2582. }
  2583. }],
  2584. range: [18, 32],
  2585. loc: {
  2586. start: { line: 1, column: 18 },
  2587. end: { line: 1, column: 32 }
  2588. }
  2589. },
  2590. rest: null,
  2591. generator: false,
  2592. expression: false,
  2593. range: [18, 32],
  2594. loc: {
  2595. start: { line: 1, column: 18 },
  2596. end: { line: 1, column: 32 }
  2597. }
  2598. },
  2599. kind: 'set',
  2600. range: [6, 32],
  2601. loc: {
  2602. start: { line: 1, column: 6 },
  2603. end: { line: 1, column: 32 }
  2604. }
  2605. }],
  2606. range: [4, 34],
  2607. loc: {
  2608. start: { line: 1, column: 4 },
  2609. end: { line: 1, column: 34 }
  2610. }
  2611. },
  2612. range: [0, 34],
  2613. loc: {
  2614. start: { line: 1, column: 0 },
  2615. end: { line: 1, column: 34 }
  2616. }
  2617. },
  2618. range: [0, 34],
  2619. loc: {
  2620. start: { line: 1, column: 0 },
  2621. end: { line: 1, column: 34 }
  2622. }
  2623. },
  2624. 'x = { set "null"(w) { m_null = w } }': {
  2625. type: 'ExpressionStatement',
  2626. expression: {
  2627. type: 'AssignmentExpression',
  2628. operator: '=',
  2629. left: {
  2630. type: 'Identifier',
  2631. name: 'x',
  2632. range: [0, 1],
  2633. loc: {
  2634. start: { line: 1, column: 0 },
  2635. end: { line: 1, column: 1 }
  2636. }
  2637. },
  2638. right: {
  2639. type: 'ObjectExpression',
  2640. properties: [{
  2641. type: 'Property',
  2642. key: {
  2643. type: 'Literal',
  2644. value: 'null',
  2645. raw: '"null"',
  2646. range: [10, 16],
  2647. loc: {
  2648. start: { line: 1, column: 10 },
  2649. end: { line: 1, column: 16 }
  2650. }
  2651. },
  2652. value: {
  2653. type: 'FunctionExpression',
  2654. id: null,
  2655. params: [{
  2656. type: 'Identifier',
  2657. name: 'w',
  2658. range: [17, 18],
  2659. loc: {
  2660. start: { line: 1, column: 17 },
  2661. end: { line: 1, column: 18 }
  2662. }
  2663. }],
  2664. defaults: [],
  2665. body: {
  2666. type: 'BlockStatement',
  2667. body: [{
  2668. type: 'ExpressionStatement',
  2669. expression: {
  2670. type: 'AssignmentExpression',
  2671. operator: '=',
  2672. left: {
  2673. type: 'Identifier',
  2674. name: 'm_null',
  2675. range: [22, 28],
  2676. loc: {
  2677. start: { line: 1, column: 22 },
  2678. end: { line: 1, column: 28 }
  2679. }
  2680. },
  2681. right: {
  2682. type: 'Identifier',
  2683. name: 'w',
  2684. range: [31, 32],
  2685. loc: {
  2686. start: { line: 1, column: 31 },
  2687. end: { line: 1, column: 32 }
  2688. }
  2689. },
  2690. range: [22, 32],
  2691. loc: {
  2692. start: { line: 1, column: 22 },
  2693. end: { line: 1, column: 32 }
  2694. }
  2695. },
  2696. range: [22, 33],
  2697. loc: {
  2698. start: { line: 1, column: 22 },
  2699. end: { line: 1, column: 33 }
  2700. }
  2701. }],
  2702. range: [20, 34],
  2703. loc: {
  2704. start: { line: 1, column: 20 },
  2705. end: { line: 1, column: 34 }
  2706. }
  2707. },
  2708. rest: null,
  2709. generator: false,
  2710. expression: false,
  2711. range: [20, 34],
  2712. loc: {
  2713. start: { line: 1, column: 20 },
  2714. end: { line: 1, column: 34 }
  2715. }
  2716. },
  2717. kind: 'set',
  2718. range: [6, 34],
  2719. loc: {
  2720. start: { line: 1, column: 6 },
  2721. end: { line: 1, column: 34 }
  2722. }
  2723. }],
  2724. range: [4, 36],
  2725. loc: {
  2726. start: { line: 1, column: 4 },
  2727. end: { line: 1, column: 36 }
  2728. }
  2729. },
  2730. range: [0, 36],
  2731. loc: {
  2732. start: { line: 1, column: 0 },
  2733. end: { line: 1, column: 36 }
  2734. }
  2735. },
  2736. range: [0, 36],
  2737. loc: {
  2738. start: { line: 1, column: 0 },
  2739. end: { line: 1, column: 36 }
  2740. }
  2741. },
  2742. 'x = { set 10(w) { m_null = w } }': {
  2743. type: 'ExpressionStatement',
  2744. expression: {
  2745. type: 'AssignmentExpression',
  2746. operator: '=',
  2747. left: {
  2748. type: 'Identifier',
  2749. name: 'x',
  2750. range: [0, 1],
  2751. loc: {
  2752. start: { line: 1, column: 0 },
  2753. end: { line: 1, column: 1 }
  2754. }
  2755. },
  2756. right: {
  2757. type: 'ObjectExpression',
  2758. properties: [{
  2759. type: 'Property',
  2760. key: {
  2761. type: 'Literal',
  2762. value: 10,
  2763. raw: '10',
  2764. range: [10, 12],
  2765. loc: {
  2766. start: { line: 1, column: 10 },
  2767. end: { line: 1, column: 12 }
  2768. }
  2769. },
  2770. value: {
  2771. type: 'FunctionExpression',
  2772. id: null,
  2773. params: [{
  2774. type: 'Identifier',
  2775. name: 'w',
  2776. range: [13, 14],
  2777. loc: {
  2778. start: { line: 1, column: 13 },
  2779. end: { line: 1, column: 14 }
  2780. }
  2781. }],
  2782. defaults: [],
  2783. body: {
  2784. type: 'BlockStatement',
  2785. body: [{
  2786. type: 'ExpressionStatement',
  2787. expression: {
  2788. type: 'AssignmentExpression',
  2789. operator: '=',
  2790. left: {
  2791. type: 'Identifier',
  2792. name: 'm_null',
  2793. range: [18, 24],
  2794. loc: {
  2795. start: { line: 1, column: 18 },
  2796. end: { line: 1, column: 24 }
  2797. }
  2798. },
  2799. right: {
  2800. type: 'Identifier',
  2801. name: 'w',
  2802. range: [27, 28],
  2803. loc: {
  2804. start: { line: 1, column: 27 },
  2805. end: { line: 1, column: 28 }
  2806. }
  2807. },
  2808. range: [18, 28],
  2809. loc: {
  2810. start: { line: 1, column: 18 },
  2811. end: { line: 1, column: 28 }
  2812. }
  2813. },
  2814. range: [18, 29],
  2815. loc: {
  2816. start: { line: 1, column: 18 },
  2817. end: { line: 1, column: 29 }
  2818. }
  2819. }],
  2820. range: [16, 30],
  2821. loc: {
  2822. start: { line: 1, column: 16 },
  2823. end: { line: 1, column: 30 }
  2824. }
  2825. },
  2826. rest: null,
  2827. generator: false,
  2828. expression: false,
  2829. range: [16, 30],
  2830. loc: {
  2831. start: { line: 1, column: 16 },
  2832. end: { line: 1, column: 30 }
  2833. }
  2834. },
  2835. kind: 'set',
  2836. range: [6, 30],
  2837. loc: {
  2838. start: { line: 1, column: 6 },
  2839. end: { line: 1, column: 30 }
  2840. }
  2841. }],
  2842. range: [4, 32],
  2843. loc: {
  2844. start: { line: 1, column: 4 },
  2845. end: { line: 1, column: 32 }
  2846. }
  2847. },
  2848. range: [0, 32],
  2849. loc: {
  2850. start: { line: 1, column: 0 },
  2851. end: { line: 1, column: 32 }
  2852. }
  2853. },
  2854. range: [0, 32],
  2855. loc: {
  2856. start: { line: 1, column: 0 },
  2857. end: { line: 1, column: 32 }
  2858. }
  2859. },
  2860. 'x = { get: 42 }': {
  2861. type: 'ExpressionStatement',
  2862. expression: {
  2863. type: 'AssignmentExpression',
  2864. operator: '=',
  2865. left: {
  2866. type: 'Identifier',
  2867. name: 'x',
  2868. range: [0, 1],
  2869. loc: {
  2870. start: { line: 1, column: 0 },
  2871. end: { line: 1, column: 1 }
  2872. }
  2873. },
  2874. right: {
  2875. type: 'ObjectExpression',
  2876. properties: [{
  2877. type: 'Property',
  2878. key: {
  2879. type: 'Identifier',
  2880. name: 'get',
  2881. range: [6, 9],
  2882. loc: {
  2883. start: { line: 1, column: 6 },
  2884. end: { line: 1, column: 9 }
  2885. }
  2886. },
  2887. value: {
  2888. type: 'Literal',
  2889. value: 42,
  2890. raw: '42',
  2891. range: [11, 13],
  2892. loc: {
  2893. start: { line: 1, column: 11 },
  2894. end: { line: 1, column: 13 }
  2895. }
  2896. },
  2897. kind: 'init',
  2898. range: [6, 13],
  2899. loc: {
  2900. start: { line: 1, column: 6 },
  2901. end: { line: 1, column: 13 }
  2902. }
  2903. }],
  2904. range: [4, 15],
  2905. loc: {
  2906. start: { line: 1, column: 4 },
  2907. end: { line: 1, column: 15 }
  2908. }
  2909. },
  2910. range: [0, 15],
  2911. loc: {
  2912. start: { line: 1, column: 0 },
  2913. end: { line: 1, column: 15 }
  2914. }
  2915. },
  2916. range: [0, 15],
  2917. loc: {
  2918. start: { line: 1, column: 0 },
  2919. end: { line: 1, column: 15 }
  2920. }
  2921. },
  2922. 'x = { set: 43 }': {
  2923. type: 'ExpressionStatement',
  2924. expression: {
  2925. type: 'AssignmentExpression',
  2926. operator: '=',
  2927. left: {
  2928. type: 'Identifier',
  2929. name: 'x',
  2930. range: [0, 1],
  2931. loc: {
  2932. start: { line: 1, column: 0 },
  2933. end: { line: 1, column: 1 }
  2934. }
  2935. },
  2936. right: {
  2937. type: 'ObjectExpression',
  2938. properties: [{
  2939. type: 'Property',
  2940. key: {
  2941. type: 'Identifier',
  2942. name: 'set',
  2943. range: [6, 9],
  2944. loc: {
  2945. start: { line: 1, column: 6 },
  2946. end: { line: 1, column: 9 }
  2947. }
  2948. },
  2949. value: {
  2950. type: 'Literal',
  2951. value: 43,
  2952. raw: '43',
  2953. range: [11, 13],
  2954. loc: {
  2955. start: { line: 1, column: 11 },
  2956. end: { line: 1, column: 13 }
  2957. }
  2958. },
  2959. kind: 'init',
  2960. range: [6, 13],
  2961. loc: {
  2962. start: { line: 1, column: 6 },
  2963. end: { line: 1, column: 13 }
  2964. }
  2965. }],
  2966. range: [4, 15],
  2967. loc: {
  2968. start: { line: 1, column: 4 },
  2969. end: { line: 1, column: 15 }
  2970. }
  2971. },
  2972. range: [0, 15],
  2973. loc: {
  2974. start: { line: 1, column: 0 },
  2975. end: { line: 1, column: 15 }
  2976. }
  2977. },
  2978. range: [0, 15],
  2979. loc: {
  2980. start: { line: 1, column: 0 },
  2981. end: { line: 1, column: 15 }
  2982. }
  2983. }
  2984. },
  2985. 'Comments': {
  2986. '/* block comment */ 42': {
  2987. type: 'ExpressionStatement',
  2988. expression: {
  2989. type: 'Literal',
  2990. value: 42,
  2991. raw: '42',
  2992. range: [20, 22],
  2993. loc: {
  2994. start: { line: 1, column: 20 },
  2995. end: { line: 1, column: 22 }
  2996. }
  2997. },
  2998. range: [20, 22],
  2999. loc: {
  3000. start: { line: 1, column: 20 },
  3001. end: { line: 1, column: 22 }
  3002. }
  3003. },
  3004. '42 /*The*/ /*Answer*/': {
  3005. type: 'Program',
  3006. body: [{
  3007. type: 'ExpressionStatement',
  3008. expression: {
  3009. type: 'Literal',
  3010. value: 42,
  3011. raw: '42',
  3012. range: [0, 2],
  3013. loc: {
  3014. start: { line: 1, column: 0 },
  3015. end: { line: 1, column: 2 }
  3016. }
  3017. },
  3018. range: [0, 21],
  3019. loc: {
  3020. start: { line: 1, column: 0 },
  3021. end: { line: 1, column: 21 }
  3022. }
  3023. }],
  3024. range: [0, 21],
  3025. loc: {
  3026. start: { line: 1, column: 0 },
  3027. end: { line: 1, column: 21 }
  3028. },
  3029. comments: [{
  3030. type: 'Block',
  3031. value: 'The',
  3032. range: [3, 10],
  3033. loc: {
  3034. start: { line: 1, column: 3 },
  3035. end: { line: 1, column: 10 }
  3036. }
  3037. }, {
  3038. type: 'Block',
  3039. value: 'Answer',
  3040. range: [11, 21],
  3041. loc: {
  3042. start: { line: 1, column: 11 },
  3043. end: { line: 1, column: 21 }
  3044. }
  3045. }]
  3046. },
  3047. '42 /*the*/ /*answer*/': {
  3048. type: 'Program',
  3049. body: [{
  3050. type: 'ExpressionStatement',
  3051. expression: {
  3052. type: 'Literal',
  3053. value: 42,
  3054. raw: '42',
  3055. range: [0, 2]
  3056. },
  3057. range: [0, 21]
  3058. }],
  3059. range: [0, 21],
  3060. comments: [{
  3061. type: 'Block',
  3062. value: 'the',
  3063. range: [3, 10]
  3064. }, {
  3065. type: 'Block',
  3066. value: 'answer',
  3067. range: [11, 21]
  3068. }]
  3069. },
  3070. '/* multiline\ncomment\nshould\nbe\nignored */ 42': {
  3071. type: 'ExpressionStatement',
  3072. expression: {
  3073. type: 'Literal',
  3074. value: 42,
  3075. raw: '42',
  3076. range: [42, 44],
  3077. loc: {
  3078. start: { line: 5, column: 11 },
  3079. end: { line: 5, column: 13 }
  3080. }
  3081. },
  3082. range: [42, 44],
  3083. loc: {
  3084. start: { line: 5, column: 11 },
  3085. end: { line: 5, column: 13 }
  3086. }
  3087. },
  3088. '/*a\r\nb*/ 42': {
  3089. type: 'Program',
  3090. body: [{
  3091. type: 'ExpressionStatement',
  3092. expression: {
  3093. type: 'Literal',
  3094. value: 42,
  3095. raw: '42',
  3096. range: [9, 11],
  3097. loc: {
  3098. start: { line: 2, column: 4 },
  3099. end: { line: 2, column: 6 }
  3100. }
  3101. },
  3102. range: [9, 11],
  3103. loc: {
  3104. start: { line: 2, column: 4 },
  3105. end: { line: 2, column: 6 }
  3106. }
  3107. }],
  3108. range: [9, 11],
  3109. loc: {
  3110. start: { line: 2, column: 4 },
  3111. end: { line: 2, column: 6 }
  3112. },
  3113. comments: [{
  3114. type: 'Block',
  3115. value: 'a\r\nb',
  3116. range: [0, 8],
  3117. loc: {
  3118. start: { line: 1, column: 0 },
  3119. end: { line: 2, column: 3 }
  3120. }
  3121. }]
  3122. },
  3123. '/*a\rb*/ 42': {
  3124. type: 'Program',
  3125. body: [{
  3126. type: 'ExpressionStatement',
  3127. expression: {
  3128. type: 'Literal',
  3129. value: 42,
  3130. raw: '42',
  3131. range: [8, 10],
  3132. loc: {
  3133. start: { line: 2, column: 4 },
  3134. end: { line: 2, column: 6 }
  3135. }
  3136. },
  3137. range: [8, 10],
  3138. loc: {
  3139. start: { line: 2, column: 4 },
  3140. end: { line: 2, column: 6 }
  3141. }
  3142. }],
  3143. range: [8, 10],
  3144. loc: {
  3145. start: { line: 2, column: 4 },
  3146. end: { line: 2, column: 6 }
  3147. },
  3148. comments: [{
  3149. type: 'Block',
  3150. value: 'a\rb',
  3151. range: [0, 7],
  3152. loc: {
  3153. start: { line: 1, column: 0 },
  3154. end: { line: 2, column: 3 }
  3155. }
  3156. }]
  3157. },
  3158. '/*a\nb*/ 42': {
  3159. type: 'Program',
  3160. body: [{
  3161. type: 'ExpressionStatement',
  3162. expression: {
  3163. type: 'Literal',
  3164. value: 42,
  3165. raw: '42',
  3166. range: [8, 10],
  3167. loc: {
  3168. start: { line: 2, column: 4 },
  3169. end: { line: 2, column: 6 }
  3170. }
  3171. },
  3172. range: [8, 10],
  3173. loc: {
  3174. start: { line: 2, column: 4 },
  3175. end: { line: 2, column: 6 }
  3176. }
  3177. }],
  3178. range: [8, 10],
  3179. loc: {
  3180. start: { line: 2, column: 4 },
  3181. end: { line: 2, column: 6 }
  3182. },
  3183. comments: [{
  3184. type: 'Block',
  3185. value: 'a\nb',
  3186. range: [0, 7],
  3187. loc: {
  3188. start: { line: 1, column: 0 },
  3189. end: { line: 2, column: 3 }
  3190. }
  3191. }]
  3192. },
  3193. '/*a\nc*/ 42': {
  3194. type: 'Program',
  3195. body: [{
  3196. type: 'ExpressionStatement',
  3197. expression: {
  3198. type: 'Literal',
  3199. value: 42,
  3200. raw: '42',
  3201. loc: {
  3202. start: { line: 2, column: 4 },
  3203. end: { line: 2, column: 6 }
  3204. }
  3205. },
  3206. loc: {
  3207. start: { line: 2, column: 4 },
  3208. end: { line: 2, column: 6 }
  3209. }
  3210. }],
  3211. loc: {
  3212. start: { line: 2, column: 4 },
  3213. end: { line: 2, column: 6 }
  3214. },
  3215. comments: [{
  3216. type: 'Block',
  3217. value: 'a\nc',
  3218. loc: {
  3219. start: { line: 1, column: 0 },
  3220. end: { line: 2, column: 3 }
  3221. }
  3222. }]
  3223. },
  3224. '// line comment\n42': {
  3225. type: 'ExpressionStatement',
  3226. expression: {
  3227. type: 'Literal',
  3228. value: 42,
  3229. raw: '42',
  3230. range: [16, 18],
  3231. loc: {
  3232. start: { line: 2, column: 0 },
  3233. end: { line: 2, column: 2 }
  3234. }
  3235. },
  3236. range: [16, 18],
  3237. loc: {
  3238. start: { line: 2, column: 0 },
  3239. end: { line: 2, column: 2 }
  3240. }
  3241. },
  3242. '42 // line comment': {
  3243. type: 'Program',
  3244. body: [{
  3245. type: 'ExpressionStatement',
  3246. expression: {
  3247. type: 'Literal',
  3248. value: 42,
  3249. raw: '42',
  3250. range: [0, 2],
  3251. loc: {
  3252. start: { line: 1, column: 0 },
  3253. end: { line: 1, column: 2 }
  3254. }
  3255. },
  3256. range: [0, 18],
  3257. loc: {
  3258. start: { line: 1, column: 0 },
  3259. end: { line: 1, column: 18 }
  3260. }
  3261. }],
  3262. range: [0, 18],
  3263. loc: {
  3264. start: { line: 1, column: 0 },
  3265. end: { line: 1, column: 18 }
  3266. },
  3267. comments: [{
  3268. type: 'Line',
  3269. value: ' line comment',
  3270. range: [3, 18],
  3271. loc: {
  3272. start: { line: 1, column: 3 },
  3273. end: { line: 1, column: 18 }
  3274. }
  3275. }]
  3276. },
  3277. '// Hello, world!\n42': {
  3278. type: 'Program',
  3279. body: [{
  3280. type: 'ExpressionStatement',
  3281. expression: {
  3282. type: 'Literal',
  3283. value: 42,
  3284. raw: '42',
  3285. range: [17, 19],
  3286. loc: {
  3287. start: { line: 2, column: 0 },
  3288. end: { line: 2, column: 2 }
  3289. }
  3290. },
  3291. range: [17, 19],
  3292. loc: {
  3293. start: { line: 2, column: 0 },
  3294. end: { line: 2, column: 2 }
  3295. }
  3296. }],
  3297. range: [17, 19],
  3298. loc: {
  3299. start: { line: 2, column: 0 },
  3300. end: { line: 2, column: 2 }
  3301. },
  3302. comments: [{
  3303. type: 'Line',
  3304. value: ' Hello, world!',
  3305. range: [0, 16],
  3306. loc: {
  3307. start: { line: 1, column: 0 },
  3308. end: { line: 1, column: 16 }
  3309. }
  3310. }]
  3311. },
  3312. '// Hello, world!\n': {
  3313. type: 'Program',
  3314. body: [],
  3315. range: [17, 17],
  3316. loc: {
  3317. start: { line: 2, column: 0 },
  3318. end: { line: 2, column: 0 }
  3319. },
  3320. comments: [{
  3321. type: 'Line',
  3322. value: ' Hello, world!',
  3323. range: [0, 16],
  3324. loc: {
  3325. start: { line: 1, column: 0 },
  3326. end: { line: 1, column: 16 }
  3327. }
  3328. }]
  3329. },
  3330. '// Hallo, world!\n': {
  3331. type: 'Program',
  3332. body: [],
  3333. loc: {
  3334. start: { line: 2, column: 0 },
  3335. end: { line: 2, column: 0 }
  3336. },
  3337. comments: [{
  3338. type: 'Line',
  3339. value: ' Hallo, world!',
  3340. loc: {
  3341. start: { line: 1, column: 0 },
  3342. end: { line: 1, column: 16 }
  3343. }
  3344. }]
  3345. },
  3346. '//\n42': {
  3347. type: 'Program',
  3348. body: [{
  3349. type: 'ExpressionStatement',
  3350. expression: {
  3351. type: 'Literal',
  3352. value: 42,
  3353. raw: '42',
  3354. range: [3, 5],
  3355. loc: {
  3356. start: { line: 2, column: 0 },
  3357. end: { line: 2, column: 2 }
  3358. }
  3359. },
  3360. range: [3, 5],
  3361. loc: {
  3362. start: { line: 2, column: 0 },
  3363. end: { line: 2, column: 2 }
  3364. }
  3365. }],
  3366. range: [3, 5],
  3367. loc: {
  3368. start: { line: 2, column: 0 },
  3369. end: { line: 2, column: 2 }
  3370. },
  3371. comments: [{
  3372. type: 'Line',
  3373. value: '',
  3374. range: [0, 2],
  3375. loc: {
  3376. start: { line: 1, column: 0 },
  3377. end: { line: 1, column: 2 }
  3378. }
  3379. }]
  3380. },
  3381. '//': {
  3382. type: 'Program',
  3383. body: [],
  3384. range: [2, 2],
  3385. loc: {
  3386. start: { line: 1, column: 2 },
  3387. end: { line: 1, column: 2 }
  3388. },
  3389. comments: [{
  3390. type: 'Line',
  3391. value: '',
  3392. range: [0, 2],
  3393. loc: {
  3394. start: { line: 1, column: 0 },
  3395. end: { line: 1, column: 2 }
  3396. }
  3397. }]
  3398. },
  3399. '// ': {
  3400. type: 'Program',
  3401. body: [],
  3402. range: [3, 3],
  3403. comments: [{
  3404. type: 'Line',
  3405. value: ' ',
  3406. range: [0, 3]
  3407. }]
  3408. },
  3409. '/**/42': {
  3410. type: 'Program',
  3411. body: [{
  3412. type: 'ExpressionStatement',
  3413. expression: {
  3414. type: 'Literal',
  3415. value: 42,
  3416. raw: '42',
  3417. range: [4, 6],
  3418. loc: {
  3419. start: { line: 1, column: 4 },
  3420. end: { line: 1, column: 6 }
  3421. }
  3422. },
  3423. range: [4, 6],
  3424. loc: {
  3425. start: { line: 1, column: 4 },
  3426. end: { line: 1, column: 6 }
  3427. }
  3428. }],
  3429. range: [4, 6],
  3430. loc: {
  3431. start: { line: 1, column: 4 },
  3432. end: { line: 1, column: 6 }
  3433. },
  3434. comments: [{
  3435. type: 'Block',
  3436. value: '',
  3437. range: [0, 4],
  3438. loc: {
  3439. start: { line: 1, column: 0 },
  3440. end: { line: 1, column: 4 }
  3441. }
  3442. }]
  3443. },
  3444. '// Hello, world!\n\n// Another hello\n42': {
  3445. type: 'Program',
  3446. body: [{
  3447. type: 'ExpressionStatement',
  3448. expression: {
  3449. type: 'Literal',
  3450. value: 42,
  3451. raw: '42',
  3452. range: [37, 39],
  3453. loc: {
  3454. start: { line: 4, column: 0 },
  3455. end: { line: 4, column: 2 }
  3456. }
  3457. },
  3458. range: [37, 39],
  3459. loc: {
  3460. start: { line: 4, column: 0 },
  3461. end: { line: 4, column: 2 }
  3462. }
  3463. }],
  3464. range: [37, 39],
  3465. loc: {
  3466. start: { line: 4, column: 0 },
  3467. end: { line: 4, column: 2 }
  3468. },
  3469. comments: [{
  3470. type: 'Line',
  3471. value: ' Hello, world!',
  3472. range: [0, 16],
  3473. loc: {
  3474. start: { line: 1, column: 0 },
  3475. end: { line: 1, column: 16 }
  3476. }
  3477. }, {
  3478. type: 'Line',
  3479. value: ' Another hello',
  3480. range: [18, 36],
  3481. loc: {
  3482. start: { line: 3, column: 0 },
  3483. end: { line: 3, column: 18 }
  3484. }
  3485. }]
  3486. },
  3487. 'if (x) { // Some comment\ndoThat(); }': {
  3488. type: 'Program',
  3489. body: [{
  3490. type: 'IfStatement',
  3491. test: {
  3492. type: 'Identifier',
  3493. name: 'x',
  3494. range: [4, 5],
  3495. loc: {
  3496. start: { line: 1, column: 4 },
  3497. end: { line: 1, column: 5 }
  3498. }
  3499. },
  3500. consequent: {
  3501. type: 'BlockStatement',
  3502. body: [{
  3503. type: 'ExpressionStatement',
  3504. expression: {
  3505. type: 'CallExpression',
  3506. callee: {
  3507. type: 'Identifier',
  3508. name: 'doThat',
  3509. range: [25, 31],
  3510. loc: {
  3511. start: { line: 2, column: 0 },
  3512. end: { line: 2, column: 6 }
  3513. }
  3514. },
  3515. 'arguments': [],
  3516. range: [25, 33],
  3517. loc: {
  3518. start: { line: 2, column: 0 },
  3519. end: { line: 2, column: 8 }
  3520. }
  3521. },
  3522. range: [25, 34],
  3523. loc: {
  3524. start: { line: 2, column: 0 },
  3525. end: { line: 2, column: 9 }
  3526. }
  3527. }],
  3528. range: [7, 36],
  3529. loc: {
  3530. start: { line: 1, column: 7 },
  3531. end: { line: 2, column: 11 }
  3532. }
  3533. },
  3534. alternate: null,
  3535. range: [0, 36],
  3536. loc: {
  3537. start: { line: 1, column: 0 },
  3538. end: { line: 2, column: 11 }
  3539. }
  3540. }],
  3541. range: [0, 36],
  3542. loc: {
  3543. start: { line: 1, column: 0 },
  3544. end: { line: 2, column: 11 }
  3545. },
  3546. comments: [{
  3547. type: 'Line',
  3548. value: ' Some comment',
  3549. range: [9, 24],
  3550. loc: {
  3551. start: { line: 1, column: 9 },
  3552. end: { line: 1, column: 24 }
  3553. }
  3554. }]
  3555. },
  3556. 'switch (answer) { case 42: /* perfect */ bingo() }': {
  3557. type: 'Program',
  3558. body: [{
  3559. type: 'SwitchStatement',
  3560. discriminant: {
  3561. type: 'Identifier',
  3562. name: 'answer',
  3563. range: [8, 14],
  3564. loc: {
  3565. start: { line: 1, column: 8 },
  3566. end: { line: 1, column: 14 }
  3567. }
  3568. },
  3569. cases: [{
  3570. type: 'SwitchCase',
  3571. test: {
  3572. type: 'Literal',
  3573. value: 42,
  3574. raw: '42',
  3575. range: [23, 25],
  3576. loc: {
  3577. start: { line: 1, column: 23 },
  3578. end: { line: 1, column: 25 }
  3579. }
  3580. },
  3581. consequent: [{
  3582. type: 'ExpressionStatement',
  3583. expression: {
  3584. type: 'CallExpression',
  3585. callee: {
  3586. type: 'Identifier',
  3587. name: 'bingo',
  3588. range: [41, 46],
  3589. loc: {
  3590. start: { line: 1, column: 41 },
  3591. end: { line: 1, column: 46 }
  3592. }
  3593. },
  3594. 'arguments': [],
  3595. range: [41, 48],
  3596. loc: {
  3597. start: { line: 1, column: 41 },
  3598. end: { line: 1, column: 48 }
  3599. }
  3600. },
  3601. range: [41, 49],
  3602. loc: {
  3603. start: { line: 1, column: 41 },
  3604. end: { line: 1, column: 49 }
  3605. }
  3606. }],
  3607. range: [18, 49],
  3608. loc: {
  3609. start: { line: 1, column: 18 },
  3610. end: { line: 1, column: 49 }
  3611. }
  3612. }],
  3613. range: [0, 50],
  3614. loc: {
  3615. start: { line: 1, column: 0 },
  3616. end: { line: 1, column: 50 }
  3617. }
  3618. }],
  3619. range: [0, 50],
  3620. loc: {
  3621. start: { line: 1, column: 0 },
  3622. end: { line: 1, column: 50 }
  3623. },
  3624. comments: [{
  3625. type: 'Block',
  3626. value: ' perfect ',
  3627. range: [27, 40],
  3628. loc: {
  3629. start: { line: 1, column: 27 },
  3630. end: { line: 1, column: 40 }
  3631. }
  3632. }]
  3633. }
  3634. },
  3635. 'Numeric Literals': {
  3636. '0': {
  3637. type: 'ExpressionStatement',
  3638. expression: {
  3639. type: 'Literal',
  3640. value: 0,
  3641. raw: '0',
  3642. range: [0, 1],
  3643. loc: {
  3644. start: { line: 1, column: 0 },
  3645. end: { line: 1, column: 1 }
  3646. }
  3647. },
  3648. range: [0, 1],
  3649. loc: {
  3650. start: { line: 1, column: 0 },
  3651. end: { line: 1, column: 1 }
  3652. }
  3653. },
  3654. '42': {
  3655. type: 'ExpressionStatement',
  3656. expression: {
  3657. type: 'Literal',
  3658. value: 42,
  3659. raw: '42',
  3660. range: [0, 2],
  3661. loc: {
  3662. start: { line: 1, column: 0 },
  3663. end: { line: 1, column: 2 }
  3664. }
  3665. },
  3666. range: [0, 2],
  3667. loc: {
  3668. start: { line: 1, column: 0 },
  3669. end: { line: 1, column: 2 }
  3670. }
  3671. },
  3672. '3': {
  3673. type: 'Program',
  3674. body: [{
  3675. type: 'ExpressionStatement',
  3676. expression: {
  3677. type: 'Literal',
  3678. value: 3,
  3679. raw: '3',
  3680. range: [0, 1]
  3681. },
  3682. range: [0, 1]
  3683. }],
  3684. range: [0, 1],
  3685. tokens: [{
  3686. type: 'Numeric',
  3687. value: '3',
  3688. range: [0, 1]
  3689. }]
  3690. },
  3691. '5': {
  3692. type: 'Program',
  3693. body: [{
  3694. type: 'ExpressionStatement',
  3695. expression: {
  3696. type: 'Literal',
  3697. value: 5,
  3698. raw: '5',
  3699. loc: {
  3700. start: { line: 1, column: 0 },
  3701. end: { line: 1, column: 1 }
  3702. }
  3703. },
  3704. loc: {
  3705. start: { line: 1, column: 0 },
  3706. end: { line: 1, column: 1 }
  3707. }
  3708. }],
  3709. loc: {
  3710. start: { line: 1, column: 0 },
  3711. end: { line: 1, column: 1 }
  3712. },
  3713. tokens: [{
  3714. type: 'Numeric',
  3715. value: '5',
  3716. loc: {
  3717. start: { line: 1, column: 0 },
  3718. end: { line: 1, column: 1 }
  3719. }
  3720. }]
  3721. },
  3722. '.14': {
  3723. type: 'ExpressionStatement',
  3724. expression: {
  3725. type: 'Literal',
  3726. value: 0.14,
  3727. raw: '.14',
  3728. range: [0, 3],
  3729. loc: {
  3730. start: { line: 1, column: 0 },
  3731. end: { line: 1, column: 3 }
  3732. }
  3733. },
  3734. range: [0, 3],
  3735. loc: {
  3736. start: { line: 1, column: 0 },
  3737. end: { line: 1, column: 3 }
  3738. }
  3739. },
  3740. '3.14159': {
  3741. type: 'ExpressionStatement',
  3742. expression: {
  3743. type: 'Literal',
  3744. value: 3.14159,
  3745. raw: '3.14159',
  3746. range: [0, 7],
  3747. loc: {
  3748. start: { line: 1, column: 0 },
  3749. end: { line: 1, column: 7 }
  3750. }
  3751. },
  3752. range: [0, 7],
  3753. loc: {
  3754. start: { line: 1, column: 0 },
  3755. end: { line: 1, column: 7 }
  3756. }
  3757. },
  3758. '6.02214179e+23': {
  3759. type: 'ExpressionStatement',
  3760. expression: {
  3761. type: 'Literal',
  3762. value: 6.02214179e+23,
  3763. raw: '6.02214179e+23',
  3764. range: [0, 14],
  3765. loc: {
  3766. start: { line: 1, column: 0 },
  3767. end: { line: 1, column: 14 }
  3768. }
  3769. },
  3770. range: [0, 14],
  3771. loc: {
  3772. start: { line: 1, column: 0 },
  3773. end: { line: 1, column: 14 }
  3774. }
  3775. },
  3776. '1.492417830e-10': {
  3777. type: 'ExpressionStatement',
  3778. expression: {
  3779. type: 'Literal',
  3780. value: 1.49241783e-10,
  3781. raw: '1.492417830e-10',
  3782. range: [0, 15],
  3783. loc: {
  3784. start: { line: 1, column: 0 },
  3785. end: { line: 1, column: 15 }
  3786. }
  3787. },
  3788. range: [0, 15],
  3789. loc: {
  3790. start: { line: 1, column: 0 },
  3791. end: { line: 1, column: 15 }
  3792. }
  3793. },
  3794. '0x0': {
  3795. type: 'ExpressionStatement',
  3796. expression: {
  3797. type: 'Literal',
  3798. value: 0,
  3799. raw: '0x0',
  3800. range: [0, 3],
  3801. loc: {
  3802. start: { line: 1, column: 0 },
  3803. end: { line: 1, column: 3 }
  3804. }
  3805. },
  3806. range: [0, 3],
  3807. loc: {
  3808. start: { line: 1, column: 0 },
  3809. end: { line: 1, column: 3 }
  3810. }
  3811. },
  3812. '0e+100': {
  3813. type: 'ExpressionStatement',
  3814. expression: {
  3815. type: 'Literal',
  3816. value: 0,
  3817. raw: '0e+100',
  3818. range: [0, 6],
  3819. loc: {
  3820. start: { line: 1, column: 0 },
  3821. end: { line: 1, column: 6 }
  3822. }
  3823. },
  3824. range: [0, 6],
  3825. loc: {
  3826. start: { line: 1, column: 0 },
  3827. end: { line: 1, column: 6 }
  3828. }
  3829. },
  3830. '0xabc': {
  3831. type: 'ExpressionStatement',
  3832. expression: {
  3833. type: 'Literal',
  3834. value: 0xabc,
  3835. raw: '0xabc',
  3836. range: [0, 5],
  3837. loc: {
  3838. start: { line: 1, column: 0 },
  3839. end: { line: 1, column: 5 }
  3840. }
  3841. },
  3842. range: [0, 5],
  3843. loc: {
  3844. start: { line: 1, column: 0 },
  3845. end: { line: 1, column: 5 }
  3846. }
  3847. },
  3848. '0xdef': {
  3849. type: 'ExpressionStatement',
  3850. expression: {
  3851. type: 'Literal',
  3852. value: 0xdef,
  3853. raw: '0xdef',
  3854. range: [0, 5],
  3855. loc: {
  3856. start: { line: 1, column: 0 },
  3857. end: { line: 1, column: 5 }
  3858. }
  3859. },
  3860. range: [0, 5],
  3861. loc: {
  3862. start: { line: 1, column: 0 },
  3863. end: { line: 1, column: 5 }
  3864. }
  3865. },
  3866. '0X1A': {
  3867. type: 'ExpressionStatement',
  3868. expression: {
  3869. type: 'Literal',
  3870. value: 0x1A,
  3871. raw: '0X1A',
  3872. range: [0, 4],
  3873. loc: {
  3874. start: { line: 1, column: 0 },
  3875. end: { line: 1, column: 4 }
  3876. }
  3877. },
  3878. range: [0, 4],
  3879. loc: {
  3880. start: { line: 1, column: 0 },
  3881. end: { line: 1, column: 4 }
  3882. }
  3883. },
  3884. '0x10': {
  3885. type: 'ExpressionStatement',
  3886. expression: {
  3887. type: 'Literal',
  3888. value: 0x10,
  3889. raw: '0x10',
  3890. range: [0, 4],
  3891. loc: {
  3892. start: { line: 1, column: 0 },
  3893. end: { line: 1, column: 4 }
  3894. }
  3895. },
  3896. range: [0, 4],
  3897. loc: {
  3898. start: { line: 1, column: 0 },
  3899. end: { line: 1, column: 4 }
  3900. }
  3901. },
  3902. '0x100': {
  3903. type: 'ExpressionStatement',
  3904. expression: {
  3905. type: 'Literal',
  3906. value: 0x100,
  3907. raw: '0x100',
  3908. range: [0, 5],
  3909. loc: {
  3910. start: { line: 1, column: 0 },
  3911. end: { line: 1, column: 5 }
  3912. }
  3913. },
  3914. range: [0, 5],
  3915. loc: {
  3916. start: { line: 1, column: 0 },
  3917. end: { line: 1, column: 5 }
  3918. }
  3919. },
  3920. '0X04': {
  3921. type: 'ExpressionStatement',
  3922. expression: {
  3923. type: 'Literal',
  3924. value: 0X04,
  3925. raw: '0X04',
  3926. range: [0, 4],
  3927. loc: {
  3928. start: { line: 1, column: 0 },
  3929. end: { line: 1, column: 4 }
  3930. }
  3931. },
  3932. range: [0, 4],
  3933. loc: {
  3934. start: { line: 1, column: 0 },
  3935. end: { line: 1, column: 4 }
  3936. }
  3937. },
  3938. '02': {
  3939. type: 'ExpressionStatement',
  3940. expression: {
  3941. type: 'Literal',
  3942. value: 2,
  3943. raw: '02',
  3944. range: [0, 2],
  3945. loc: {
  3946. start: { line: 1, column: 0 },
  3947. end: { line: 1, column: 2 }
  3948. }
  3949. },
  3950. range: [0, 2],
  3951. loc: {
  3952. start: { line: 1, column: 0 },
  3953. end: { line: 1, column: 2 }
  3954. }
  3955. },
  3956. '012': {
  3957. type: 'ExpressionStatement',
  3958. expression: {
  3959. type: 'Literal',
  3960. value: 10,
  3961. raw: '012',
  3962. range: [0, 3],
  3963. loc: {
  3964. start: { line: 1, column: 0 },
  3965. end: { line: 1, column: 3 }
  3966. }
  3967. },
  3968. range: [0, 3],
  3969. loc: {
  3970. start: { line: 1, column: 0 },
  3971. end: { line: 1, column: 3 }
  3972. }
  3973. },
  3974. '0012': {
  3975. type: 'ExpressionStatement',
  3976. expression: {
  3977. type: 'Literal',
  3978. value: 10,
  3979. raw: '0012',
  3980. range: [0, 4],
  3981. loc: {
  3982. start: { line: 1, column: 0 },
  3983. end: { line: 1, column: 4 }
  3984. }
  3985. },
  3986. range: [0, 4],
  3987. loc: {
  3988. start: { line: 1, column: 0 },
  3989. end: { line: 1, column: 4 }
  3990. }
  3991. }
  3992. },
  3993. 'String Literals': {
  3994. '"Hello"': {
  3995. type: 'ExpressionStatement',
  3996. expression: {
  3997. type: 'Literal',
  3998. value: 'Hello',
  3999. raw: '"Hello"',
  4000. range: [0, 7],
  4001. loc: {
  4002. start: { line: 1, column: 0 },
  4003. end: { line: 1, column: 7 }
  4004. }
  4005. },
  4006. range: [0, 7],
  4007. loc: {
  4008. start: { line: 1, column: 0 },
  4009. end: { line: 1, column: 7 }
  4010. }
  4011. },
  4012. '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"': {
  4013. type: 'ExpressionStatement',
  4014. expression: {
  4015. type: 'Literal',
  4016. value: '\n\r\t\x0B\b\f\\\'"\x00',
  4017. raw: '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"',
  4018. range: [0, 22],
  4019. loc: {
  4020. start: { line: 1, column: 0 },
  4021. end: { line: 1, column: 22 }
  4022. }
  4023. },
  4024. range: [0, 22],
  4025. loc: {
  4026. start: { line: 1, column: 0 },
  4027. end: { line: 1, column: 22 }
  4028. }
  4029. },
  4030. '"\\u0061"': {
  4031. type: 'ExpressionStatement',
  4032. expression: {
  4033. type: 'Literal',
  4034. value: 'a',
  4035. raw: '"\\u0061"',
  4036. range: [0, 8],
  4037. loc: {
  4038. start: { line: 1, column: 0 },
  4039. end: { line: 1, column: 8 }
  4040. }
  4041. },
  4042. range: [0, 8],
  4043. loc: {
  4044. start: { line: 1, column: 0 },
  4045. end: { line: 1, column: 8 }
  4046. }
  4047. },
  4048. '"\\x61"': {
  4049. type: 'ExpressionStatement',
  4050. expression: {
  4051. type: 'Literal',
  4052. value: 'a',
  4053. raw: '"\\x61"',
  4054. range: [0, 6],
  4055. loc: {
  4056. start: { line: 1, column: 0 },
  4057. end: { line: 1, column: 6 }
  4058. }
  4059. },
  4060. range: [0, 6],
  4061. loc: {
  4062. start: { line: 1, column: 0 },
  4063. end: { line: 1, column: 6 }
  4064. }
  4065. },
  4066. '"\\u00"': {
  4067. type: 'ExpressionStatement',
  4068. expression: {
  4069. type: 'Literal',
  4070. value: 'u00',
  4071. raw: '"\\u00"',
  4072. range: [0, 6],
  4073. loc: {
  4074. start: { line: 1, column: 0 },
  4075. end: { line: 1, column: 6 }
  4076. }
  4077. },
  4078. range: [0, 6],
  4079. loc: {
  4080. start: { line: 1, column: 0 },
  4081. end: { line: 1, column: 6 }
  4082. }
  4083. },
  4084. '"\\xt"': {
  4085. type: 'ExpressionStatement',
  4086. expression: {
  4087. type: 'Literal',
  4088. value: 'xt',
  4089. raw: '"\\xt"',
  4090. range: [0, 5],
  4091. loc: {
  4092. start: { line: 1, column: 0 },
  4093. end: { line: 1, column: 5 }
  4094. }
  4095. },
  4096. range: [0, 5],
  4097. loc: {
  4098. start: { line: 1, column: 0 },
  4099. end: { line: 1, column: 5 }
  4100. }
  4101. },
  4102. '"Hello\\nworld"': {
  4103. type: 'ExpressionStatement',
  4104. expression: {
  4105. type: 'Literal',
  4106. value: 'Hello\nworld',
  4107. raw: '"Hello\\nworld"',
  4108. range: [0, 14],
  4109. loc: {
  4110. start: { line: 1, column: 0 },
  4111. end: { line: 1, column: 14 }
  4112. }
  4113. },
  4114. range: [0, 14],
  4115. loc: {
  4116. start: { line: 1, column: 0 },
  4117. end: { line: 1, column: 14 }
  4118. }
  4119. },
  4120. '"Hello\\\nworld"': {
  4121. type: 'ExpressionStatement',
  4122. expression: {
  4123. type: 'Literal',
  4124. value: 'Helloworld',
  4125. raw: '"Hello\\\nworld"',
  4126. range: [0, 14],
  4127. loc: {
  4128. start: { line: 1, column: 0 },
  4129. end: { line: 2, column: 14 }
  4130. }
  4131. },
  4132. range: [0, 14],
  4133. loc: {
  4134. start: { line: 1, column: 0 },
  4135. end: { line: 2, column: 14 }
  4136. }
  4137. },
  4138. '"Hello\\02World"': {
  4139. type: 'ExpressionStatement',
  4140. expression: {
  4141. type: 'Literal',
  4142. value: 'Hello\u0002World',
  4143. raw: '"Hello\\02World"',
  4144. range: [0, 15],
  4145. loc: {
  4146. start: { line: 1, column: 0 },
  4147. end: { line: 1, column: 15 }
  4148. }
  4149. },
  4150. range: [0, 15],
  4151. loc: {
  4152. start: { line: 1, column: 0 },
  4153. end: { line: 1, column: 15 }
  4154. }
  4155. },
  4156. '"Hello\\012World"': {
  4157. type: 'ExpressionStatement',
  4158. expression: {
  4159. type: 'Literal',
  4160. value: 'Hello\u000AWorld',
  4161. raw: '"Hello\\012World"',
  4162. range: [0, 16],
  4163. loc: {
  4164. start: { line: 1, column: 0 },
  4165. end: { line: 1, column: 16 }
  4166. }
  4167. },
  4168. range: [0, 16],
  4169. loc: {
  4170. start: { line: 1, column: 0 },
  4171. end: { line: 1, column: 16 }
  4172. }
  4173. },
  4174. '"Hello\\122World"': {
  4175. type: 'ExpressionStatement',
  4176. expression: {
  4177. type: 'Literal',
  4178. value: 'Hello\122World',
  4179. raw: '"Hello\\122World"',
  4180. range: [0, 16],
  4181. loc: {
  4182. start: { line: 1, column: 0 },
  4183. end: { line: 1, column: 16 }
  4184. }
  4185. },
  4186. range: [0, 16],
  4187. loc: {
  4188. start: { line: 1, column: 0 },
  4189. end: { line: 1, column: 16 }
  4190. }
  4191. },
  4192. '"Hello\\0122World"': {
  4193. type: 'ExpressionStatement',
  4194. expression: {
  4195. type: 'Literal',
  4196. value: 'Hello\u000A2World',
  4197. raw: '"Hello\\0122World"',
  4198. range: [0, 17],
  4199. loc: {
  4200. start: { line: 1, column: 0 },
  4201. end: { line: 1, column: 17 }
  4202. }
  4203. },
  4204. range: [0, 17],
  4205. loc: {
  4206. start: { line: 1, column: 0 },
  4207. end: { line: 1, column: 17 }
  4208. }
  4209. },
  4210. '"Hello\\312World"': {
  4211. type: 'ExpressionStatement',
  4212. expression: {
  4213. type: 'Literal',
  4214. value: 'Hello\u00CAWorld',
  4215. raw: '"Hello\\312World"',
  4216. range: [0, 16],
  4217. loc: {
  4218. start: { line: 1, column: 0 },
  4219. end: { line: 1, column: 16 }
  4220. }
  4221. },
  4222. range: [0, 16],
  4223. loc: {
  4224. start: { line: 1, column: 0 },
  4225. end: { line: 1, column: 16 }
  4226. }
  4227. },
  4228. '"Hello\\412World"': {
  4229. type: 'ExpressionStatement',
  4230. expression: {
  4231. type: 'Literal',
  4232. value: 'Hello\412World',
  4233. raw: '"Hello\\412World"',
  4234. range: [0, 16],
  4235. loc: {
  4236. start: { line: 1, column: 0 },
  4237. end: { line: 1, column: 16 }
  4238. }
  4239. },
  4240. range: [0, 16],
  4241. loc: {
  4242. start: { line: 1, column: 0 },
  4243. end: { line: 1, column: 16 }
  4244. }
  4245. },
  4246. '"Hello\\812World"': {
  4247. type: 'ExpressionStatement',
  4248. expression: {
  4249. type: 'Literal',
  4250. value: 'Hello812World',
  4251. raw: '"Hello\\812World"',
  4252. range: [0, 16],
  4253. loc: {
  4254. start: { line: 1, column: 0 },
  4255. end: { line: 1, column: 16 }
  4256. }
  4257. },
  4258. range: [0, 16],
  4259. loc: {
  4260. start: { line: 1, column: 0 },
  4261. end: { line: 1, column: 16 }
  4262. }
  4263. },
  4264. '"Hello\\712World"': {
  4265. type: 'ExpressionStatement',
  4266. expression: {
  4267. type: 'Literal',
  4268. value: 'Hello\712World',
  4269. raw: '"Hello\\712World"',
  4270. range: [0, 16],
  4271. loc: {
  4272. start: { line: 1, column: 0 },
  4273. end: { line: 1, column: 16 }
  4274. }
  4275. },
  4276. range: [0, 16],
  4277. loc: {
  4278. start: { line: 1, column: 0 },
  4279. end: { line: 1, column: 16 }
  4280. }
  4281. },
  4282. '"Hello\\0World"': {
  4283. type: 'ExpressionStatement',
  4284. expression: {
  4285. type: 'Literal',
  4286. value: 'Hello\u0000World',
  4287. raw: '"Hello\\0World"',
  4288. range: [0, 14],
  4289. loc: {
  4290. start: { line: 1, column: 0 },
  4291. end: { line: 1, column: 14 }
  4292. }
  4293. },
  4294. range: [0, 14],
  4295. loc: {
  4296. start: { line: 1, column: 0 },
  4297. end: { line: 1, column: 14 }
  4298. }
  4299. },
  4300. '"Hello\\\r\nworld"': {
  4301. type: 'ExpressionStatement',
  4302. expression: {
  4303. type: 'Literal',
  4304. value: 'Helloworld',
  4305. raw: '"Hello\\\r\nworld"',
  4306. range: [0, 15],
  4307. loc: {
  4308. start: { line: 1, column: 0 },
  4309. end: { line: 2, column: 15 }
  4310. }
  4311. },
  4312. range: [0, 15],
  4313. loc: {
  4314. start: { line: 1, column: 0 },
  4315. end: { line: 2, column: 15 }
  4316. }
  4317. },
  4318. '"Hello\\1World"': {
  4319. type: 'ExpressionStatement',
  4320. expression: {
  4321. type: 'Literal',
  4322. value: 'Hello\u0001World',
  4323. raw: '"Hello\\1World"',
  4324. range: [0, 14],
  4325. loc: {
  4326. start: { line: 1, column: 0 },
  4327. end: { line: 1, column: 14 }
  4328. }
  4329. },
  4330. range: [0, 14],
  4331. loc: {
  4332. start: { line: 1, column: 0 },
  4333. end: { line: 1, column: 14 }
  4334. }
  4335. }
  4336. },
  4337. 'Regular Expression Literals': {
  4338. 'var x = /[a-z]/i': {
  4339. type: 'Program',
  4340. body: [{
  4341. type: 'VariableDeclaration',
  4342. declarations: [{
  4343. type: 'VariableDeclarator',
  4344. id: {
  4345. type: 'Identifier',
  4346. name: 'x',
  4347. range: [4, 5],
  4348. loc: {
  4349. start: { line: 1, column: 4 },
  4350. end: { line: 1, column: 5 }
  4351. }
  4352. },
  4353. init: {
  4354. type: 'Literal',
  4355. value: '/[a-z]/i',
  4356. raw: '/[a-z]/i',
  4357. range: [8, 16],
  4358. loc: {
  4359. start: { line: 1, column: 8 },
  4360. end: { line: 1, column: 16 }
  4361. }
  4362. },
  4363. range: [4, 16],
  4364. loc: {
  4365. start: { line: 1, column: 4 },
  4366. end: { line: 1, column: 16 }
  4367. }
  4368. }],
  4369. kind: 'var',
  4370. range: [0, 16],
  4371. loc: {
  4372. start: { line: 1, column: 0 },
  4373. end: { line: 1, column: 16 }
  4374. }
  4375. }],
  4376. range: [0, 16],
  4377. loc: {
  4378. start: { line: 1, column: 0 },
  4379. end: { line: 1, column: 16 }
  4380. },
  4381. tokens: [{
  4382. type: 'Keyword',
  4383. value: 'var',
  4384. range: [0, 3],
  4385. loc: {
  4386. start: { line: 1, column: 0 },
  4387. end: { line: 1, column: 3 }
  4388. }
  4389. }, {
  4390. type: 'Identifier',
  4391. value: 'x',
  4392. range: [4, 5],
  4393. loc: {
  4394. start: { line: 1, column: 4 },
  4395. end: { line: 1, column: 5 }
  4396. }
  4397. }, {
  4398. type: 'Punctuator',
  4399. value: '=',
  4400. range: [6, 7],
  4401. loc: {
  4402. start: { line: 1, column: 6 },
  4403. end: { line: 1, column: 7 }
  4404. }
  4405. }, {
  4406. type: 'RegularExpression',
  4407. value: '/[a-z]/i',
  4408. range: [8, 16],
  4409. loc: {
  4410. start: { line: 1, column: 8 },
  4411. end: { line: 1, column: 16 }
  4412. }
  4413. }]
  4414. },
  4415. 'var x = /[x-z]/i': {
  4416. type: 'Program',
  4417. body: [{
  4418. type: 'VariableDeclaration',
  4419. declarations: [{
  4420. type: 'VariableDeclarator',
  4421. id: {
  4422. type: 'Identifier',
  4423. name: 'x',
  4424. range: [4, 5]
  4425. },
  4426. init: {
  4427. type: 'Literal',
  4428. value: '/[x-z]/i',
  4429. raw: '/[x-z]/i',
  4430. range: [8, 16]
  4431. },
  4432. range: [4, 16]
  4433. }],
  4434. kind: 'var',
  4435. range: [0, 16]
  4436. }],
  4437. range: [0, 16],
  4438. tokens: [{
  4439. type: 'Keyword',
  4440. value: 'var',
  4441. range: [0, 3]
  4442. }, {
  4443. type: 'Identifier',
  4444. value: 'x',
  4445. range: [4, 5]
  4446. }, {
  4447. type: 'Punctuator',
  4448. value: '=',
  4449. range: [6, 7]
  4450. }, {
  4451. type: 'RegularExpression',
  4452. value: '/[x-z]/i',
  4453. range: [8, 16]
  4454. }]
  4455. },
  4456. 'var x = /[a-c]/i': {
  4457. type: 'Program',
  4458. body: [{
  4459. type: 'VariableDeclaration',
  4460. declarations: [{
  4461. type: 'VariableDeclarator',
  4462. id: {
  4463. type: 'Identifier',
  4464. name: 'x',
  4465. loc: {
  4466. start: { line: 1, column: 4 },
  4467. end: { line: 1, column: 5 }
  4468. }
  4469. },
  4470. init: {
  4471. type: 'Literal',
  4472. value: '/[a-c]/i',
  4473. raw: '/[a-c]/i',
  4474. loc: {
  4475. start: { line: 1, column: 8 },
  4476. end: { line: 1, column: 16 }
  4477. }
  4478. },
  4479. loc: {
  4480. start: { line: 1, column: 4 },
  4481. end: { line: 1, column: 16 }
  4482. }
  4483. }],
  4484. kind: 'var',
  4485. loc: {
  4486. start: { line: 1, column: 0 },
  4487. end: { line: 1, column: 16 }
  4488. }
  4489. }],
  4490. loc: {
  4491. start: { line: 1, column: 0 },
  4492. end: { line: 1, column: 16 }
  4493. },
  4494. tokens: [{
  4495. type: 'Keyword',
  4496. value: 'var',
  4497. loc: {
  4498. start: { line: 1, column: 0 },
  4499. end: { line: 1, column: 3 }
  4500. }
  4501. }, {
  4502. type: 'Identifier',
  4503. value: 'x',
  4504. loc: {
  4505. start: { line: 1, column: 4 },
  4506. end: { line: 1, column: 5 }
  4507. }
  4508. }, {
  4509. type: 'Punctuator',
  4510. value: '=',
  4511. loc: {
  4512. start: { line: 1, column: 6 },
  4513. end: { line: 1, column: 7 }
  4514. }
  4515. }, {
  4516. type: 'RegularExpression',
  4517. value: '/[a-c]/i',
  4518. loc: {
  4519. start: { line: 1, column: 8 },
  4520. end: { line: 1, column: 16 }
  4521. }
  4522. }]
  4523. },
  4524. 'var x = /[P QR]/i': {
  4525. type: 'Program',
  4526. body: [{
  4527. type: 'VariableDeclaration',
  4528. declarations: [{
  4529. type: 'VariableDeclarator',
  4530. id: {
  4531. type: 'Identifier',
  4532. name: 'x',
  4533. range: [4, 5],
  4534. loc: {
  4535. start: { line: 1, column: 4 },
  4536. end: { line: 1, column: 5 }
  4537. }
  4538. },
  4539. init: {
  4540. type: 'Literal',
  4541. value: '/[P QR]/i',
  4542. raw: '/[P QR]/i',
  4543. range: [8, 17],
  4544. loc: {
  4545. start: { line: 1, column: 8 },
  4546. end: { line: 1, column: 17 }
  4547. }
  4548. },
  4549. range: [4, 17],
  4550. loc: {
  4551. start: { line: 1, column: 4 },
  4552. end: { line: 1, column: 17 }
  4553. }
  4554. }],
  4555. kind: 'var',
  4556. range: [0, 17],
  4557. loc: {
  4558. start: { line: 1, column: 0 },
  4559. end: { line: 1, column: 17 }
  4560. }
  4561. }],
  4562. range: [0, 17],
  4563. loc: {
  4564. start: { line: 1, column: 0 },
  4565. end: { line: 1, column: 17 }
  4566. },
  4567. tokens: [{
  4568. type: 'Keyword',
  4569. value: 'var',
  4570. range: [0, 3],
  4571. loc: {
  4572. start: { line: 1, column: 0 },
  4573. end: { line: 1, column: 3 }
  4574. }
  4575. }, {
  4576. type: 'Identifier',
  4577. value: 'x',
  4578. range: [4, 5],
  4579. loc: {
  4580. start: { line: 1, column: 4 },
  4581. end: { line: 1, column: 5 }
  4582. }
  4583. }, {
  4584. type: 'Punctuator',
  4585. value: '=',
  4586. range: [6, 7],
  4587. loc: {
  4588. start: { line: 1, column: 6 },
  4589. end: { line: 1, column: 7 }
  4590. }
  4591. }, {
  4592. type: 'RegularExpression',
  4593. value: '/[P QR]/i',
  4594. range: [8, 17],
  4595. loc: {
  4596. start: { line: 1, column: 8 },
  4597. end: { line: 1, column: 17 }
  4598. }
  4599. }]
  4600. },
  4601. 'var x = /[\\]/]/': {
  4602. type: 'Program',
  4603. body: [{
  4604. type: 'VariableDeclaration',
  4605. declarations: [{
  4606. type: 'VariableDeclarator',
  4607. id: {
  4608. type: 'Identifier',
  4609. name: 'x',
  4610. range: [4, 5],
  4611. loc: {
  4612. start: { line: 1, column: 4 },
  4613. end: { line: 1, column: 5 }
  4614. }
  4615. },
  4616. init: {
  4617. type: 'Literal',
  4618. value: new RegExp('[\\]/]').toString(),
  4619. raw: '/[\\]/]/',
  4620. range: [8, 15],
  4621. loc: {
  4622. start: { line: 1, column: 8 },
  4623. end: { line: 1, column: 15 }
  4624. }
  4625. },
  4626. range: [4, 15],
  4627. loc: {
  4628. start: { line: 1, column: 4 },
  4629. end: { line: 1, column: 15 }
  4630. }
  4631. }],
  4632. kind: 'var',
  4633. range: [0, 15],
  4634. loc: {
  4635. start: { line: 1, column: 0 },
  4636. end: { line: 1, column: 15 }
  4637. }
  4638. }],
  4639. range: [0, 15],
  4640. loc: {
  4641. start: { line: 1, column: 0 },
  4642. end: { line: 1, column: 15 }
  4643. },
  4644. tokens: [{
  4645. type: 'Keyword',
  4646. value: 'var',
  4647. range: [0, 3],
  4648. loc: {
  4649. start: { line: 1, column: 0 },
  4650. end: { line: 1, column: 3 }
  4651. }
  4652. }, {
  4653. type: 'Identifier',
  4654. value: 'x',
  4655. range: [4, 5],
  4656. loc: {
  4657. start: { line: 1, column: 4 },
  4658. end: { line: 1, column: 5 }
  4659. }
  4660. }, {
  4661. type: 'Punctuator',
  4662. value: '=',
  4663. range: [6, 7],
  4664. loc: {
  4665. start: { line: 1, column: 6 },
  4666. end: { line: 1, column: 7 }
  4667. }
  4668. }, {
  4669. type: 'RegularExpression',
  4670. value: '/[\\]/]/',
  4671. range: [8, 15],
  4672. loc: {
  4673. start: { line: 1, column: 8 },
  4674. end: { line: 1, column: 15 }
  4675. }
  4676. }]
  4677. },
  4678. 'var x = /foo\\/bar/': {
  4679. type: 'Program',
  4680. body: [{
  4681. type: 'VariableDeclaration',
  4682. declarations: [{
  4683. type: 'VariableDeclarator',
  4684. id: {
  4685. type: 'Identifier',
  4686. name: 'x',
  4687. range: [4, 5],
  4688. loc: {
  4689. start: { line: 1, column: 4 },
  4690. end: { line: 1, column: 5 }
  4691. }
  4692. },
  4693. init: {
  4694. type: 'Literal',
  4695. value: '/foo\\/bar/',
  4696. raw: '/foo\\/bar/',
  4697. range: [8, 18],
  4698. loc: {
  4699. start: { line: 1, column: 8 },
  4700. end: { line: 1, column: 18 }
  4701. }
  4702. },
  4703. range: [4, 18],
  4704. loc: {
  4705. start: { line: 1, column: 4 },
  4706. end: { line: 1, column: 18 }
  4707. }
  4708. }],
  4709. kind: 'var',
  4710. range: [0, 18],
  4711. loc: {
  4712. start: { line: 1, column: 0 },
  4713. end: { line: 1, column: 18 }
  4714. }
  4715. }],
  4716. range: [0, 18],
  4717. loc: {
  4718. start: { line: 1, column: 0 },
  4719. end: { line: 1, column: 18 }
  4720. },
  4721. tokens: [{
  4722. type: 'Keyword',
  4723. value: 'var',
  4724. range: [0, 3],
  4725. loc: {
  4726. start: { line: 1, column: 0 },
  4727. end: { line: 1, column: 3 }
  4728. }
  4729. }, {
  4730. type: 'Identifier',
  4731. value: 'x',
  4732. range: [4, 5],
  4733. loc: {
  4734. start: { line: 1, column: 4 },
  4735. end: { line: 1, column: 5 }
  4736. }
  4737. }, {
  4738. type: 'Punctuator',
  4739. value: '=',
  4740. range: [6, 7],
  4741. loc: {
  4742. start: { line: 1, column: 6 },
  4743. end: { line: 1, column: 7 }
  4744. }
  4745. }, {
  4746. type: 'RegularExpression',
  4747. value: '/foo\\/bar/',
  4748. range: [8, 18],
  4749. loc: {
  4750. start: { line: 1, column: 8 },
  4751. end: { line: 1, column: 18 }
  4752. }
  4753. }]
  4754. },
  4755. 'var x = /=([^=\\s])+/g': {
  4756. type: 'Program',
  4757. body: [{
  4758. type: 'VariableDeclaration',
  4759. declarations: [{
  4760. type: 'VariableDeclarator',
  4761. id: {
  4762. type: 'Identifier',
  4763. name: 'x',
  4764. range: [4, 5],
  4765. loc: {
  4766. start: { line: 1, column: 4 },
  4767. end: { line: 1, column: 5 }
  4768. }
  4769. },
  4770. init: {
  4771. type: 'Literal',
  4772. value: '/=([^=\\s])+/g',
  4773. raw: '/=([^=\\s])+/g',
  4774. range: [8, 21],
  4775. loc: {
  4776. start: { line: 1, column: 8 },
  4777. end: { line: 1, column: 21 }
  4778. }
  4779. },
  4780. range: [4, 21],
  4781. loc: {
  4782. start: { line: 1, column: 4 },
  4783. end: { line: 1, column: 21 }
  4784. }
  4785. }],
  4786. kind: 'var',
  4787. range: [0, 21],
  4788. loc: {
  4789. start: { line: 1, column: 0 },
  4790. end: { line: 1, column: 21 }
  4791. }
  4792. }],
  4793. range: [0, 21],
  4794. loc: {
  4795. start: { line: 1, column: 0 },
  4796. end: { line: 1, column: 21 }
  4797. },
  4798. tokens: [{
  4799. type: 'Keyword',
  4800. value: 'var',
  4801. range: [0, 3],
  4802. loc: {
  4803. start: { line: 1, column: 0 },
  4804. end: { line: 1, column: 3 }
  4805. }
  4806. }, {
  4807. type: 'Identifier',
  4808. value: 'x',
  4809. range: [4, 5],
  4810. loc: {
  4811. start: { line: 1, column: 4 },
  4812. end: { line: 1, column: 5 }
  4813. }
  4814. }, {
  4815. type: 'Punctuator',
  4816. value: '=',
  4817. range: [6, 7],
  4818. loc: {
  4819. start: { line: 1, column: 6 },
  4820. end: { line: 1, column: 7 }
  4821. }
  4822. }, {
  4823. type: 'RegularExpression',
  4824. value: '/=([^=\\s])+/g',
  4825. range: [8, 21],
  4826. loc: {
  4827. start: { line: 1, column: 8 },
  4828. end: { line: 1, column: 21 }
  4829. }
  4830. }]
  4831. },
  4832. 'var x = /[P QR]/\\u0067': {
  4833. type: 'Program',
  4834. body: [{
  4835. type: 'VariableDeclaration',
  4836. declarations: [{
  4837. type: 'VariableDeclarator',
  4838. id: {
  4839. type: 'Identifier',
  4840. name: 'x',
  4841. range: [4, 5],
  4842. loc: {
  4843. start: { line: 1, column: 4 },
  4844. end: { line: 1, column: 5 }
  4845. }
  4846. },
  4847. init: {
  4848. type: 'Literal',
  4849. value: '/[P QR]/g',
  4850. raw: '/[P QR]/\\u0067',
  4851. range: [8, 22],
  4852. loc: {
  4853. start: { line: 1, column: 8 },
  4854. end: { line: 1, column: 22 }
  4855. }
  4856. },
  4857. range: [4, 22],
  4858. loc: {
  4859. start: { line: 1, column: 4 },
  4860. end: { line: 1, column: 22 }
  4861. }
  4862. }],
  4863. kind: 'var',
  4864. range: [0, 22],
  4865. loc: {
  4866. start: { line: 1, column: 0 },
  4867. end: { line: 1, column: 22 }
  4868. }
  4869. }],
  4870. range: [0, 22],
  4871. loc: {
  4872. start: { line: 1, column: 0 },
  4873. end: { line: 1, column: 22 }
  4874. },
  4875. tokens: [{
  4876. type: 'Keyword',
  4877. value: 'var',
  4878. range: [0, 3],
  4879. loc: {
  4880. start: { line: 1, column: 0 },
  4881. end: { line: 1, column: 3 }
  4882. }
  4883. }, {
  4884. type: 'Identifier',
  4885. value: 'x',
  4886. range: [4, 5],
  4887. loc: {
  4888. start: { line: 1, column: 4 },
  4889. end: { line: 1, column: 5 }
  4890. }
  4891. }, {
  4892. type: 'Punctuator',
  4893. value: '=',
  4894. range: [6, 7],
  4895. loc: {
  4896. start: { line: 1, column: 6 },
  4897. end: { line: 1, column: 7 }
  4898. }
  4899. }, {
  4900. type: 'RegularExpression',
  4901. value: '/[P QR]/\\u0067',
  4902. range: [8, 22],
  4903. loc: {
  4904. start: { line: 1, column: 8 },
  4905. end: { line: 1, column: 22 }
  4906. }
  4907. }]
  4908. },
  4909. 'var x = /[P QR]/\\g': {
  4910. type: 'Program',
  4911. body: [{
  4912. type: 'VariableDeclaration',
  4913. declarations: [{
  4914. type: 'VariableDeclarator',
  4915. id: {
  4916. type: 'Identifier',
  4917. name: 'x',
  4918. range: [4, 5],
  4919. loc: {
  4920. start: { line: 1, column: 4 },
  4921. end: { line: 1, column: 5 }
  4922. }
  4923. },
  4924. init: {
  4925. type: 'Literal',
  4926. value: '/[P QR]/g',
  4927. raw: '/[P QR]/\\g',
  4928. range: [8, 18],
  4929. loc: {
  4930. start: { line: 1, column: 8 },
  4931. end: { line: 1, column: 18 }
  4932. }
  4933. },
  4934. range: [4, 18],
  4935. loc: {
  4936. start: { line: 1, column: 4 },
  4937. end: { line: 1, column: 18 }
  4938. }
  4939. }],
  4940. kind: 'var',
  4941. range: [0, 18],
  4942. loc: {
  4943. start: { line: 1, column: 0 },
  4944. end: { line: 1, column: 18 }
  4945. }
  4946. }],
  4947. range: [0, 18],
  4948. loc: {
  4949. start: { line: 1, column: 0 },
  4950. end: { line: 1, column: 18 }
  4951. },
  4952. tokens: [{
  4953. type: 'Keyword',
  4954. value: 'var',
  4955. range: [0, 3],
  4956. loc: {
  4957. start: { line: 1, column: 0 },
  4958. end: { line: 1, column: 3 }
  4959. }
  4960. }, {
  4961. type: 'Identifier',
  4962. value: 'x',
  4963. range: [4, 5],
  4964. loc: {
  4965. start: { line: 1, column: 4 },
  4966. end: { line: 1, column: 5 }
  4967. }
  4968. }, {
  4969. type: 'Punctuator',
  4970. value: '=',
  4971. range: [6, 7],
  4972. loc: {
  4973. start: { line: 1, column: 6 },
  4974. end: { line: 1, column: 7 }
  4975. }
  4976. }, {
  4977. type: 'RegularExpression',
  4978. value: '/[P QR]/\\g',
  4979. range: [8, 18],
  4980. loc: {
  4981. start: { line: 1, column: 8 },
  4982. end: { line: 1, column: 18 }
  4983. }
  4984. }]
  4985. }
  4986. },
  4987. 'Left-Hand-Side Expression': {
  4988. 'new Button': {
  4989. type: 'ExpressionStatement',
  4990. expression: {
  4991. type: 'NewExpression',
  4992. callee: {
  4993. type: 'Identifier',
  4994. name: 'Button',
  4995. range: [4, 10],
  4996. loc: {
  4997. start: { line: 1, column: 4 },
  4998. end: { line: 1, column: 10 }
  4999. }
  5000. },
  5001. 'arguments': [],
  5002. range: [0, 10],
  5003. loc: {
  5004. start: { line: 1, column: 0 },
  5005. end: { line: 1, column: 10 }
  5006. }
  5007. },
  5008. range: [0, 10],
  5009. loc: {
  5010. start: { line: 1, column: 0 },
  5011. end: { line: 1, column: 10 }
  5012. }
  5013. },
  5014. 'new Button()': {
  5015. type: 'ExpressionStatement',
  5016. expression: {
  5017. type: 'NewExpression',
  5018. callee: {
  5019. type: 'Identifier',
  5020. name: 'Button',
  5021. range: [4, 10],
  5022. loc: {
  5023. start: { line: 1, column: 4 },
  5024. end: { line: 1, column: 10 }
  5025. }
  5026. },
  5027. 'arguments': [],
  5028. range: [0, 12],
  5029. loc: {
  5030. start: { line: 1, column: 0 },
  5031. end: { line: 1, column: 12 }
  5032. }
  5033. },
  5034. range: [0, 12],
  5035. loc: {
  5036. start: { line: 1, column: 0 },
  5037. end: { line: 1, column: 12 }
  5038. }
  5039. },
  5040. 'new new foo': {
  5041. type: 'ExpressionStatement',
  5042. expression: {
  5043. type: 'NewExpression',
  5044. callee: {
  5045. type: 'NewExpression',
  5046. callee: {
  5047. type: 'Identifier',
  5048. name: 'foo',
  5049. range: [8, 11],
  5050. loc: {
  5051. start: { line: 1, column: 8 },
  5052. end: { line: 1, column: 11 }
  5053. }
  5054. },
  5055. 'arguments': [],
  5056. range: [4, 11],
  5057. loc: {
  5058. start: { line: 1, column: 4 },
  5059. end: { line: 1, column: 11 }
  5060. }
  5061. },
  5062. 'arguments': [],
  5063. range: [0, 11],
  5064. loc: {
  5065. start: { line: 1, column: 0 },
  5066. end: { line: 1, column: 11 }
  5067. }
  5068. },
  5069. range: [0, 11],
  5070. loc: {
  5071. start: { line: 1, column: 0 },
  5072. end: { line: 1, column: 11 }
  5073. }
  5074. },
  5075. 'new new foo()': {
  5076. type: 'ExpressionStatement',
  5077. expression: {
  5078. type: 'NewExpression',
  5079. callee: {
  5080. type: 'NewExpression',
  5081. callee: {
  5082. type: 'Identifier',
  5083. name: 'foo',
  5084. range: [8, 11],
  5085. loc: {
  5086. start: { line: 1, column: 8 },
  5087. end: { line: 1, column: 11 }
  5088. }
  5089. },
  5090. 'arguments': [],
  5091. range: [4, 13],
  5092. loc: {
  5093. start: { line: 1, column: 4 },
  5094. end: { line: 1, column: 13 }
  5095. }
  5096. },
  5097. 'arguments': [],
  5098. range: [0, 13],
  5099. loc: {
  5100. start: { line: 1, column: 0 },
  5101. end: { line: 1, column: 13 }
  5102. }
  5103. },
  5104. range: [0, 13],
  5105. loc: {
  5106. start: { line: 1, column: 0 },
  5107. end: { line: 1, column: 13 }
  5108. }
  5109. },
  5110. 'new foo().bar()': {
  5111. type: 'ExpressionStatement',
  5112. expression: {
  5113. type: 'CallExpression',
  5114. callee: {
  5115. type: 'MemberExpression',
  5116. computed: false,
  5117. object: {
  5118. type: 'NewExpression',
  5119. callee: {
  5120. type: 'Identifier',
  5121. name: 'foo',
  5122. range: [4, 7],
  5123. loc: {
  5124. start: { line: 1, column: 4 },
  5125. end: { line: 1, column: 7 }
  5126. }
  5127. },
  5128. 'arguments': [],
  5129. range: [0, 9],
  5130. loc: {
  5131. start: { line: 1, column: 0 },
  5132. end: { line: 1, column: 9 }
  5133. }
  5134. },
  5135. property: {
  5136. type: 'Identifier',
  5137. name: 'bar',
  5138. range: [10, 13],
  5139. loc: {
  5140. start: { line: 1, column: 10 },
  5141. end: { line: 1, column: 13 }
  5142. }
  5143. },
  5144. range: [0, 13],
  5145. loc: {
  5146. start: { line: 1, column: 0 },
  5147. end: { line: 1, column: 13 }
  5148. }
  5149. },
  5150. 'arguments': [],
  5151. range: [0, 15],
  5152. loc: {
  5153. start: { line: 1, column: 0 },
  5154. end: { line: 1, column: 15 }
  5155. }
  5156. },
  5157. range: [0, 15],
  5158. loc: {
  5159. start: { line: 1, column: 0 },
  5160. end: { line: 1, column: 15 }
  5161. }
  5162. },
  5163. 'new foo[bar]': {
  5164. type: 'ExpressionStatement',
  5165. expression: {
  5166. type: 'NewExpression',
  5167. callee: {
  5168. type: 'MemberExpression',
  5169. computed: true,
  5170. object: {
  5171. type: 'Identifier',
  5172. name: 'foo',
  5173. range: [4, 7],
  5174. loc: {
  5175. start: { line: 1, column: 4 },
  5176. end: { line: 1, column: 7 }
  5177. }
  5178. },
  5179. property: {
  5180. type: 'Identifier',
  5181. name: 'bar',
  5182. range: [8, 11],
  5183. loc: {
  5184. start: { line: 1, column: 8 },
  5185. end: { line: 1, column: 11 }
  5186. }
  5187. },
  5188. range: [4, 12],
  5189. loc: {
  5190. start: { line: 1, column: 4 },
  5191. end: { line: 1, column: 12 }
  5192. }
  5193. },
  5194. 'arguments': [],
  5195. range: [0, 12],
  5196. loc: {
  5197. start: { line: 1, column: 0 },
  5198. end: { line: 1, column: 12 }
  5199. }
  5200. },
  5201. range: [0, 12],
  5202. loc: {
  5203. start: { line: 1, column: 0 },
  5204. end: { line: 1, column: 12 }
  5205. }
  5206. },
  5207. 'new foo.bar()': {
  5208. type: 'ExpressionStatement',
  5209. expression: {
  5210. type: 'NewExpression',
  5211. callee: {
  5212. type: 'MemberExpression',
  5213. computed: false,
  5214. object: {
  5215. type: 'Identifier',
  5216. name: 'foo',
  5217. range: [4, 7],
  5218. loc: {
  5219. start: { line: 1, column: 4 },
  5220. end: { line: 1, column: 7 }
  5221. }
  5222. },
  5223. property: {
  5224. type: 'Identifier',
  5225. name: 'bar',
  5226. range: [8, 11],
  5227. loc: {
  5228. start: { line: 1, column: 8 },
  5229. end: { line: 1, column: 11 }
  5230. }
  5231. },
  5232. range: [4, 11],
  5233. loc: {
  5234. start: { line: 1, column: 4 },
  5235. end: { line: 1, column: 11 }
  5236. }
  5237. },
  5238. 'arguments': [],
  5239. range: [0, 13],
  5240. loc: {
  5241. start: { line: 1, column: 0 },
  5242. end: { line: 1, column: 13 }
  5243. }
  5244. },
  5245. range: [0, 13],
  5246. loc: {
  5247. start: { line: 1, column: 0 },
  5248. end: { line: 1, column: 13 }
  5249. }
  5250. },
  5251. '( new foo).bar()': {
  5252. type: 'ExpressionStatement',
  5253. expression: {
  5254. type: 'CallExpression',
  5255. callee: {
  5256. type: 'MemberExpression',
  5257. computed: false,
  5258. object: {
  5259. type: 'NewExpression',
  5260. callee: {
  5261. type: 'Identifier',
  5262. name: 'foo',
  5263. range: [6, 9],
  5264. loc: {
  5265. start: { line: 1, column: 6 },
  5266. end: { line: 1, column: 9 }
  5267. }
  5268. },
  5269. 'arguments': [],
  5270. range: [2, 9],
  5271. loc: {
  5272. start: { line: 1, column: 2 },
  5273. end: { line: 1, column: 9 }
  5274. }
  5275. },
  5276. property: {
  5277. type: 'Identifier',
  5278. name: 'bar',
  5279. range: [11, 14],
  5280. loc: {
  5281. start: { line: 1, column: 11 },
  5282. end: { line: 1, column: 14 }
  5283. }
  5284. },
  5285. range: [0, 14],
  5286. loc: {
  5287. start: { line: 1, column: 0 },
  5288. end: { line: 1, column: 14 }
  5289. }
  5290. },
  5291. 'arguments': [],
  5292. range: [0, 16],
  5293. loc: {
  5294. start: { line: 1, column: 0 },
  5295. end: { line: 1, column: 16 }
  5296. }
  5297. },
  5298. range: [0, 16],
  5299. loc: {
  5300. start: { line: 1, column: 0 },
  5301. end: { line: 1, column: 16 }
  5302. }
  5303. },
  5304. 'foo(bar, baz)': {
  5305. type: 'ExpressionStatement',
  5306. expression: {
  5307. type: 'CallExpression',
  5308. callee: {
  5309. type: 'Identifier',
  5310. name: 'foo',
  5311. range: [0, 3],
  5312. loc: {
  5313. start: { line: 1, column: 0 },
  5314. end: { line: 1, column: 3 }
  5315. }
  5316. },
  5317. 'arguments': [{
  5318. type: 'Identifier',
  5319. name: 'bar',
  5320. range: [4, 7],
  5321. loc: {
  5322. start: { line: 1, column: 4 },
  5323. end: { line: 1, column: 7 }
  5324. }
  5325. }, {
  5326. type: 'Identifier',
  5327. name: 'baz',
  5328. range: [9, 12],
  5329. loc: {
  5330. start: { line: 1, column: 9 },
  5331. end: { line: 1, column: 12 }
  5332. }
  5333. }],
  5334. range: [0, 13],
  5335. loc: {
  5336. start: { line: 1, column: 0 },
  5337. end: { line: 1, column: 13 }
  5338. }
  5339. },
  5340. range: [0, 13],
  5341. loc: {
  5342. start: { line: 1, column: 0 },
  5343. end: { line: 1, column: 13 }
  5344. }
  5345. },
  5346. '( foo )()': {
  5347. type: 'ExpressionStatement',
  5348. expression: {
  5349. type: 'CallExpression',
  5350. callee: {
  5351. type: 'Identifier',
  5352. name: 'foo',
  5353. range: [5, 8],
  5354. loc: {
  5355. start: { line: 1, column: 5 },
  5356. end: { line: 1, column: 8 }
  5357. }
  5358. },
  5359. 'arguments': [],
  5360. range: [0, 13],
  5361. loc: {
  5362. start: { line: 1, column: 0 },
  5363. end: { line: 1, column: 13 }
  5364. }
  5365. },
  5366. range: [0, 13],
  5367. loc: {
  5368. start: { line: 1, column: 0 },
  5369. end: { line: 1, column: 13 }
  5370. }
  5371. },
  5372. 'universe.milkyway': {
  5373. type: 'ExpressionStatement',
  5374. expression: {
  5375. type: 'MemberExpression',
  5376. computed: false,
  5377. object: {
  5378. type: 'Identifier',
  5379. name: 'universe',
  5380. range: [0, 8],
  5381. loc: {
  5382. start: { line: 1, column: 0 },
  5383. end: { line: 1, column: 8 }
  5384. }
  5385. },
  5386. property: {
  5387. type: 'Identifier',
  5388. name: 'milkyway',
  5389. range: [9, 17],
  5390. loc: {
  5391. start: { line: 1, column: 9 },
  5392. end: { line: 1, column: 17 }
  5393. }
  5394. },
  5395. range: [0, 17],
  5396. loc: {
  5397. start: { line: 1, column: 0 },
  5398. end: { line: 1, column: 17 }
  5399. }
  5400. },
  5401. range: [0, 17],
  5402. loc: {
  5403. start: { line: 1, column: 0 },
  5404. end: { line: 1, column: 17 }
  5405. }
  5406. },
  5407. 'universe.milkyway.solarsystem': {
  5408. type: 'ExpressionStatement',
  5409. expression: {
  5410. type: 'MemberExpression',
  5411. computed: false,
  5412. object: {
  5413. type: 'MemberExpression',
  5414. computed: false,
  5415. object: {
  5416. type: 'Identifier',
  5417. name: 'universe',
  5418. range: [0, 8],
  5419. loc: {
  5420. start: { line: 1, column: 0 },
  5421. end: { line: 1, column: 8 }
  5422. }
  5423. },
  5424. property: {
  5425. type: 'Identifier',
  5426. name: 'milkyway',
  5427. range: [9, 17],
  5428. loc: {
  5429. start: { line: 1, column: 9 },
  5430. end: { line: 1, column: 17 }
  5431. }
  5432. },
  5433. range: [0, 17],
  5434. loc: {
  5435. start: { line: 1, column: 0 },
  5436. end: { line: 1, column: 17 }
  5437. }
  5438. },
  5439. property: {
  5440. type: 'Identifier',
  5441. name: 'solarsystem',
  5442. range: [18, 29],
  5443. loc: {
  5444. start: { line: 1, column: 18 },
  5445. end: { line: 1, column: 29 }
  5446. }
  5447. },
  5448. range: [0, 29],
  5449. loc: {
  5450. start: { line: 1, column: 0 },
  5451. end: { line: 1, column: 29 }
  5452. }
  5453. },
  5454. range: [0, 29],
  5455. loc: {
  5456. start: { line: 1, column: 0 },
  5457. end: { line: 1, column: 29 }
  5458. }
  5459. },
  5460. 'universe.milkyway.solarsystem.Earth': {
  5461. type: 'ExpressionStatement',
  5462. expression: {
  5463. type: 'MemberExpression',
  5464. computed: false,
  5465. object: {
  5466. type: 'MemberExpression',
  5467. computed: false,
  5468. object: {
  5469. type: 'MemberExpression',
  5470. computed: false,
  5471. object: {
  5472. type: 'Identifier',
  5473. name: 'universe',
  5474. range: [0, 8],
  5475. loc: {
  5476. start: { line: 1, column: 0 },
  5477. end: { line: 1, column: 8 }
  5478. }
  5479. },
  5480. property: {
  5481. type: 'Identifier',
  5482. name: 'milkyway',
  5483. range: [9, 17],
  5484. loc: {
  5485. start: { line: 1, column: 9 },
  5486. end: { line: 1, column: 17 }
  5487. }
  5488. },
  5489. range: [0, 17],
  5490. loc: {
  5491. start: { line: 1, column: 0 },
  5492. end: { line: 1, column: 17 }
  5493. }
  5494. },
  5495. property: {
  5496. type: 'Identifier',
  5497. name: 'solarsystem',
  5498. range: [18, 29],
  5499. loc: {
  5500. start: { line: 1, column: 18 },
  5501. end: { line: 1, column: 29 }
  5502. }
  5503. },
  5504. range: [0, 29],
  5505. loc: {
  5506. start: { line: 1, column: 0 },
  5507. end: { line: 1, column: 29 }
  5508. }
  5509. },
  5510. property: {
  5511. type: 'Identifier',
  5512. name: 'Earth',
  5513. range: [30, 35],
  5514. loc: {
  5515. start: { line: 1, column: 30 },
  5516. end: { line: 1, column: 35 }
  5517. }
  5518. },
  5519. range: [0, 35],
  5520. loc: {
  5521. start: { line: 1, column: 0 },
  5522. end: { line: 1, column: 35 }
  5523. }
  5524. },
  5525. range: [0, 35],
  5526. loc: {
  5527. start: { line: 1, column: 0 },
  5528. end: { line: 1, column: 35 }
  5529. }
  5530. },
  5531. 'universe[galaxyName, otherUselessName]': {
  5532. type: 'ExpressionStatement',
  5533. expression: {
  5534. type: 'MemberExpression',
  5535. computed: true,
  5536. object: {
  5537. type: 'Identifier',
  5538. name: 'universe',
  5539. range: [0, 8],
  5540. loc: {
  5541. start: { line: 1, column: 0 },
  5542. end: { line: 1, column: 8 }
  5543. }
  5544. },
  5545. property: {
  5546. type: 'SequenceExpression',
  5547. expressions: [{
  5548. type: 'Identifier',
  5549. name: 'galaxyName',
  5550. range: [9, 19],
  5551. loc: {
  5552. start: { line: 1, column: 9 },
  5553. end: { line: 1, column: 19 }
  5554. }
  5555. }, {
  5556. type: 'Identifier',
  5557. name: 'otherUselessName',
  5558. range: [21, 37],
  5559. loc: {
  5560. start: { line: 1, column: 21 },
  5561. end: { line: 1, column: 37 }
  5562. }
  5563. }],
  5564. range: [9, 37],
  5565. loc: {
  5566. start: { line: 1, column: 9 },
  5567. end: { line: 1, column: 37 }
  5568. }
  5569. },
  5570. range: [0, 38],
  5571. loc: {
  5572. start: { line: 1, column: 0 },
  5573. end: { line: 1, column: 38 }
  5574. }
  5575. },
  5576. range: [0, 38],
  5577. loc: {
  5578. start: { line: 1, column: 0 },
  5579. end: { line: 1, column: 38 }
  5580. }
  5581. },
  5582. 'universe[galaxyName]': {
  5583. type: 'ExpressionStatement',
  5584. expression: {
  5585. type: 'MemberExpression',
  5586. computed: true,
  5587. object: {
  5588. type: 'Identifier',
  5589. name: 'universe',
  5590. range: [0, 8],
  5591. loc: {
  5592. start: { line: 1, column: 0 },
  5593. end: { line: 1, column: 8 }
  5594. }
  5595. },
  5596. property: {
  5597. type: 'Identifier',
  5598. name: 'galaxyName',
  5599. range: [9, 19],
  5600. loc: {
  5601. start: { line: 1, column: 9 },
  5602. end: { line: 1, column: 19 }
  5603. }
  5604. },
  5605. range: [0, 20],
  5606. loc: {
  5607. start: { line: 1, column: 0 },
  5608. end: { line: 1, column: 20 }
  5609. }
  5610. },
  5611. range: [0, 20],
  5612. loc: {
  5613. start: { line: 1, column: 0 },
  5614. end: { line: 1, column: 20 }
  5615. }
  5616. },
  5617. 'universe[42].galaxies': {
  5618. type: 'ExpressionStatement',
  5619. expression: {
  5620. type: 'MemberExpression',
  5621. computed: false,
  5622. object: {
  5623. type: 'MemberExpression',
  5624. computed: true,
  5625. object: {
  5626. type: 'Identifier',
  5627. name: 'universe',
  5628. range: [0, 8],
  5629. loc: {
  5630. start: { line: 1, column: 0 },
  5631. end: { line: 1, column: 8 }
  5632. }
  5633. },
  5634. property: {
  5635. type: 'Literal',
  5636. value: 42,
  5637. raw: '42',
  5638. range: [9, 11],
  5639. loc: {
  5640. start: { line: 1, column: 9 },
  5641. end: { line: 1, column: 11 }
  5642. }
  5643. },
  5644. range: [0, 12],
  5645. loc: {
  5646. start: { line: 1, column: 0 },
  5647. end: { line: 1, column: 12 }
  5648. }
  5649. },
  5650. property: {
  5651. type: 'Identifier',
  5652. name: 'galaxies',
  5653. range: [13, 21],
  5654. loc: {
  5655. start: { line: 1, column: 13 },
  5656. end: { line: 1, column: 21 }
  5657. }
  5658. },
  5659. range: [0, 21],
  5660. loc: {
  5661. start: { line: 1, column: 0 },
  5662. end: { line: 1, column: 21 }
  5663. }
  5664. },
  5665. range: [0, 21],
  5666. loc: {
  5667. start: { line: 1, column: 0 },
  5668. end: { line: 1, column: 21 }
  5669. }
  5670. },
  5671. 'universe(42).galaxies': {
  5672. type: 'ExpressionStatement',
  5673. expression: {
  5674. type: 'MemberExpression',
  5675. computed: false,
  5676. object: {
  5677. type: 'CallExpression',
  5678. callee: {
  5679. type: 'Identifier',
  5680. name: 'universe',
  5681. range: [0, 8],
  5682. loc: {
  5683. start: { line: 1, column: 0 },
  5684. end: { line: 1, column: 8 }
  5685. }
  5686. },
  5687. 'arguments': [{
  5688. type: 'Literal',
  5689. value: 42,
  5690. raw: '42',
  5691. range: [9, 11],
  5692. loc: {
  5693. start: { line: 1, column: 9 },
  5694. end: { line: 1, column: 11 }
  5695. }
  5696. }],
  5697. range: [0, 12],
  5698. loc: {
  5699. start: { line: 1, column: 0 },
  5700. end: { line: 1, column: 12 }
  5701. }
  5702. },
  5703. property: {
  5704. type: 'Identifier',
  5705. name: 'galaxies',
  5706. range: [13, 21],
  5707. loc: {
  5708. start: { line: 1, column: 13 },
  5709. end: { line: 1, column: 21 }
  5710. }
  5711. },
  5712. range: [0, 21],
  5713. loc: {
  5714. start: { line: 1, column: 0 },
  5715. end: { line: 1, column: 21 }
  5716. }
  5717. },
  5718. range: [0, 21],
  5719. loc: {
  5720. start: { line: 1, column: 0 },
  5721. end: { line: 1, column: 21 }
  5722. }
  5723. },
  5724. 'universe(42).galaxies(14, 3, 77).milkyway': {
  5725. type: 'ExpressionStatement',
  5726. expression: {
  5727. type: 'MemberExpression',
  5728. computed: false,
  5729. object: {
  5730. type: 'CallExpression',
  5731. callee: {
  5732. type: 'MemberExpression',
  5733. computed: false,
  5734. object: {
  5735. type: 'CallExpression',
  5736. callee: {
  5737. type: 'Identifier',
  5738. name: 'universe',
  5739. range: [0, 8],
  5740. loc: {
  5741. start: { line: 1, column: 0 },
  5742. end: { line: 1, column: 8 }
  5743. }
  5744. },
  5745. 'arguments': [{
  5746. type: 'Literal',
  5747. value: 42,
  5748. raw: '42',
  5749. range: [9, 11],
  5750. loc: {
  5751. start: { line: 1, column: 9 },
  5752. end: { line: 1, column: 11 }
  5753. }
  5754. }],
  5755. range: [0, 12],
  5756. loc: {
  5757. start: { line: 1, column: 0 },
  5758. end: { line: 1, column: 12 }
  5759. }
  5760. },
  5761. property: {
  5762. type: 'Identifier',
  5763. name: 'galaxies',
  5764. range: [13, 21],
  5765. loc: {
  5766. start: { line: 1, column: 13 },
  5767. end: { line: 1, column: 21 }
  5768. }
  5769. },
  5770. range: [0, 21],
  5771. loc: {
  5772. start: { line: 1, column: 0 },
  5773. end: { line: 1, column: 21 }
  5774. }
  5775. },
  5776. 'arguments': [{
  5777. type: 'Literal',
  5778. value: 14,
  5779. raw: '14',
  5780. range: [22, 24],
  5781. loc: {
  5782. start: { line: 1, column: 22 },
  5783. end: { line: 1, column: 24 }
  5784. }
  5785. }, {
  5786. type: 'Literal',
  5787. value: 3,
  5788. raw: '3',
  5789. range: [26, 27],
  5790. loc: {
  5791. start: { line: 1, column: 26 },
  5792. end: { line: 1, column: 27 }
  5793. }
  5794. }, {
  5795. type: 'Literal',
  5796. value: 77,
  5797. raw: '77',
  5798. range: [29, 31],
  5799. loc: {
  5800. start: { line: 1, column: 29 },
  5801. end: { line: 1, column: 31 }
  5802. }
  5803. }],
  5804. range: [0, 32],
  5805. loc: {
  5806. start: { line: 1, column: 0 },
  5807. end: { line: 1, column: 32 }
  5808. }
  5809. },
  5810. property: {
  5811. type: 'Identifier',
  5812. name: 'milkyway',
  5813. range: [33, 41],
  5814. loc: {
  5815. start: { line: 1, column: 33 },
  5816. end: { line: 1, column: 41 }
  5817. }
  5818. },
  5819. range: [0, 41],
  5820. loc: {
  5821. start: { line: 1, column: 0 },
  5822. end: { line: 1, column: 41 }
  5823. }
  5824. },
  5825. range: [0, 41],
  5826. loc: {
  5827. start: { line: 1, column: 0 },
  5828. end: { line: 1, column: 41 }
  5829. }
  5830. },
  5831. 'earth.asia.Indonesia.prepareForElection(2014)': {
  5832. type: 'ExpressionStatement',
  5833. expression: {
  5834. type: 'CallExpression',
  5835. callee: {
  5836. type: 'MemberExpression',
  5837. computed: false,
  5838. object: {
  5839. type: 'MemberExpression',
  5840. computed: false,
  5841. object: {
  5842. type: 'MemberExpression',
  5843. computed: false,
  5844. object: {
  5845. type: 'Identifier',
  5846. name: 'earth',
  5847. range: [0, 5],
  5848. loc: {
  5849. start: { line: 1, column: 0 },
  5850. end: { line: 1, column: 5 }
  5851. }
  5852. },
  5853. property: {
  5854. type: 'Identifier',
  5855. name: 'asia',
  5856. range: [6, 10],
  5857. loc: {
  5858. start: { line: 1, column: 6 },
  5859. end: { line: 1, column: 10 }
  5860. }
  5861. },
  5862. range: [0, 10],
  5863. loc: {
  5864. start: { line: 1, column: 0 },
  5865. end: { line: 1, column: 10 }
  5866. }
  5867. },
  5868. property: {
  5869. type: 'Identifier',
  5870. name: 'Indonesia',
  5871. range: [11, 20],
  5872. loc: {
  5873. start: { line: 1, column: 11 },
  5874. end: { line: 1, column: 20 }
  5875. }
  5876. },
  5877. range: [0, 20],
  5878. loc: {
  5879. start: { line: 1, column: 0 },
  5880. end: { line: 1, column: 20 }
  5881. }
  5882. },
  5883. property: {
  5884. type: 'Identifier',
  5885. name: 'prepareForElection',
  5886. range: [21, 39],
  5887. loc: {
  5888. start: { line: 1, column: 21 },
  5889. end: { line: 1, column: 39 }
  5890. }
  5891. },
  5892. range: [0, 39],
  5893. loc: {
  5894. start: { line: 1, column: 0 },
  5895. end: { line: 1, column: 39 }
  5896. }
  5897. },
  5898. 'arguments': [{
  5899. type: 'Literal',
  5900. value: 2014,
  5901. raw: '2014',
  5902. range: [40, 44],
  5903. loc: {
  5904. start: { line: 1, column: 40 },
  5905. end: { line: 1, column: 44 }
  5906. }
  5907. }],
  5908. range: [0, 45],
  5909. loc: {
  5910. start: { line: 1, column: 0 },
  5911. end: { line: 1, column: 45 }
  5912. }
  5913. },
  5914. range: [0, 45],
  5915. loc: {
  5916. start: { line: 1, column: 0 },
  5917. end: { line: 1, column: 45 }
  5918. }
  5919. },
  5920. 'universe.if': {
  5921. type: 'ExpressionStatement',
  5922. expression: {
  5923. type: 'MemberExpression',
  5924. computed: false,
  5925. object: {
  5926. type: 'Identifier',
  5927. name: 'universe',
  5928. range: [0, 8],
  5929. loc: {
  5930. start: { line: 1, column: 0 },
  5931. end: { line: 1, column: 8 }
  5932. }
  5933. },
  5934. property: {
  5935. type: 'Identifier',
  5936. name: 'if',
  5937. range: [9, 11],
  5938. loc: {
  5939. start: { line: 1, column: 9 },
  5940. end: { line: 1, column: 11 }
  5941. }
  5942. },
  5943. range: [0, 11],
  5944. loc: {
  5945. start: { line: 1, column: 0 },
  5946. end: { line: 1, column: 11 }
  5947. }
  5948. },
  5949. range: [0, 11],
  5950. loc: {
  5951. start: { line: 1, column: 0 },
  5952. end: { line: 1, column: 11 }
  5953. }
  5954. },
  5955. 'universe.true': {
  5956. type: 'ExpressionStatement',
  5957. expression: {
  5958. type: 'MemberExpression',
  5959. computed: false,
  5960. object: {
  5961. type: 'Identifier',
  5962. name: 'universe',
  5963. range: [0, 8],
  5964. loc: {
  5965. start: { line: 1, column: 0 },
  5966. end: { line: 1, column: 8 }
  5967. }
  5968. },
  5969. property: {
  5970. type: 'Identifier',
  5971. name: 'true',
  5972. range: [9, 13],
  5973. loc: {
  5974. start: { line: 1, column: 9 },
  5975. end: { line: 1, column: 13 }
  5976. }
  5977. },
  5978. range: [0, 13],
  5979. loc: {
  5980. start: { line: 1, column: 0 },
  5981. end: { line: 1, column: 13 }
  5982. }
  5983. },
  5984. range: [0, 13],
  5985. loc: {
  5986. start: { line: 1, column: 0 },
  5987. end: { line: 1, column: 13 }
  5988. }
  5989. },
  5990. 'universe.false': {
  5991. type: 'ExpressionStatement',
  5992. expression: {
  5993. type: 'MemberExpression',
  5994. computed: false,
  5995. object: {
  5996. type: 'Identifier',
  5997. name: 'universe',
  5998. range: [0, 8],
  5999. loc: {
  6000. start: { line: 1, column: 0 },
  6001. end: { line: 1, column: 8 }
  6002. }
  6003. },
  6004. property: {
  6005. type: 'Identifier',
  6006. name: 'false',
  6007. range: [9, 14],
  6008. loc: {
  6009. start: { line: 1, column: 9 },
  6010. end: { line: 1, column: 14 }
  6011. }
  6012. },
  6013. range: [0, 14],
  6014. loc: {
  6015. start: { line: 1, column: 0 },
  6016. end: { line: 1, column: 14 }
  6017. }
  6018. },
  6019. range: [0, 14],
  6020. loc: {
  6021. start: { line: 1, column: 0 },
  6022. end: { line: 1, column: 14 }
  6023. }
  6024. },
  6025. 'universe.null': {
  6026. type: 'ExpressionStatement',
  6027. expression: {
  6028. type: 'MemberExpression',
  6029. computed: false,
  6030. object: {
  6031. type: 'Identifier',
  6032. name: 'universe',
  6033. range: [0, 8],
  6034. loc: {
  6035. start: { line: 1, column: 0 },
  6036. end: { line: 1, column: 8 }
  6037. }
  6038. },
  6039. property: {
  6040. type: 'Identifier',
  6041. name: 'null',
  6042. range: [9, 13],
  6043. loc: {
  6044. start: { line: 1, column: 9 },
  6045. end: { line: 1, column: 13 }
  6046. }
  6047. },
  6048. range: [0, 13],
  6049. loc: {
  6050. start: { line: 1, column: 0 },
  6051. end: { line: 1, column: 13 }
  6052. }
  6053. },
  6054. range: [0, 13],
  6055. loc: {
  6056. start: { line: 1, column: 0 },
  6057. end: { line: 1, column: 13 }
  6058. }
  6059. }
  6060. },
  6061. 'Postfix Expressions': {
  6062. 'x++': {
  6063. type: 'ExpressionStatement',
  6064. expression: {
  6065. type: 'UpdateExpression',
  6066. operator: '++',
  6067. argument: {
  6068. type: 'Identifier',
  6069. name: 'x',
  6070. range: [0, 1],
  6071. loc: {
  6072. start: { line: 1, column: 0 },
  6073. end: { line: 1, column: 1 }
  6074. }
  6075. },
  6076. prefix: false,
  6077. range: [0, 3],
  6078. loc: {
  6079. start: { line: 1, column: 0 },
  6080. end: { line: 1, column: 3 }
  6081. }
  6082. },
  6083. range: [0, 3],
  6084. loc: {
  6085. start: { line: 1, column: 0 },
  6086. end: { line: 1, column: 3 }
  6087. }
  6088. },
  6089. 'x--': {
  6090. type: 'ExpressionStatement',
  6091. expression: {
  6092. type: 'UpdateExpression',
  6093. operator: '--',
  6094. argument: {
  6095. type: 'Identifier',
  6096. name: 'x',
  6097. range: [0, 1],
  6098. loc: {
  6099. start: { line: 1, column: 0 },
  6100. end: { line: 1, column: 1 }
  6101. }
  6102. },
  6103. prefix: false,
  6104. range: [0, 3],
  6105. loc: {
  6106. start: { line: 1, column: 0 },
  6107. end: { line: 1, column: 3 }
  6108. }
  6109. },
  6110. range: [0, 3],
  6111. loc: {
  6112. start: { line: 1, column: 0 },
  6113. end: { line: 1, column: 3 }
  6114. }
  6115. },
  6116. 'eval++': {
  6117. type: 'ExpressionStatement',
  6118. expression: {
  6119. type: 'UpdateExpression',
  6120. operator: '++',
  6121. argument: {
  6122. type: 'Identifier',
  6123. name: 'eval',
  6124. range: [0, 4],
  6125. loc: {
  6126. start: { line: 1, column: 0 },
  6127. end: { line: 1, column: 4 }
  6128. }
  6129. },
  6130. prefix: false,
  6131. range: [0, 6],
  6132. loc: {
  6133. start: { line: 1, column: 0 },
  6134. end: { line: 1, column: 6 }
  6135. }
  6136. },
  6137. range: [0, 6],
  6138. loc: {
  6139. start: { line: 1, column: 0 },
  6140. end: { line: 1, column: 6 }
  6141. }
  6142. },
  6143. 'eval--': {
  6144. type: 'ExpressionStatement',
  6145. expression: {
  6146. type: 'UpdateExpression',
  6147. operator: '--',
  6148. argument: {
  6149. type: 'Identifier',
  6150. name: 'eval',
  6151. range: [0, 4],
  6152. loc: {
  6153. start: { line: 1, column: 0 },
  6154. end: { line: 1, column: 4 }
  6155. }
  6156. },
  6157. prefix: false,
  6158. range: [0, 6],
  6159. loc: {
  6160. start: { line: 1, column: 0 },
  6161. end: { line: 1, column: 6 }
  6162. }
  6163. },
  6164. range: [0, 6],
  6165. loc: {
  6166. start: { line: 1, column: 0 },
  6167. end: { line: 1, column: 6 }
  6168. }
  6169. },
  6170. 'arguments++': {
  6171. type: 'ExpressionStatement',
  6172. expression: {
  6173. type: 'UpdateExpression',
  6174. operator: '++',
  6175. argument: {
  6176. type: 'Identifier',
  6177. name: 'arguments',
  6178. range: [0, 9],
  6179. loc: {
  6180. start: { line: 1, column: 0 },
  6181. end: { line: 1, column: 9 }
  6182. }
  6183. },
  6184. prefix: false,
  6185. range: [0, 11],
  6186. loc: {
  6187. start: { line: 1, column: 0 },
  6188. end: { line: 1, column: 11 }
  6189. }
  6190. },
  6191. range: [0, 11],
  6192. loc: {
  6193. start: { line: 1, column: 0 },
  6194. end: { line: 1, column: 11 }
  6195. }
  6196. },
  6197. 'arguments--': {
  6198. type: 'ExpressionStatement',
  6199. expression: {
  6200. type: 'UpdateExpression',
  6201. operator: '--',
  6202. argument: {
  6203. type: 'Identifier',
  6204. name: 'arguments',
  6205. range: [0, 9],
  6206. loc: {
  6207. start: { line: 1, column: 0 },
  6208. end: { line: 1, column: 9 }
  6209. }
  6210. },
  6211. prefix: false,
  6212. range: [0, 11],
  6213. loc: {
  6214. start: { line: 1, column: 0 },
  6215. end: { line: 1, column: 11 }
  6216. }
  6217. },
  6218. range: [0, 11],
  6219. loc: {
  6220. start: { line: 1, column: 0 },
  6221. end: { line: 1, column: 11 }
  6222. }
  6223. }
  6224. },
  6225. 'Unary Operators': {
  6226. '++x': {
  6227. type: 'ExpressionStatement',
  6228. expression: {
  6229. type: 'UpdateExpression',
  6230. operator: '++',
  6231. argument: {
  6232. type: 'Identifier',
  6233. name: 'x',
  6234. range: [2, 3],
  6235. loc: {
  6236. start: { line: 1, column: 2 },
  6237. end: { line: 1, column: 3 }
  6238. }
  6239. },
  6240. prefix: true,
  6241. range: [0, 3],
  6242. loc: {
  6243. start: { line: 1, column: 0 },
  6244. end: { line: 1, column: 3 }
  6245. }
  6246. },
  6247. range: [0, 3],
  6248. loc: {
  6249. start: { line: 1, column: 0 },
  6250. end: { line: 1, column: 3 }
  6251. }
  6252. },
  6253. '--x': {
  6254. type: 'ExpressionStatement',
  6255. expression: {
  6256. type: 'UpdateExpression',
  6257. operator: '--',
  6258. argument: {
  6259. type: 'Identifier',
  6260. name: 'x',
  6261. range: [2, 3],
  6262. loc: {
  6263. start: { line: 1, column: 2 },
  6264. end: { line: 1, column: 3 }
  6265. }
  6266. },
  6267. prefix: true,
  6268. range: [0, 3],
  6269. loc: {
  6270. start: { line: 1, column: 0 },
  6271. end: { line: 1, column: 3 }
  6272. }
  6273. },
  6274. range: [0, 3],
  6275. loc: {
  6276. start: { line: 1, column: 0 },
  6277. end: { line: 1, column: 3 }
  6278. }
  6279. },
  6280. '++eval': {
  6281. type: 'ExpressionStatement',
  6282. expression: {
  6283. type: 'UpdateExpression',
  6284. operator: '++',
  6285. argument: {
  6286. type: 'Identifier',
  6287. name: 'eval',
  6288. range: [2, 6],
  6289. loc: {
  6290. start: { line: 1, column: 2 },
  6291. end: { line: 1, column: 6 }
  6292. }
  6293. },
  6294. prefix: true,
  6295. range: [0, 6],
  6296. loc: {
  6297. start: { line: 1, column: 0 },
  6298. end: { line: 1, column: 6 }
  6299. }
  6300. },
  6301. range: [0, 6],
  6302. loc: {
  6303. start: { line: 1, column: 0 },
  6304. end: { line: 1, column: 6 }
  6305. }
  6306. },
  6307. '--eval': {
  6308. type: 'ExpressionStatement',
  6309. expression: {
  6310. type: 'UpdateExpression',
  6311. operator: '--',
  6312. argument: {
  6313. type: 'Identifier',
  6314. name: 'eval',
  6315. range: [2, 6],
  6316. loc: {
  6317. start: { line: 1, column: 2 },
  6318. end: { line: 1, column: 6 }
  6319. }
  6320. },
  6321. prefix: true,
  6322. range: [0, 6],
  6323. loc: {
  6324. start: { line: 1, column: 0 },
  6325. end: { line: 1, column: 6 }
  6326. }
  6327. },
  6328. range: [0, 6],
  6329. loc: {
  6330. start: { line: 1, column: 0 },
  6331. end: { line: 1, column: 6 }
  6332. }
  6333. },
  6334. '++arguments': {
  6335. type: 'ExpressionStatement',
  6336. expression: {
  6337. type: 'UpdateExpression',
  6338. operator: '++',
  6339. argument: {
  6340. type: 'Identifier',
  6341. name: 'arguments',
  6342. range: [2, 11],
  6343. loc: {
  6344. start: { line: 1, column: 2 },
  6345. end: { line: 1, column: 11 }
  6346. }
  6347. },
  6348. prefix: true,
  6349. range: [0, 11],
  6350. loc: {
  6351. start: { line: 1, column: 0 },
  6352. end: { line: 1, column: 11 }
  6353. }
  6354. },
  6355. range: [0, 11],
  6356. loc: {
  6357. start: { line: 1, column: 0 },
  6358. end: { line: 1, column: 11 }
  6359. }
  6360. },
  6361. '--arguments': {
  6362. type: 'ExpressionStatement',
  6363. expression: {
  6364. type: 'UpdateExpression',
  6365. operator: '--',
  6366. argument: {
  6367. type: 'Identifier',
  6368. name: 'arguments',
  6369. range: [2, 11],
  6370. loc: {
  6371. start: { line: 1, column: 2 },
  6372. end: { line: 1, column: 11 }
  6373. }
  6374. },
  6375. prefix: true,
  6376. range: [0, 11],
  6377. loc: {
  6378. start: { line: 1, column: 0 },
  6379. end: { line: 1, column: 11 }
  6380. }
  6381. },
  6382. range: [0, 11],
  6383. loc: {
  6384. start: { line: 1, column: 0 },
  6385. end: { line: 1, column: 11 }
  6386. }
  6387. },
  6388. '+x': {
  6389. type: 'ExpressionStatement',
  6390. expression: {
  6391. type: 'UnaryExpression',
  6392. operator: '+',
  6393. argument: {
  6394. type: 'Identifier',
  6395. name: 'x',
  6396. range: [1, 2],
  6397. loc: {
  6398. start: { line: 1, column: 1 },
  6399. end: { line: 1, column: 2 }
  6400. }
  6401. },
  6402. prefix: true,
  6403. range: [0, 2],
  6404. loc: {
  6405. start: { line: 1, column: 0 },
  6406. end: { line: 1, column: 2 }
  6407. }
  6408. },
  6409. range: [0, 2],
  6410. loc: {
  6411. start: { line: 1, column: 0 },
  6412. end: { line: 1, column: 2 }
  6413. }
  6414. },
  6415. '-x': {
  6416. type: 'ExpressionStatement',
  6417. expression: {
  6418. type: 'UnaryExpression',
  6419. operator: '-',
  6420. argument: {
  6421. type: 'Identifier',
  6422. name: 'x',
  6423. range: [1, 2],
  6424. loc: {
  6425. start: { line: 1, column: 1 },
  6426. end: { line: 1, column: 2 }
  6427. }
  6428. },
  6429. prefix: true,
  6430. range: [0, 2],
  6431. loc: {
  6432. start: { line: 1, column: 0 },
  6433. end: { line: 1, column: 2 }
  6434. }
  6435. },
  6436. range: [0, 2],
  6437. loc: {
  6438. start: { line: 1, column: 0 },
  6439. end: { line: 1, column: 2 }
  6440. }
  6441. },
  6442. '~x': {
  6443. type: 'ExpressionStatement',
  6444. expression: {
  6445. type: 'UnaryExpression',
  6446. operator: '~',
  6447. argument: {
  6448. type: 'Identifier',
  6449. name: 'x',
  6450. range: [1, 2],
  6451. loc: {
  6452. start: { line: 1, column: 1 },
  6453. end: { line: 1, column: 2 }
  6454. }
  6455. },
  6456. prefix: true,
  6457. range: [0, 2],
  6458. loc: {
  6459. start: { line: 1, column: 0 },
  6460. end: { line: 1, column: 2 }
  6461. }
  6462. },
  6463. range: [0, 2],
  6464. loc: {
  6465. start: { line: 1, column: 0 },
  6466. end: { line: 1, column: 2 }
  6467. }
  6468. },
  6469. '!x': {
  6470. type: 'ExpressionStatement',
  6471. expression: {
  6472. type: 'UnaryExpression',
  6473. operator: '!',
  6474. argument: {
  6475. type: 'Identifier',
  6476. name: 'x',
  6477. range: [1, 2],
  6478. loc: {
  6479. start: { line: 1, column: 1 },
  6480. end: { line: 1, column: 2 }
  6481. }
  6482. },
  6483. prefix: true,
  6484. range: [0, 2],
  6485. loc: {
  6486. start: { line: 1, column: 0 },
  6487. end: { line: 1, column: 2 }
  6488. }
  6489. },
  6490. range: [0, 2],
  6491. loc: {
  6492. start: { line: 1, column: 0 },
  6493. end: { line: 1, column: 2 }
  6494. }
  6495. },
  6496. 'void x': {
  6497. type: 'ExpressionStatement',
  6498. expression: {
  6499. type: 'UnaryExpression',
  6500. operator: 'void',
  6501. argument: {
  6502. type: 'Identifier',
  6503. name: 'x',
  6504. range: [5, 6],
  6505. loc: {
  6506. start: { line: 1, column: 5 },
  6507. end: { line: 1, column: 6 }
  6508. }
  6509. },
  6510. prefix: true,
  6511. range: [0, 6],
  6512. loc: {
  6513. start: { line: 1, column: 0 },
  6514. end: { line: 1, column: 6 }
  6515. }
  6516. },
  6517. range: [0, 6],
  6518. loc: {
  6519. start: { line: 1, column: 0 },
  6520. end: { line: 1, column: 6 }
  6521. }
  6522. },
  6523. 'delete x': {
  6524. type: 'ExpressionStatement',
  6525. expression: {
  6526. type: 'UnaryExpression',
  6527. operator: 'delete',
  6528. argument: {
  6529. type: 'Identifier',
  6530. name: 'x',
  6531. range: [7, 8],
  6532. loc: {
  6533. start: { line: 1, column: 7 },
  6534. end: { line: 1, column: 8 }
  6535. }
  6536. },
  6537. prefix: true,
  6538. range: [0, 8],
  6539. loc: {
  6540. start: { line: 1, column: 0 },
  6541. end: { line: 1, column: 8 }
  6542. }
  6543. },
  6544. range: [0, 8],
  6545. loc: {
  6546. start: { line: 1, column: 0 },
  6547. end: { line: 1, column: 8 }
  6548. }
  6549. },
  6550. 'typeof x': {
  6551. type: 'ExpressionStatement',
  6552. expression: {
  6553. type: 'UnaryExpression',
  6554. operator: 'typeof',
  6555. argument: {
  6556. type: 'Identifier',
  6557. name: 'x',
  6558. range: [7, 8],
  6559. loc: {
  6560. start: { line: 1, column: 7 },
  6561. end: { line: 1, column: 8 }
  6562. }
  6563. },
  6564. prefix: true,
  6565. range: [0, 8],
  6566. loc: {
  6567. start: { line: 1, column: 0 },
  6568. end: { line: 1, column: 8 }
  6569. }
  6570. },
  6571. range: [0, 8],
  6572. loc: {
  6573. start: { line: 1, column: 0 },
  6574. end: { line: 1, column: 8 }
  6575. }
  6576. }
  6577. },
  6578. 'Multiplicative Operators': {
  6579. 'x * y': {
  6580. type: 'ExpressionStatement',
  6581. expression: {
  6582. type: 'BinaryExpression',
  6583. operator: '*',
  6584. left: {
  6585. type: 'Identifier',
  6586. name: 'x',
  6587. range: [0, 1],
  6588. loc: {
  6589. start: { line: 1, column: 0 },
  6590. end: { line: 1, column: 1 }
  6591. }
  6592. },
  6593. right: {
  6594. type: 'Identifier',
  6595. name: 'y',
  6596. range: [4, 5],
  6597. loc: {
  6598. start: { line: 1, column: 4 },
  6599. end: { line: 1, column: 5 }
  6600. }
  6601. },
  6602. range: [0, 5],
  6603. loc: {
  6604. start: { line: 1, column: 0 },
  6605. end: { line: 1, column: 5 }
  6606. }
  6607. },
  6608. range: [0, 5],
  6609. loc: {
  6610. start: { line: 1, column: 0 },
  6611. end: { line: 1, column: 5 }
  6612. }
  6613. },
  6614. 'x / y': {
  6615. type: 'ExpressionStatement',
  6616. expression: {
  6617. type: 'BinaryExpression',
  6618. operator: '/',
  6619. left: {
  6620. type: 'Identifier',
  6621. name: 'x',
  6622. range: [0, 1],
  6623. loc: {
  6624. start: { line: 1, column: 0 },
  6625. end: { line: 1, column: 1 }
  6626. }
  6627. },
  6628. right: {
  6629. type: 'Identifier',
  6630. name: 'y',
  6631. range: [4, 5],
  6632. loc: {
  6633. start: { line: 1, column: 4 },
  6634. end: { line: 1, column: 5 }
  6635. }
  6636. },
  6637. range: [0, 5],
  6638. loc: {
  6639. start: { line: 1, column: 0 },
  6640. end: { line: 1, column: 5 }
  6641. }
  6642. },
  6643. range: [0, 5],
  6644. loc: {
  6645. start: { line: 1, column: 0 },
  6646. end: { line: 1, column: 5 }
  6647. }
  6648. },
  6649. 'x % y': {
  6650. type: 'ExpressionStatement',
  6651. expression: {
  6652. type: 'BinaryExpression',
  6653. operator: '%',
  6654. left: {
  6655. type: 'Identifier',
  6656. name: 'x',
  6657. range: [0, 1],
  6658. loc: {
  6659. start: { line: 1, column: 0 },
  6660. end: { line: 1, column: 1 }
  6661. }
  6662. },
  6663. right: {
  6664. type: 'Identifier',
  6665. name: 'y',
  6666. range: [4, 5],
  6667. loc: {
  6668. start: { line: 1, column: 4 },
  6669. end: { line: 1, column: 5 }
  6670. }
  6671. },
  6672. range: [0, 5],
  6673. loc: {
  6674. start: { line: 1, column: 0 },
  6675. end: { line: 1, column: 5 }
  6676. }
  6677. },
  6678. range: [0, 5],
  6679. loc: {
  6680. start: { line: 1, column: 0 },
  6681. end: { line: 1, column: 5 }
  6682. }
  6683. }
  6684. },
  6685. 'Additive Operators': {
  6686. 'x + y': {
  6687. type: 'ExpressionStatement',
  6688. expression: {
  6689. type: 'BinaryExpression',
  6690. operator: '+',
  6691. left: {
  6692. type: 'Identifier',
  6693. name: 'x',
  6694. range: [0, 1],
  6695. loc: {
  6696. start: { line: 1, column: 0 },
  6697. end: { line: 1, column: 1 }
  6698. }
  6699. },
  6700. right: {
  6701. type: 'Identifier',
  6702. name: 'y',
  6703. range: [4, 5],
  6704. loc: {
  6705. start: { line: 1, column: 4 },
  6706. end: { line: 1, column: 5 }
  6707. }
  6708. },
  6709. range: [0, 5],
  6710. loc: {
  6711. start: { line: 1, column: 0 },
  6712. end: { line: 1, column: 5 }
  6713. }
  6714. },
  6715. range: [0, 5],
  6716. loc: {
  6717. start: { line: 1, column: 0 },
  6718. end: { line: 1, column: 5 }
  6719. }
  6720. },
  6721. 'x - y': {
  6722. type: 'ExpressionStatement',
  6723. expression: {
  6724. type: 'BinaryExpression',
  6725. operator: '-',
  6726. left: {
  6727. type: 'Identifier',
  6728. name: 'x',
  6729. range: [0, 1],
  6730. loc: {
  6731. start: { line: 1, column: 0 },
  6732. end: { line: 1, column: 1 }
  6733. }
  6734. },
  6735. right: {
  6736. type: 'Identifier',
  6737. name: 'y',
  6738. range: [4, 5],
  6739. loc: {
  6740. start: { line: 1, column: 4 },
  6741. end: { line: 1, column: 5 }
  6742. }
  6743. },
  6744. range: [0, 5],
  6745. loc: {
  6746. start: { line: 1, column: 0 },
  6747. end: { line: 1, column: 5 }
  6748. }
  6749. },
  6750. range: [0, 5],
  6751. loc: {
  6752. start: { line: 1, column: 0 },
  6753. end: { line: 1, column: 5 }
  6754. }
  6755. }
  6756. },
  6757. 'Bitwise Shift Operator': {
  6758. 'x << y': {
  6759. type: 'ExpressionStatement',
  6760. expression: {
  6761. type: 'BinaryExpression',
  6762. operator: '<<',
  6763. left: {
  6764. type: 'Identifier',
  6765. name: 'x',
  6766. range: [0, 1],
  6767. loc: {
  6768. start: { line: 1, column: 0 },
  6769. end: { line: 1, column: 1 }
  6770. }
  6771. },
  6772. right: {
  6773. type: 'Identifier',
  6774. name: 'y',
  6775. range: [5, 6],
  6776. loc: {
  6777. start: { line: 1, column: 5 },
  6778. end: { line: 1, column: 6 }
  6779. }
  6780. },
  6781. range: [0, 6],
  6782. loc: {
  6783. start: { line: 1, column: 0 },
  6784. end: { line: 1, column: 6 }
  6785. }
  6786. },
  6787. range: [0, 6],
  6788. loc: {
  6789. start: { line: 1, column: 0 },
  6790. end: { line: 1, column: 6 }
  6791. }
  6792. },
  6793. 'x >> y': {
  6794. type: 'ExpressionStatement',
  6795. expression: {
  6796. type: 'BinaryExpression',
  6797. operator: '>>',
  6798. left: {
  6799. type: 'Identifier',
  6800. name: 'x',
  6801. range: [0, 1],
  6802. loc: {
  6803. start: { line: 1, column: 0 },
  6804. end: { line: 1, column: 1 }
  6805. }
  6806. },
  6807. right: {
  6808. type: 'Identifier',
  6809. name: 'y',
  6810. range: [5, 6],
  6811. loc: {
  6812. start: { line: 1, column: 5 },
  6813. end: { line: 1, column: 6 }
  6814. }
  6815. },
  6816. range: [0, 6],
  6817. loc: {
  6818. start: { line: 1, column: 0 },
  6819. end: { line: 1, column: 6 }
  6820. }
  6821. },
  6822. range: [0, 6],
  6823. loc: {
  6824. start: { line: 1, column: 0 },
  6825. end: { line: 1, column: 6 }
  6826. }
  6827. },
  6828. 'x >>> y': {
  6829. type: 'ExpressionStatement',
  6830. expression: {
  6831. type: 'BinaryExpression',
  6832. operator: '>>>',
  6833. left: {
  6834. type: 'Identifier',
  6835. name: 'x',
  6836. range: [0, 1],
  6837. loc: {
  6838. start: { line: 1, column: 0 },
  6839. end: { line: 1, column: 1 }
  6840. }
  6841. },
  6842. right: {
  6843. type: 'Identifier',
  6844. name: 'y',
  6845. range: [6, 7],
  6846. loc: {
  6847. start: { line: 1, column: 6 },
  6848. end: { line: 1, column: 7 }
  6849. }
  6850. },
  6851. range: [0, 7],
  6852. loc: {
  6853. start: { line: 1, column: 0 },
  6854. end: { line: 1, column: 7 }
  6855. }
  6856. },
  6857. range: [0, 7],
  6858. loc: {
  6859. start: { line: 1, column: 0 },
  6860. end: { line: 1, column: 7 }
  6861. }
  6862. }
  6863. },
  6864. 'Relational Operators': {
  6865. 'x < y': {
  6866. type: 'ExpressionStatement',
  6867. expression: {
  6868. type: 'BinaryExpression',
  6869. operator: '<',
  6870. left: {
  6871. type: 'Identifier',
  6872. name: 'x',
  6873. range: [0, 1],
  6874. loc: {
  6875. start: { line: 1, column: 0 },
  6876. end: { line: 1, column: 1 }
  6877. }
  6878. },
  6879. right: {
  6880. type: 'Identifier',
  6881. name: 'y',
  6882. range: [4, 5],
  6883. loc: {
  6884. start: { line: 1, column: 4 },
  6885. end: { line: 1, column: 5 }
  6886. }
  6887. },
  6888. range: [0, 5],
  6889. loc: {
  6890. start: { line: 1, column: 0 },
  6891. end: { line: 1, column: 5 }
  6892. }
  6893. },
  6894. range: [0, 5],
  6895. loc: {
  6896. start: { line: 1, column: 0 },
  6897. end: { line: 1, column: 5 }
  6898. }
  6899. },
  6900. 'x > y': {
  6901. type: 'ExpressionStatement',
  6902. expression: {
  6903. type: 'BinaryExpression',
  6904. operator: '>',
  6905. left: {
  6906. type: 'Identifier',
  6907. name: 'x',
  6908. range: [0, 1],
  6909. loc: {
  6910. start: { line: 1, column: 0 },
  6911. end: { line: 1, column: 1 }
  6912. }
  6913. },
  6914. right: {
  6915. type: 'Identifier',
  6916. name: 'y',
  6917. range: [4, 5],
  6918. loc: {
  6919. start: { line: 1, column: 4 },
  6920. end: { line: 1, column: 5 }
  6921. }
  6922. },
  6923. range: [0, 5],
  6924. loc: {
  6925. start: { line: 1, column: 0 },
  6926. end: { line: 1, column: 5 }
  6927. }
  6928. },
  6929. range: [0, 5],
  6930. loc: {
  6931. start: { line: 1, column: 0 },
  6932. end: { line: 1, column: 5 }
  6933. }
  6934. },
  6935. 'x <= y': {
  6936. type: 'ExpressionStatement',
  6937. expression: {
  6938. type: 'BinaryExpression',
  6939. operator: '<=',
  6940. left: {
  6941. type: 'Identifier',
  6942. name: 'x',
  6943. range: [0, 1],
  6944. loc: {
  6945. start: { line: 1, column: 0 },
  6946. end: { line: 1, column: 1 }
  6947. }
  6948. },
  6949. right: {
  6950. type: 'Identifier',
  6951. name: 'y',
  6952. range: [5, 6],
  6953. loc: {
  6954. start: { line: 1, column: 5 },
  6955. end: { line: 1, column: 6 }
  6956. }
  6957. },
  6958. range: [0, 6],
  6959. loc: {
  6960. start: { line: 1, column: 0 },
  6961. end: { line: 1, column: 6 }
  6962. }
  6963. },
  6964. range: [0, 6],
  6965. loc: {
  6966. start: { line: 1, column: 0 },
  6967. end: { line: 1, column: 6 }
  6968. }
  6969. },
  6970. 'x >= y': {
  6971. type: 'ExpressionStatement',
  6972. expression: {
  6973. type: 'BinaryExpression',
  6974. operator: '>=',
  6975. left: {
  6976. type: 'Identifier',
  6977. name: 'x',
  6978. range: [0, 1],
  6979. loc: {
  6980. start: { line: 1, column: 0 },
  6981. end: { line: 1, column: 1 }
  6982. }
  6983. },
  6984. right: {
  6985. type: 'Identifier',
  6986. name: 'y',
  6987. range: [5, 6],
  6988. loc: {
  6989. start: { line: 1, column: 5 },
  6990. end: { line: 1, column: 6 }
  6991. }
  6992. },
  6993. range: [0, 6],
  6994. loc: {
  6995. start: { line: 1, column: 0 },
  6996. end: { line: 1, column: 6 }
  6997. }
  6998. },
  6999. range: [0, 6],
  7000. loc: {
  7001. start: { line: 1, column: 0 },
  7002. end: { line: 1, column: 6 }
  7003. }
  7004. },
  7005. 'x in y': {
  7006. type: 'ExpressionStatement',
  7007. expression: {
  7008. type: 'BinaryExpression',
  7009. operator: 'in',
  7010. left: {
  7011. type: 'Identifier',
  7012. name: 'x',
  7013. range: [0, 1],
  7014. loc: {
  7015. start: { line: 1, column: 0 },
  7016. end: { line: 1, column: 1 }
  7017. }
  7018. },
  7019. right: {
  7020. type: 'Identifier',
  7021. name: 'y',
  7022. range: [5, 6],
  7023. loc: {
  7024. start: { line: 1, column: 5 },
  7025. end: { line: 1, column: 6 }
  7026. }
  7027. },
  7028. range: [0, 6],
  7029. loc: {
  7030. start: { line: 1, column: 0 },
  7031. end: { line: 1, column: 6 }
  7032. }
  7033. },
  7034. range: [0, 6],
  7035. loc: {
  7036. start: { line: 1, column: 0 },
  7037. end: { line: 1, column: 6 }
  7038. }
  7039. },
  7040. 'x instanceof y': {
  7041. type: 'ExpressionStatement',
  7042. expression: {
  7043. type: 'BinaryExpression',
  7044. operator: 'instanceof',
  7045. left: {
  7046. type: 'Identifier',
  7047. name: 'x',
  7048. range: [0, 1],
  7049. loc: {
  7050. start: { line: 1, column: 0 },
  7051. end: { line: 1, column: 1 }
  7052. }
  7053. },
  7054. right: {
  7055. type: 'Identifier',
  7056. name: 'y',
  7057. range: [13, 14],
  7058. loc: {
  7059. start: { line: 1, column: 13 },
  7060. end: { line: 1, column: 14 }
  7061. }
  7062. },
  7063. range: [0, 14],
  7064. loc: {
  7065. start: { line: 1, column: 0 },
  7066. end: { line: 1, column: 14 }
  7067. }
  7068. },
  7069. range: [0, 14],
  7070. loc: {
  7071. start: { line: 1, column: 0 },
  7072. end: { line: 1, column: 14 }
  7073. }
  7074. },
  7075. 'x < y < z': {
  7076. type: 'ExpressionStatement',
  7077. expression: {
  7078. type: 'BinaryExpression',
  7079. operator: '<',
  7080. left: {
  7081. type: 'BinaryExpression',
  7082. operator: '<',
  7083. left: {
  7084. type: 'Identifier',
  7085. name: 'x',
  7086. range: [0, 1],
  7087. loc: {
  7088. start: { line: 1, column: 0 },
  7089. end: { line: 1, column: 1 }
  7090. }
  7091. },
  7092. right: {
  7093. type: 'Identifier',
  7094. name: 'y',
  7095. range: [4, 5],
  7096. loc: {
  7097. start: { line: 1, column: 4 },
  7098. end: { line: 1, column: 5 }
  7099. }
  7100. },
  7101. range: [0, 5],
  7102. loc: {
  7103. start: { line: 1, column: 0 },
  7104. end: { line: 1, column: 5 }
  7105. }
  7106. },
  7107. right: {
  7108. type: 'Identifier',
  7109. name: 'z',
  7110. range: [8, 9],
  7111. loc: {
  7112. start: { line: 1, column: 8 },
  7113. end: { line: 1, column: 9 }
  7114. }
  7115. },
  7116. range: [0, 9],
  7117. loc: {
  7118. start: { line: 1, column: 0 },
  7119. end: { line: 1, column: 9 }
  7120. }
  7121. },
  7122. range: [0, 9],
  7123. loc: {
  7124. start: { line: 1, column: 0 },
  7125. end: { line: 1, column: 9 }
  7126. }
  7127. }
  7128. },
  7129. 'Equality Operators': {
  7130. 'x == y': {
  7131. type: 'ExpressionStatement',
  7132. expression: {
  7133. type: 'BinaryExpression',
  7134. operator: '==',
  7135. left: {
  7136. type: 'Identifier',
  7137. name: 'x',
  7138. range: [0, 1],
  7139. loc: {
  7140. start: { line: 1, column: 0 },
  7141. end: { line: 1, column: 1 }
  7142. }
  7143. },
  7144. right: {
  7145. type: 'Identifier',
  7146. name: 'y',
  7147. range: [5, 6],
  7148. loc: {
  7149. start: { line: 1, column: 5 },
  7150. end: { line: 1, column: 6 }
  7151. }
  7152. },
  7153. range: [0, 6],
  7154. loc: {
  7155. start: { line: 1, column: 0 },
  7156. end: { line: 1, column: 6 }
  7157. }
  7158. },
  7159. range: [0, 6],
  7160. loc: {
  7161. start: { line: 1, column: 0 },
  7162. end: { line: 1, column: 6 }
  7163. }
  7164. },
  7165. 'x != y': {
  7166. type: 'ExpressionStatement',
  7167. expression: {
  7168. type: 'BinaryExpression',
  7169. operator: '!=',
  7170. left: {
  7171. type: 'Identifier',
  7172. name: 'x',
  7173. range: [0, 1],
  7174. loc: {
  7175. start: { line: 1, column: 0 },
  7176. end: { line: 1, column: 1 }
  7177. }
  7178. },
  7179. right: {
  7180. type: 'Identifier',
  7181. name: 'y',
  7182. range: [5, 6],
  7183. loc: {
  7184. start: { line: 1, column: 5 },
  7185. end: { line: 1, column: 6 }
  7186. }
  7187. },
  7188. range: [0, 6],
  7189. loc: {
  7190. start: { line: 1, column: 0 },
  7191. end: { line: 1, column: 6 }
  7192. }
  7193. },
  7194. range: [0, 6],
  7195. loc: {
  7196. start: { line: 1, column: 0 },
  7197. end: { line: 1, column: 6 }
  7198. }
  7199. },
  7200. 'x === y': {
  7201. type: 'ExpressionStatement',
  7202. expression: {
  7203. type: 'BinaryExpression',
  7204. operator: '===',
  7205. left: {
  7206. type: 'Identifier',
  7207. name: 'x',
  7208. range: [0, 1],
  7209. loc: {
  7210. start: { line: 1, column: 0 },
  7211. end: { line: 1, column: 1 }
  7212. }
  7213. },
  7214. right: {
  7215. type: 'Identifier',
  7216. name: 'y',
  7217. range: [6, 7],
  7218. loc: {
  7219. start: { line: 1, column: 6 },
  7220. end: { line: 1, column: 7 }
  7221. }
  7222. },
  7223. range: [0, 7],
  7224. loc: {
  7225. start: { line: 1, column: 0 },
  7226. end: { line: 1, column: 7 }
  7227. }
  7228. },
  7229. range: [0, 7],
  7230. loc: {
  7231. start: { line: 1, column: 0 },
  7232. end: { line: 1, column: 7 }
  7233. }
  7234. },
  7235. 'x !== y': {
  7236. type: 'ExpressionStatement',
  7237. expression: {
  7238. type: 'BinaryExpression',
  7239. operator: '!==',
  7240. left: {
  7241. type: 'Identifier',
  7242. name: 'x',
  7243. range: [0, 1],
  7244. loc: {
  7245. start: { line: 1, column: 0 },
  7246. end: { line: 1, column: 1 }
  7247. }
  7248. },
  7249. right: {
  7250. type: 'Identifier',
  7251. name: 'y',
  7252. range: [6, 7],
  7253. loc: {
  7254. start: { line: 1, column: 6 },
  7255. end: { line: 1, column: 7 }
  7256. }
  7257. },
  7258. range: [0, 7],
  7259. loc: {
  7260. start: { line: 1, column: 0 },
  7261. end: { line: 1, column: 7 }
  7262. }
  7263. },
  7264. range: [0, 7],
  7265. loc: {
  7266. start: { line: 1, column: 0 },
  7267. end: { line: 1, column: 7 }
  7268. }
  7269. }
  7270. },
  7271. 'Binary Bitwise Operators': {
  7272. 'x & y': {
  7273. type: 'ExpressionStatement',
  7274. expression: {
  7275. type: 'BinaryExpression',
  7276. operator: '&',
  7277. left: {
  7278. type: 'Identifier',
  7279. name: 'x',
  7280. range: [0, 1],
  7281. loc: {
  7282. start: { line: 1, column: 0 },
  7283. end: { line: 1, column: 1 }
  7284. }
  7285. },
  7286. right: {
  7287. type: 'Identifier',
  7288. name: 'y',
  7289. range: [4, 5],
  7290. loc: {
  7291. start: { line: 1, column: 4 },
  7292. end: { line: 1, column: 5 }
  7293. }
  7294. },
  7295. range: [0, 5],
  7296. loc: {
  7297. start: { line: 1, column: 0 },
  7298. end: { line: 1, column: 5 }
  7299. }
  7300. },
  7301. range: [0, 5],
  7302. loc: {
  7303. start: { line: 1, column: 0 },
  7304. end: { line: 1, column: 5 }
  7305. }
  7306. },
  7307. 'x ^ y': {
  7308. type: 'ExpressionStatement',
  7309. expression: {
  7310. type: 'BinaryExpression',
  7311. operator: '^',
  7312. left: {
  7313. type: 'Identifier',
  7314. name: 'x',
  7315. range: [0, 1],
  7316. loc: {
  7317. start: { line: 1, column: 0 },
  7318. end: { line: 1, column: 1 }
  7319. }
  7320. },
  7321. right: {
  7322. type: 'Identifier',
  7323. name: 'y',
  7324. range: [4, 5],
  7325. loc: {
  7326. start: { line: 1, column: 4 },
  7327. end: { line: 1, column: 5 }
  7328. }
  7329. },
  7330. range: [0, 5],
  7331. loc: {
  7332. start: { line: 1, column: 0 },
  7333. end: { line: 1, column: 5 }
  7334. }
  7335. },
  7336. range: [0, 5],
  7337. loc: {
  7338. start: { line: 1, column: 0 },
  7339. end: { line: 1, column: 5 }
  7340. }
  7341. },
  7342. 'x | y': {
  7343. type: 'ExpressionStatement',
  7344. expression: {
  7345. type: 'BinaryExpression',
  7346. operator: '|',
  7347. left: {
  7348. type: 'Identifier',
  7349. name: 'x',
  7350. range: [0, 1],
  7351. loc: {
  7352. start: { line: 1, column: 0 },
  7353. end: { line: 1, column: 1 }
  7354. }
  7355. },
  7356. right: {
  7357. type: 'Identifier',
  7358. name: 'y',
  7359. range: [4, 5],
  7360. loc: {
  7361. start: { line: 1, column: 4 },
  7362. end: { line: 1, column: 5 }
  7363. }
  7364. },
  7365. range: [0, 5],
  7366. loc: {
  7367. start: { line: 1, column: 0 },
  7368. end: { line: 1, column: 5 }
  7369. }
  7370. },
  7371. range: [0, 5],
  7372. loc: {
  7373. start: { line: 1, column: 0 },
  7374. end: { line: 1, column: 5 }
  7375. }
  7376. }
  7377. },
  7378. 'Binary Expressions': {
  7379. 'x + y + z': {
  7380. type: 'ExpressionStatement',
  7381. expression: {
  7382. type: 'BinaryExpression',
  7383. operator: '+',
  7384. left: {
  7385. type: 'BinaryExpression',
  7386. operator: '+',
  7387. left: {
  7388. type: 'Identifier',
  7389. name: 'x',
  7390. range: [0, 1],
  7391. loc: {
  7392. start: { line: 1, column: 0 },
  7393. end: { line: 1, column: 1 }
  7394. }
  7395. },
  7396. right: {
  7397. type: 'Identifier',
  7398. name: 'y',
  7399. range: [4, 5],
  7400. loc: {
  7401. start: { line: 1, column: 4 },
  7402. end: { line: 1, column: 5 }
  7403. }
  7404. },
  7405. range: [0, 5],
  7406. loc: {
  7407. start: { line: 1, column: 0 },
  7408. end: { line: 1, column: 5 }
  7409. }
  7410. },
  7411. right: {
  7412. type: 'Identifier',
  7413. name: 'z',
  7414. range: [8, 9],
  7415. loc: {
  7416. start: { line: 1, column: 8 },
  7417. end: { line: 1, column: 9 }
  7418. }
  7419. },
  7420. range: [0, 9],
  7421. loc: {
  7422. start: { line: 1, column: 0 },
  7423. end: { line: 1, column: 9 }
  7424. }
  7425. },
  7426. range: [0, 9],
  7427. loc: {
  7428. start: { line: 1, column: 0 },
  7429. end: { line: 1, column: 9 }
  7430. }
  7431. },
  7432. 'x - y + z': {
  7433. type: 'ExpressionStatement',
  7434. expression: {
  7435. type: 'BinaryExpression',
  7436. operator: '+',
  7437. left: {
  7438. type: 'BinaryExpression',
  7439. operator: '-',
  7440. left: {
  7441. type: 'Identifier',
  7442. name: 'x',
  7443. range: [0, 1],
  7444. loc: {
  7445. start: { line: 1, column: 0 },
  7446. end: { line: 1, column: 1 }
  7447. }
  7448. },
  7449. right: {
  7450. type: 'Identifier',
  7451. name: 'y',
  7452. range: [4, 5],
  7453. loc: {
  7454. start: { line: 1, column: 4 },
  7455. end: { line: 1, column: 5 }
  7456. }
  7457. },
  7458. range: [0, 5],
  7459. loc: {
  7460. start: { line: 1, column: 0 },
  7461. end: { line: 1, column: 5 }
  7462. }
  7463. },
  7464. right: {
  7465. type: 'Identifier',
  7466. name: 'z',
  7467. range: [8, 9],
  7468. loc: {
  7469. start: { line: 1, column: 8 },
  7470. end: { line: 1, column: 9 }
  7471. }
  7472. },
  7473. range: [0, 9],
  7474. loc: {
  7475. start: { line: 1, column: 0 },
  7476. end: { line: 1, column: 9 }
  7477. }
  7478. },
  7479. range: [0, 9],
  7480. loc: {
  7481. start: { line: 1, column: 0 },
  7482. end: { line: 1, column: 9 }
  7483. }
  7484. },
  7485. 'x + y - z': {
  7486. type: 'ExpressionStatement',
  7487. expression: {
  7488. type: 'BinaryExpression',
  7489. operator: '-',
  7490. left: {
  7491. type: 'BinaryExpression',
  7492. operator: '+',
  7493. left: {
  7494. type: 'Identifier',
  7495. name: 'x',
  7496. range: [0, 1],
  7497. loc: {
  7498. start: { line: 1, column: 0 },
  7499. end: { line: 1, column: 1 }
  7500. }
  7501. },
  7502. right: {
  7503. type: 'Identifier',
  7504. name: 'y',
  7505. range: [4, 5],
  7506. loc: {
  7507. start: { line: 1, column: 4 },
  7508. end: { line: 1, column: 5 }
  7509. }
  7510. },
  7511. range: [0, 5],
  7512. loc: {
  7513. start: { line: 1, column: 0 },
  7514. end: { line: 1, column: 5 }
  7515. }
  7516. },
  7517. right: {
  7518. type: 'Identifier',
  7519. name: 'z',
  7520. range: [8, 9],
  7521. loc: {
  7522. start: { line: 1, column: 8 },
  7523. end: { line: 1, column: 9 }
  7524. }
  7525. },
  7526. range: [0, 9],
  7527. loc: {
  7528. start: { line: 1, column: 0 },
  7529. end: { line: 1, column: 9 }
  7530. }
  7531. },
  7532. range: [0, 9],
  7533. loc: {
  7534. start: { line: 1, column: 0 },
  7535. end: { line: 1, column: 9 }
  7536. }
  7537. },
  7538. 'x - y - z': {
  7539. type: 'ExpressionStatement',
  7540. expression: {
  7541. type: 'BinaryExpression',
  7542. operator: '-',
  7543. left: {
  7544. type: 'BinaryExpression',
  7545. operator: '-',
  7546. left: {
  7547. type: 'Identifier',
  7548. name: 'x',
  7549. range: [0, 1],
  7550. loc: {
  7551. start: { line: 1, column: 0 },
  7552. end: { line: 1, column: 1 }
  7553. }
  7554. },
  7555. right: {
  7556. type: 'Identifier',
  7557. name: 'y',
  7558. range: [4, 5],
  7559. loc: {
  7560. start: { line: 1, column: 4 },
  7561. end: { line: 1, column: 5 }
  7562. }
  7563. },
  7564. range: [0, 5],
  7565. loc: {
  7566. start: { line: 1, column: 0 },
  7567. end: { line: 1, column: 5 }
  7568. }
  7569. },
  7570. right: {
  7571. type: 'Identifier',
  7572. name: 'z',
  7573. range: [8, 9],
  7574. loc: {
  7575. start: { line: 1, column: 8 },
  7576. end: { line: 1, column: 9 }
  7577. }
  7578. },
  7579. range: [0, 9],
  7580. loc: {
  7581. start: { line: 1, column: 0 },
  7582. end: { line: 1, column: 9 }
  7583. }
  7584. },
  7585. range: [0, 9],
  7586. loc: {
  7587. start: { line: 1, column: 0 },
  7588. end: { line: 1, column: 9 }
  7589. }
  7590. },
  7591. 'x + y * z': {
  7592. type: 'ExpressionStatement',
  7593. expression: {
  7594. type: 'BinaryExpression',
  7595. operator: '+',
  7596. left: {
  7597. type: 'Identifier',
  7598. name: 'x',
  7599. range: [0, 1],
  7600. loc: {
  7601. start: { line: 1, column: 0 },
  7602. end: { line: 1, column: 1 }
  7603. }
  7604. },
  7605. right: {
  7606. type: 'BinaryExpression',
  7607. operator: '*',
  7608. left: {
  7609. type: 'Identifier',
  7610. name: 'y',
  7611. range: [4, 5],
  7612. loc: {
  7613. start: { line: 1, column: 4 },
  7614. end: { line: 1, column: 5 }
  7615. }
  7616. },
  7617. right: {
  7618. type: 'Identifier',
  7619. name: 'z',
  7620. range: [8, 9],
  7621. loc: {
  7622. start: { line: 1, column: 8 },
  7623. end: { line: 1, column: 9 }
  7624. }
  7625. },
  7626. range: [4, 9],
  7627. loc: {
  7628. start: { line: 1, column: 4 },
  7629. end: { line: 1, column: 9 }
  7630. }
  7631. },
  7632. range: [0, 9],
  7633. loc: {
  7634. start: { line: 1, column: 0 },
  7635. end: { line: 1, column: 9 }
  7636. }
  7637. },
  7638. range: [0, 9],
  7639. loc: {
  7640. start: { line: 1, column: 0 },
  7641. end: { line: 1, column: 9 }
  7642. }
  7643. },
  7644. 'x + y / z': {
  7645. type: 'ExpressionStatement',
  7646. expression: {
  7647. type: 'BinaryExpression',
  7648. operator: '+',
  7649. left: {
  7650. type: 'Identifier',
  7651. name: 'x',
  7652. range: [0, 1],
  7653. loc: {
  7654. start: { line: 1, column: 0 },
  7655. end: { line: 1, column: 1 }
  7656. }
  7657. },
  7658. right: {
  7659. type: 'BinaryExpression',
  7660. operator: '/',
  7661. left: {
  7662. type: 'Identifier',
  7663. name: 'y',
  7664. range: [4, 5],
  7665. loc: {
  7666. start: { line: 1, column: 4 },
  7667. end: { line: 1, column: 5 }
  7668. }
  7669. },
  7670. right: {
  7671. type: 'Identifier',
  7672. name: 'z',
  7673. range: [8, 9],
  7674. loc: {
  7675. start: { line: 1, column: 8 },
  7676. end: { line: 1, column: 9 }
  7677. }
  7678. },
  7679. range: [4, 9],
  7680. loc: {
  7681. start: { line: 1, column: 4 },
  7682. end: { line: 1, column: 9 }
  7683. }
  7684. },
  7685. range: [0, 9],
  7686. loc: {
  7687. start: { line: 1, column: 0 },
  7688. end: { line: 1, column: 9 }
  7689. }
  7690. },
  7691. range: [0, 9],
  7692. loc: {
  7693. start: { line: 1, column: 0 },
  7694. end: { line: 1, column: 9 }
  7695. }
  7696. },
  7697. 'x - y % z': {
  7698. type: 'ExpressionStatement',
  7699. expression: {
  7700. type: 'BinaryExpression',
  7701. operator: '-',
  7702. left: {
  7703. type: 'Identifier',
  7704. name: 'x',
  7705. range: [0, 1],
  7706. loc: {
  7707. start: { line: 1, column: 0 },
  7708. end: { line: 1, column: 1 }
  7709. }
  7710. },
  7711. right: {
  7712. type: 'BinaryExpression',
  7713. operator: '%',
  7714. left: {
  7715. type: 'Identifier',
  7716. name: 'y',
  7717. range: [4, 5],
  7718. loc: {
  7719. start: { line: 1, column: 4 },
  7720. end: { line: 1, column: 5 }
  7721. }
  7722. },
  7723. right: {
  7724. type: 'Identifier',
  7725. name: 'z',
  7726. range: [8, 9],
  7727. loc: {
  7728. start: { line: 1, column: 8 },
  7729. end: { line: 1, column: 9 }
  7730. }
  7731. },
  7732. range: [4, 9],
  7733. loc: {
  7734. start: { line: 1, column: 4 },
  7735. end: { line: 1, column: 9 }
  7736. }
  7737. },
  7738. range: [0, 9],
  7739. loc: {
  7740. start: { line: 1, column: 0 },
  7741. end: { line: 1, column: 9 }
  7742. }
  7743. },
  7744. range: [0, 9],
  7745. loc: {
  7746. start: { line: 1, column: 0 },
  7747. end: { line: 1, column: 9 }
  7748. }
  7749. },
  7750. 'x * y * z': {
  7751. type: 'ExpressionStatement',
  7752. expression: {
  7753. type: 'BinaryExpression',
  7754. operator: '*',
  7755. left: {
  7756. type: 'BinaryExpression',
  7757. operator: '*',
  7758. left: {
  7759. type: 'Identifier',
  7760. name: 'x',
  7761. range: [0, 1],
  7762. loc: {
  7763. start: { line: 1, column: 0 },
  7764. end: { line: 1, column: 1 }
  7765. }
  7766. },
  7767. right: {
  7768. type: 'Identifier',
  7769. name: 'y',
  7770. range: [4, 5],
  7771. loc: {
  7772. start: { line: 1, column: 4 },
  7773. end: { line: 1, column: 5 }
  7774. }
  7775. },
  7776. range: [0, 5],
  7777. loc: {
  7778. start: { line: 1, column: 0 },
  7779. end: { line: 1, column: 5 }
  7780. }
  7781. },
  7782. right: {
  7783. type: 'Identifier',
  7784. name: 'z',
  7785. range: [8, 9],
  7786. loc: {
  7787. start: { line: 1, column: 8 },
  7788. end: { line: 1, column: 9 }
  7789. }
  7790. },
  7791. range: [0, 9],
  7792. loc: {
  7793. start: { line: 1, column: 0 },
  7794. end: { line: 1, column: 9 }
  7795. }
  7796. },
  7797. range: [0, 9],
  7798. loc: {
  7799. start: { line: 1, column: 0 },
  7800. end: { line: 1, column: 9 }
  7801. }
  7802. },
  7803. 'x * y / z': {
  7804. type: 'ExpressionStatement',
  7805. expression: {
  7806. type: 'BinaryExpression',
  7807. operator: '/',
  7808. left: {
  7809. type: 'BinaryExpression',
  7810. operator: '*',
  7811. left: {
  7812. type: 'Identifier',
  7813. name: 'x',
  7814. range: [0, 1],
  7815. loc: {
  7816. start: { line: 1, column: 0 },
  7817. end: { line: 1, column: 1 }
  7818. }
  7819. },
  7820. right: {
  7821. type: 'Identifier',
  7822. name: 'y',
  7823. range: [4, 5],
  7824. loc: {
  7825. start: { line: 1, column: 4 },
  7826. end: { line: 1, column: 5 }
  7827. }
  7828. },
  7829. range: [0, 5],
  7830. loc: {
  7831. start: { line: 1, column: 0 },
  7832. end: { line: 1, column: 5 }
  7833. }
  7834. },
  7835. right: {
  7836. type: 'Identifier',
  7837. name: 'z',
  7838. range: [8, 9],
  7839. loc: {
  7840. start: { line: 1, column: 8 },
  7841. end: { line: 1, column: 9 }
  7842. }
  7843. },
  7844. range: [0, 9],
  7845. loc: {
  7846. start: { line: 1, column: 0 },
  7847. end: { line: 1, column: 9 }
  7848. }
  7849. },
  7850. range: [0, 9],
  7851. loc: {
  7852. start: { line: 1, column: 0 },
  7853. end: { line: 1, column: 9 }
  7854. }
  7855. },
  7856. 'x * y % z': {
  7857. type: 'ExpressionStatement',
  7858. expression: {
  7859. type: 'BinaryExpression',
  7860. operator: '%',
  7861. left: {
  7862. type: 'BinaryExpression',
  7863. operator: '*',
  7864. left: {
  7865. type: 'Identifier',
  7866. name: 'x',
  7867. range: [0, 1],
  7868. loc: {
  7869. start: { line: 1, column: 0 },
  7870. end: { line: 1, column: 1 }
  7871. }
  7872. },
  7873. right: {
  7874. type: 'Identifier',
  7875. name: 'y',
  7876. range: [4, 5],
  7877. loc: {
  7878. start: { line: 1, column: 4 },
  7879. end: { line: 1, column: 5 }
  7880. }
  7881. },
  7882. range: [0, 5],
  7883. loc: {
  7884. start: { line: 1, column: 0 },
  7885. end: { line: 1, column: 5 }
  7886. }
  7887. },
  7888. right: {
  7889. type: 'Identifier',
  7890. name: 'z',
  7891. range: [8, 9],
  7892. loc: {
  7893. start: { line: 1, column: 8 },
  7894. end: { line: 1, column: 9 }
  7895. }
  7896. },
  7897. range: [0, 9],
  7898. loc: {
  7899. start: { line: 1, column: 0 },
  7900. end: { line: 1, column: 9 }
  7901. }
  7902. },
  7903. range: [0, 9],
  7904. loc: {
  7905. start: { line: 1, column: 0 },
  7906. end: { line: 1, column: 9 }
  7907. }
  7908. },
  7909. 'x % y * z': {
  7910. type: 'ExpressionStatement',
  7911. expression: {
  7912. type: 'BinaryExpression',
  7913. operator: '*',
  7914. left: {
  7915. type: 'BinaryExpression',
  7916. operator: '%',
  7917. left: {
  7918. type: 'Identifier',
  7919. name: 'x',
  7920. range: [0, 1],
  7921. loc: {
  7922. start: { line: 1, column: 0 },
  7923. end: { line: 1, column: 1 }
  7924. }
  7925. },
  7926. right: {
  7927. type: 'Identifier',
  7928. name: 'y',
  7929. range: [4, 5],
  7930. loc: {
  7931. start: { line: 1, column: 4 },
  7932. end: { line: 1, column: 5 }
  7933. }
  7934. },
  7935. range: [0, 5],
  7936. loc: {
  7937. start: { line: 1, column: 0 },
  7938. end: { line: 1, column: 5 }
  7939. }
  7940. },
  7941. right: {
  7942. type: 'Identifier',
  7943. name: 'z',
  7944. range: [8, 9],
  7945. loc: {
  7946. start: { line: 1, column: 8 },
  7947. end: { line: 1, column: 9 }
  7948. }
  7949. },
  7950. range: [0, 9],
  7951. loc: {
  7952. start: { line: 1, column: 0 },
  7953. end: { line: 1, column: 9 }
  7954. }
  7955. },
  7956. range: [0, 9],
  7957. loc: {
  7958. start: { line: 1, column: 0 },
  7959. end: { line: 1, column: 9 }
  7960. }
  7961. },
  7962. 'x << y << z': {
  7963. type: 'ExpressionStatement',
  7964. expression: {
  7965. type: 'BinaryExpression',
  7966. operator: '<<',
  7967. left: {
  7968. type: 'BinaryExpression',
  7969. operator: '<<',
  7970. left: {
  7971. type: 'Identifier',
  7972. name: 'x',
  7973. range: [0, 1],
  7974. loc: {
  7975. start: { line: 1, column: 0 },
  7976. end: { line: 1, column: 1 }
  7977. }
  7978. },
  7979. right: {
  7980. type: 'Identifier',
  7981. name: 'y',
  7982. range: [5, 6],
  7983. loc: {
  7984. start: { line: 1, column: 5 },
  7985. end: { line: 1, column: 6 }
  7986. }
  7987. },
  7988. range: [0, 6],
  7989. loc: {
  7990. start: { line: 1, column: 0 },
  7991. end: { line: 1, column: 6 }
  7992. }
  7993. },
  7994. right: {
  7995. type: 'Identifier',
  7996. name: 'z',
  7997. range: [10, 11],
  7998. loc: {
  7999. start: { line: 1, column: 10 },
  8000. end: { line: 1, column: 11 }
  8001. }
  8002. },
  8003. range: [0, 11],
  8004. loc: {
  8005. start: { line: 1, column: 0 },
  8006. end: { line: 1, column: 11 }
  8007. }
  8008. },
  8009. range: [0, 11],
  8010. loc: {
  8011. start: { line: 1, column: 0 },
  8012. end: { line: 1, column: 11 }
  8013. }
  8014. },
  8015. 'x | y | z': {
  8016. type: 'ExpressionStatement',
  8017. expression: {
  8018. type: 'BinaryExpression',
  8019. operator: '|',
  8020. left: {
  8021. type: 'BinaryExpression',
  8022. operator: '|',
  8023. left: {
  8024. type: 'Identifier',
  8025. name: 'x',
  8026. range: [0, 1],
  8027. loc: {
  8028. start: { line: 1, column: 0 },
  8029. end: { line: 1, column: 1 }
  8030. }
  8031. },
  8032. right: {
  8033. type: 'Identifier',
  8034. name: 'y',
  8035. range: [4, 5],
  8036. loc: {
  8037. start: { line: 1, column: 4 },
  8038. end: { line: 1, column: 5 }
  8039. }
  8040. },
  8041. range: [0, 5],
  8042. loc: {
  8043. start: { line: 1, column: 0 },
  8044. end: { line: 1, column: 5 }
  8045. }
  8046. },
  8047. right: {
  8048. type: 'Identifier',
  8049. name: 'z',
  8050. range: [8, 9],
  8051. loc: {
  8052. start: { line: 1, column: 8 },
  8053. end: { line: 1, column: 9 }
  8054. }
  8055. },
  8056. range: [0, 9],
  8057. loc: {
  8058. start: { line: 1, column: 0 },
  8059. end: { line: 1, column: 9 }
  8060. }
  8061. },
  8062. range: [0, 9],
  8063. loc: {
  8064. start: { line: 1, column: 0 },
  8065. end: { line: 1, column: 9 }
  8066. }
  8067. },
  8068. 'x & y & z': {
  8069. type: 'ExpressionStatement',
  8070. expression: {
  8071. type: 'BinaryExpression',
  8072. operator: '&',
  8073. left: {
  8074. type: 'BinaryExpression',
  8075. operator: '&',
  8076. left: {
  8077. type: 'Identifier',
  8078. name: 'x',
  8079. range: [0, 1],
  8080. loc: {
  8081. start: { line: 1, column: 0 },
  8082. end: { line: 1, column: 1 }
  8083. }
  8084. },
  8085. right: {
  8086. type: 'Identifier',
  8087. name: 'y',
  8088. range: [4, 5],
  8089. loc: {
  8090. start: { line: 1, column: 4 },
  8091. end: { line: 1, column: 5 }
  8092. }
  8093. },
  8094. range: [0, 5],
  8095. loc: {
  8096. start: { line: 1, column: 0 },
  8097. end: { line: 1, column: 5 }
  8098. }
  8099. },
  8100. right: {
  8101. type: 'Identifier',
  8102. name: 'z',
  8103. range: [8, 9],
  8104. loc: {
  8105. start: { line: 1, column: 8 },
  8106. end: { line: 1, column: 9 }
  8107. }
  8108. },
  8109. range: [0, 9],
  8110. loc: {
  8111. start: { line: 1, column: 0 },
  8112. end: { line: 1, column: 9 }
  8113. }
  8114. },
  8115. range: [0, 9],
  8116. loc: {
  8117. start: { line: 1, column: 0 },
  8118. end: { line: 1, column: 9 }
  8119. }
  8120. },
  8121. 'x ^ y ^ z': {
  8122. type: 'ExpressionStatement',
  8123. expression: {
  8124. type: 'BinaryExpression',
  8125. operator: '^',
  8126. left: {
  8127. type: 'BinaryExpression',
  8128. operator: '^',
  8129. left: {
  8130. type: 'Identifier',
  8131. name: 'x',
  8132. range: [0, 1],
  8133. loc: {
  8134. start: { line: 1, column: 0 },
  8135. end: { line: 1, column: 1 }
  8136. }
  8137. },
  8138. right: {
  8139. type: 'Identifier',
  8140. name: 'y',
  8141. range: [4, 5],
  8142. loc: {
  8143. start: { line: 1, column: 4 },
  8144. end: { line: 1, column: 5 }
  8145. }
  8146. },
  8147. range: [0, 5],
  8148. loc: {
  8149. start: { line: 1, column: 0 },
  8150. end: { line: 1, column: 5 }
  8151. }
  8152. },
  8153. right: {
  8154. type: 'Identifier',
  8155. name: 'z',
  8156. range: [8, 9],
  8157. loc: {
  8158. start: { line: 1, column: 8 },
  8159. end: { line: 1, column: 9 }
  8160. }
  8161. },
  8162. range: [0, 9],
  8163. loc: {
  8164. start: { line: 1, column: 0 },
  8165. end: { line: 1, column: 9 }
  8166. }
  8167. },
  8168. range: [0, 9],
  8169. loc: {
  8170. start: { line: 1, column: 0 },
  8171. end: { line: 1, column: 9 }
  8172. }
  8173. },
  8174. 'x & y | z': {
  8175. type: 'ExpressionStatement',
  8176. expression: {
  8177. type: 'BinaryExpression',
  8178. operator: '|',
  8179. left: {
  8180. type: 'BinaryExpression',
  8181. operator: '&',
  8182. left: {
  8183. type: 'Identifier',
  8184. name: 'x',
  8185. range: [0, 1],
  8186. loc: {
  8187. start: { line: 1, column: 0 },
  8188. end: { line: 1, column: 1 }
  8189. }
  8190. },
  8191. right: {
  8192. type: 'Identifier',
  8193. name: 'y',
  8194. range: [4, 5],
  8195. loc: {
  8196. start: { line: 1, column: 4 },
  8197. end: { line: 1, column: 5 }
  8198. }
  8199. },
  8200. range: [0, 5],
  8201. loc: {
  8202. start: { line: 1, column: 0 },
  8203. end: { line: 1, column: 5 }
  8204. }
  8205. },
  8206. right: {
  8207. type: 'Identifier',
  8208. name: 'z',
  8209. range: [8, 9],
  8210. loc: {
  8211. start: { line: 1, column: 8 },
  8212. end: { line: 1, column: 9 }
  8213. }
  8214. },
  8215. range: [0, 9],
  8216. loc: {
  8217. start: { line: 1, column: 0 },
  8218. end: { line: 1, column: 9 }
  8219. }
  8220. },
  8221. range: [0, 9],
  8222. loc: {
  8223. start: { line: 1, column: 0 },
  8224. end: { line: 1, column: 9 }
  8225. }
  8226. },
  8227. 'x | y ^ z': {
  8228. type: 'ExpressionStatement',
  8229. expression: {
  8230. type: 'BinaryExpression',
  8231. operator: '|',
  8232. left: {
  8233. type: 'Identifier',
  8234. name: 'x',
  8235. range: [0, 1],
  8236. loc: {
  8237. start: { line: 1, column: 0 },
  8238. end: { line: 1, column: 1 }
  8239. }
  8240. },
  8241. right: {
  8242. type: 'BinaryExpression',
  8243. operator: '^',
  8244. left: {
  8245. type: 'Identifier',
  8246. name: 'y',
  8247. range: [4, 5],
  8248. loc: {
  8249. start: { line: 1, column: 4 },
  8250. end: { line: 1, column: 5 }
  8251. }
  8252. },
  8253. right: {
  8254. type: 'Identifier',
  8255. name: 'z',
  8256. range: [8, 9],
  8257. loc: {
  8258. start: { line: 1, column: 8 },
  8259. end: { line: 1, column: 9 }
  8260. }
  8261. },
  8262. range: [4, 9],
  8263. loc: {
  8264. start: { line: 1, column: 4 },
  8265. end: { line: 1, column: 9 }
  8266. }
  8267. },
  8268. range: [0, 9],
  8269. loc: {
  8270. start: { line: 1, column: 0 },
  8271. end: { line: 1, column: 9 }
  8272. }
  8273. },
  8274. range: [0, 9],
  8275. loc: {
  8276. start: { line: 1, column: 0 },
  8277. end: { line: 1, column: 9 }
  8278. }
  8279. },
  8280. 'x | y & z': {
  8281. type: 'ExpressionStatement',
  8282. expression: {
  8283. type: 'BinaryExpression',
  8284. operator: '|',
  8285. left: {
  8286. type: 'Identifier',
  8287. name: 'x',
  8288. range: [0, 1],
  8289. loc: {
  8290. start: { line: 1, column: 0 },
  8291. end: { line: 1, column: 1 }
  8292. }
  8293. },
  8294. right: {
  8295. type: 'BinaryExpression',
  8296. operator: '&',
  8297. left: {
  8298. type: 'Identifier',
  8299. name: 'y',
  8300. range: [4, 5],
  8301. loc: {
  8302. start: { line: 1, column: 4 },
  8303. end: { line: 1, column: 5 }
  8304. }
  8305. },
  8306. right: {
  8307. type: 'Identifier',
  8308. name: 'z',
  8309. range: [8, 9],
  8310. loc: {
  8311. start: { line: 1, column: 8 },
  8312. end: { line: 1, column: 9 }
  8313. }
  8314. },
  8315. range: [4, 9],
  8316. loc: {
  8317. start: { line: 1, column: 4 },
  8318. end: { line: 1, column: 9 }
  8319. }
  8320. },
  8321. range: [0, 9],
  8322. loc: {
  8323. start: { line: 1, column: 0 },
  8324. end: { line: 1, column: 9 }
  8325. }
  8326. },
  8327. range: [0, 9],
  8328. loc: {
  8329. start: { line: 1, column: 0 },
  8330. end: { line: 1, column: 9 }
  8331. }
  8332. }
  8333. },
  8334. 'Binary Logical Operators': {
  8335. 'x || y': {
  8336. type: 'ExpressionStatement',
  8337. expression: {
  8338. type: 'LogicalExpression',
  8339. operator: '||',
  8340. left: {
  8341. type: 'Identifier',
  8342. name: 'x',
  8343. range: [0, 1],
  8344. loc: {
  8345. start: { line: 1, column: 0 },
  8346. end: { line: 1, column: 1 }
  8347. }
  8348. },
  8349. right: {
  8350. type: 'Identifier',
  8351. name: 'y',
  8352. range: [5, 6],
  8353. loc: {
  8354. start: { line: 1, column: 5 },
  8355. end: { line: 1, column: 6 }
  8356. }
  8357. },
  8358. range: [0, 6],
  8359. loc: {
  8360. start: { line: 1, column: 0 },
  8361. end: { line: 1, column: 6 }
  8362. }
  8363. },
  8364. range: [0, 6],
  8365. loc: {
  8366. start: { line: 1, column: 0 },
  8367. end: { line: 1, column: 6 }
  8368. }
  8369. },
  8370. 'x && y': {
  8371. type: 'ExpressionStatement',
  8372. expression: {
  8373. type: 'LogicalExpression',
  8374. operator: '&&',
  8375. left: {
  8376. type: 'Identifier',
  8377. name: 'x',
  8378. range: [0, 1],
  8379. loc: {
  8380. start: { line: 1, column: 0 },
  8381. end: { line: 1, column: 1 }
  8382. }
  8383. },
  8384. right: {
  8385. type: 'Identifier',
  8386. name: 'y',
  8387. range: [5, 6],
  8388. loc: {
  8389. start: { line: 1, column: 5 },
  8390. end: { line: 1, column: 6 }
  8391. }
  8392. },
  8393. range: [0, 6],
  8394. loc: {
  8395. start: { line: 1, column: 0 },
  8396. end: { line: 1, column: 6 }
  8397. }
  8398. },
  8399. range: [0, 6],
  8400. loc: {
  8401. start: { line: 1, column: 0 },
  8402. end: { line: 1, column: 6 }
  8403. }
  8404. },
  8405. 'x || y || z': {
  8406. type: 'ExpressionStatement',
  8407. expression: {
  8408. type: 'LogicalExpression',
  8409. operator: '||',
  8410. left: {
  8411. type: 'LogicalExpression',
  8412. operator: '||',
  8413. left: {
  8414. type: 'Identifier',
  8415. name: 'x',
  8416. range: [0, 1],
  8417. loc: {
  8418. start: { line: 1, column: 0 },
  8419. end: { line: 1, column: 1 }
  8420. }
  8421. },
  8422. right: {
  8423. type: 'Identifier',
  8424. name: 'y',
  8425. range: [5, 6],
  8426. loc: {
  8427. start: { line: 1, column: 5 },
  8428. end: { line: 1, column: 6 }
  8429. }
  8430. },
  8431. range: [0, 6],
  8432. loc: {
  8433. start: { line: 1, column: 0 },
  8434. end: { line: 1, column: 6 }
  8435. }
  8436. },
  8437. right: {
  8438. type: 'Identifier',
  8439. name: 'z',
  8440. range: [10, 11],
  8441. loc: {
  8442. start: { line: 1, column: 10 },
  8443. end: { line: 1, column: 11 }
  8444. }
  8445. },
  8446. range: [0, 11],
  8447. loc: {
  8448. start: { line: 1, column: 0 },
  8449. end: { line: 1, column: 11 }
  8450. }
  8451. },
  8452. range: [0, 11],
  8453. loc: {
  8454. start: { line: 1, column: 0 },
  8455. end: { line: 1, column: 11 }
  8456. }
  8457. },
  8458. 'x && y && z': {
  8459. type: 'ExpressionStatement',
  8460. expression: {
  8461. type: 'LogicalExpression',
  8462. operator: '&&',
  8463. left: {
  8464. type: 'LogicalExpression',
  8465. operator: '&&',
  8466. left: {
  8467. type: 'Identifier',
  8468. name: 'x',
  8469. range: [0, 1],
  8470. loc: {
  8471. start: { line: 1, column: 0 },
  8472. end: { line: 1, column: 1 }
  8473. }
  8474. },
  8475. right: {
  8476. type: 'Identifier',
  8477. name: 'y',
  8478. range: [5, 6],
  8479. loc: {
  8480. start: { line: 1, column: 5 },
  8481. end: { line: 1, column: 6 }
  8482. }
  8483. },
  8484. range: [0, 6],
  8485. loc: {
  8486. start: { line: 1, column: 0 },
  8487. end: { line: 1, column: 6 }
  8488. }
  8489. },
  8490. right: {
  8491. type: 'Identifier',
  8492. name: 'z',
  8493. range: [10, 11],
  8494. loc: {
  8495. start: { line: 1, column: 10 },
  8496. end: { line: 1, column: 11 }
  8497. }
  8498. },
  8499. range: [0, 11],
  8500. loc: {
  8501. start: { line: 1, column: 0 },
  8502. end: { line: 1, column: 11 }
  8503. }
  8504. },
  8505. range: [0, 11],
  8506. loc: {
  8507. start: { line: 1, column: 0 },
  8508. end: { line: 1, column: 11 }
  8509. }
  8510. },
  8511. 'x || y && z': {
  8512. type: 'ExpressionStatement',
  8513. expression: {
  8514. type: 'LogicalExpression',
  8515. operator: '||',
  8516. left: {
  8517. type: 'Identifier',
  8518. name: 'x',
  8519. range: [0, 1],
  8520. loc: {
  8521. start: { line: 1, column: 0 },
  8522. end: { line: 1, column: 1 }
  8523. }
  8524. },
  8525. right: {
  8526. type: 'LogicalExpression',
  8527. operator: '&&',
  8528. left: {
  8529. type: 'Identifier',
  8530. name: 'y',
  8531. range: [5, 6],
  8532. loc: {
  8533. start: { line: 1, column: 5 },
  8534. end: { line: 1, column: 6 }
  8535. }
  8536. },
  8537. right: {
  8538. type: 'Identifier',
  8539. name: 'z',
  8540. range: [10, 11],
  8541. loc: {
  8542. start: { line: 1, column: 10 },
  8543. end: { line: 1, column: 11 }
  8544. }
  8545. },
  8546. range: [5, 11],
  8547. loc: {
  8548. start: { line: 1, column: 5 },
  8549. end: { line: 1, column: 11 }
  8550. }
  8551. },
  8552. range: [0, 11],
  8553. loc: {
  8554. start: { line: 1, column: 0 },
  8555. end: { line: 1, column: 11 }
  8556. }
  8557. },
  8558. range: [0, 11],
  8559. loc: {
  8560. start: { line: 1, column: 0 },
  8561. end: { line: 1, column: 11 }
  8562. }
  8563. },
  8564. 'x || y ^ z': {
  8565. type: 'ExpressionStatement',
  8566. expression: {
  8567. type: 'LogicalExpression',
  8568. operator: '||',
  8569. left: {
  8570. type: 'Identifier',
  8571. name: 'x',
  8572. range: [0, 1],
  8573. loc: {
  8574. start: { line: 1, column: 0 },
  8575. end: { line: 1, column: 1 }
  8576. }
  8577. },
  8578. right: {
  8579. type: 'BinaryExpression',
  8580. operator: '^',
  8581. left: {
  8582. type: 'Identifier',
  8583. name: 'y',
  8584. range: [5, 6],
  8585. loc: {
  8586. start: { line: 1, column: 5 },
  8587. end: { line: 1, column: 6 }
  8588. }
  8589. },
  8590. right: {
  8591. type: 'Identifier',
  8592. name: 'z',
  8593. range: [9, 10],
  8594. loc: {
  8595. start: { line: 1, column: 9 },
  8596. end: { line: 1, column: 10 }
  8597. }
  8598. },
  8599. range: [5, 10],
  8600. loc: {
  8601. start: { line: 1, column: 5 },
  8602. end: { line: 1, column: 10 }
  8603. }
  8604. },
  8605. range: [0, 10],
  8606. loc: {
  8607. start: { line: 1, column: 0 },
  8608. end: { line: 1, column: 10 }
  8609. }
  8610. },
  8611. range: [0, 10],
  8612. loc: {
  8613. start: { line: 1, column: 0 },
  8614. end: { line: 1, column: 10 }
  8615. }
  8616. }
  8617. },
  8618. 'Conditional Operator': {
  8619. 'y ? 1 : 2': {
  8620. type: 'ExpressionStatement',
  8621. expression: {
  8622. type: 'ConditionalExpression',
  8623. test: {
  8624. type: 'Identifier',
  8625. name: 'y',
  8626. range: [0, 1],
  8627. loc: {
  8628. start: { line: 1, column: 0 },
  8629. end: { line: 1, column: 1 }
  8630. }
  8631. },
  8632. consequent: {
  8633. type: 'Literal',
  8634. value: 1,
  8635. raw: '1',
  8636. range: [4, 5],
  8637. loc: {
  8638. start: { line: 1, column: 4 },
  8639. end: { line: 1, column: 5 }
  8640. }
  8641. },
  8642. alternate: {
  8643. type: 'Literal',
  8644. value: 2,
  8645. raw: '2',
  8646. range: [8, 9],
  8647. loc: {
  8648. start: { line: 1, column: 8 },
  8649. end: { line: 1, column: 9 }
  8650. }
  8651. },
  8652. range: [0, 9],
  8653. loc: {
  8654. start: { line: 1, column: 0 },
  8655. end: { line: 1, column: 9 }
  8656. }
  8657. },
  8658. range: [0, 9],
  8659. loc: {
  8660. start: { line: 1, column: 0 },
  8661. end: { line: 1, column: 9 }
  8662. }
  8663. },
  8664. 'x && y ? 1 : 2': {
  8665. type: 'ExpressionStatement',
  8666. expression: {
  8667. type: 'ConditionalExpression',
  8668. test: {
  8669. type: 'LogicalExpression',
  8670. operator: '&&',
  8671. left: {
  8672. type: 'Identifier',
  8673. name: 'x',
  8674. range: [0, 1],
  8675. loc: {
  8676. start: { line: 1, column: 0 },
  8677. end: { line: 1, column: 1 }
  8678. }
  8679. },
  8680. right: {
  8681. type: 'Identifier',
  8682. name: 'y',
  8683. range: [5, 6],
  8684. loc: {
  8685. start: { line: 1, column: 5 },
  8686. end: { line: 1, column: 6 }
  8687. }
  8688. },
  8689. range: [0, 6],
  8690. loc: {
  8691. start: { line: 1, column: 0 },
  8692. end: { line: 1, column: 6 }
  8693. }
  8694. },
  8695. consequent: {
  8696. type: 'Literal',
  8697. value: 1,
  8698. raw: '1',
  8699. range: [9, 10],
  8700. loc: {
  8701. start: { line: 1, column: 9 },
  8702. end: { line: 1, column: 10 }
  8703. }
  8704. },
  8705. alternate: {
  8706. type: 'Literal',
  8707. value: 2,
  8708. raw: '2',
  8709. range: [13, 14],
  8710. loc: {
  8711. start: { line: 1, column: 13 },
  8712. end: { line: 1, column: 14 }
  8713. }
  8714. },
  8715. range: [0, 14],
  8716. loc: {
  8717. start: { line: 1, column: 0 },
  8718. end: { line: 1, column: 14 }
  8719. }
  8720. },
  8721. range: [0, 14],
  8722. loc: {
  8723. start: { line: 1, column: 0 },
  8724. end: { line: 1, column: 14 }
  8725. }
  8726. }
  8727. },
  8728. 'Assignment Operators': {
  8729. 'x = 42': {
  8730. type: 'ExpressionStatement',
  8731. expression: {
  8732. type: 'AssignmentExpression',
  8733. operator: '=',
  8734. left: {
  8735. type: 'Identifier',
  8736. name: 'x',
  8737. range: [0, 1],
  8738. loc: {
  8739. start: { line: 1, column: 0 },
  8740. end: { line: 1, column: 1 }
  8741. }
  8742. },
  8743. right: {
  8744. type: 'Literal',
  8745. value: 42,
  8746. raw: '42',
  8747. range: [4, 6],
  8748. loc: {
  8749. start: { line: 1, column: 4 },
  8750. end: { line: 1, column: 6 }
  8751. }
  8752. },
  8753. range: [0, 6],
  8754. loc: {
  8755. start: { line: 1, column: 0 },
  8756. end: { line: 1, column: 6 }
  8757. }
  8758. },
  8759. range: [0, 6],
  8760. loc: {
  8761. start: { line: 1, column: 0 },
  8762. end: { line: 1, column: 6 }
  8763. }
  8764. },
  8765. 'eval = 42': {
  8766. type: 'ExpressionStatement',
  8767. expression: {
  8768. type: 'AssignmentExpression',
  8769. operator: '=',
  8770. left: {
  8771. type: 'Identifier',
  8772. name: 'eval',
  8773. range: [0, 4],
  8774. loc: {
  8775. start: { line: 1, column: 0 },
  8776. end: { line: 1, column: 4 }
  8777. }
  8778. },
  8779. right: {
  8780. type: 'Literal',
  8781. value: 42,
  8782. raw: '42',
  8783. range: [7, 9],
  8784. loc: {
  8785. start: { line: 1, column: 7 },
  8786. end: { line: 1, column: 9 }
  8787. }
  8788. },
  8789. range: [0, 9],
  8790. loc: {
  8791. start: { line: 1, column: 0 },
  8792. end: { line: 1, column: 9 }
  8793. }
  8794. },
  8795. range: [0, 9],
  8796. loc: {
  8797. start: { line: 1, column: 0 },
  8798. end: { line: 1, column: 9 }
  8799. }
  8800. },
  8801. 'arguments = 42': {
  8802. type: 'ExpressionStatement',
  8803. expression: {
  8804. type: 'AssignmentExpression',
  8805. operator: '=',
  8806. left: {
  8807. type: 'Identifier',
  8808. name: 'arguments',
  8809. range: [0, 9],
  8810. loc: {
  8811. start: { line: 1, column: 0 },
  8812. end: { line: 1, column: 9 }
  8813. }
  8814. },
  8815. right: {
  8816. type: 'Literal',
  8817. value: 42,
  8818. raw: '42',
  8819. range: [12, 14],
  8820. loc: {
  8821. start: { line: 1, column: 12 },
  8822. end: { line: 1, column: 14 }
  8823. }
  8824. },
  8825. range: [0, 14],
  8826. loc: {
  8827. start: { line: 1, column: 0 },
  8828. end: { line: 1, column: 14 }
  8829. }
  8830. },
  8831. range: [0, 14],
  8832. loc: {
  8833. start: { line: 1, column: 0 },
  8834. end: { line: 1, column: 14 }
  8835. }
  8836. },
  8837. 'x *= 42': {
  8838. type: 'ExpressionStatement',
  8839. expression: {
  8840. type: 'AssignmentExpression',
  8841. operator: '*=',
  8842. left: {
  8843. type: 'Identifier',
  8844. name: 'x',
  8845. range: [0, 1],
  8846. loc: {
  8847. start: { line: 1, column: 0 },
  8848. end: { line: 1, column: 1 }
  8849. }
  8850. },
  8851. right: {
  8852. type: 'Literal',
  8853. value: 42,
  8854. raw: '42',
  8855. range: [5, 7],
  8856. loc: {
  8857. start: { line: 1, column: 5 },
  8858. end: { line: 1, column: 7 }
  8859. }
  8860. },
  8861. range: [0, 7],
  8862. loc: {
  8863. start: { line: 1, column: 0 },
  8864. end: { line: 1, column: 7 }
  8865. }
  8866. },
  8867. range: [0, 7],
  8868. loc: {
  8869. start: { line: 1, column: 0 },
  8870. end: { line: 1, column: 7 }
  8871. }
  8872. },
  8873. 'x /= 42': {
  8874. type: 'ExpressionStatement',
  8875. expression: {
  8876. type: 'AssignmentExpression',
  8877. operator: '/=',
  8878. left: {
  8879. type: 'Identifier',
  8880. name: 'x',
  8881. range: [0, 1],
  8882. loc: {
  8883. start: { line: 1, column: 0 },
  8884. end: { line: 1, column: 1 }
  8885. }
  8886. },
  8887. right: {
  8888. type: 'Literal',
  8889. value: 42,
  8890. raw: '42',
  8891. range: [5, 7],
  8892. loc: {
  8893. start: { line: 1, column: 5 },
  8894. end: { line: 1, column: 7 }
  8895. }
  8896. },
  8897. range: [0, 7],
  8898. loc: {
  8899. start: { line: 1, column: 0 },
  8900. end: { line: 1, column: 7 }
  8901. }
  8902. },
  8903. range: [0, 7],
  8904. loc: {
  8905. start: { line: 1, column: 0 },
  8906. end: { line: 1, column: 7 }
  8907. }
  8908. },
  8909. 'x %= 42': {
  8910. type: 'ExpressionStatement',
  8911. expression: {
  8912. type: 'AssignmentExpression',
  8913. operator: '%=',
  8914. left: {
  8915. type: 'Identifier',
  8916. name: 'x',
  8917. range: [0, 1],
  8918. loc: {
  8919. start: { line: 1, column: 0 },
  8920. end: { line: 1, column: 1 }
  8921. }
  8922. },
  8923. right: {
  8924. type: 'Literal',
  8925. value: 42,
  8926. raw: '42',
  8927. range: [5, 7],
  8928. loc: {
  8929. start: { line: 1, column: 5 },
  8930. end: { line: 1, column: 7 }
  8931. }
  8932. },
  8933. range: [0, 7],
  8934. loc: {
  8935. start: { line: 1, column: 0 },
  8936. end: { line: 1, column: 7 }
  8937. }
  8938. },
  8939. range: [0, 7],
  8940. loc: {
  8941. start: { line: 1, column: 0 },
  8942. end: { line: 1, column: 7 }
  8943. }
  8944. },
  8945. 'x += 42': {
  8946. type: 'ExpressionStatement',
  8947. expression: {
  8948. type: 'AssignmentExpression',
  8949. operator: '+=',
  8950. left: {
  8951. type: 'Identifier',
  8952. name: 'x',
  8953. range: [0, 1],
  8954. loc: {
  8955. start: { line: 1, column: 0 },
  8956. end: { line: 1, column: 1 }
  8957. }
  8958. },
  8959. right: {
  8960. type: 'Literal',
  8961. value: 42,
  8962. raw: '42',
  8963. range: [5, 7],
  8964. loc: {
  8965. start: { line: 1, column: 5 },
  8966. end: { line: 1, column: 7 }
  8967. }
  8968. },
  8969. range: [0, 7],
  8970. loc: {
  8971. start: { line: 1, column: 0 },
  8972. end: { line: 1, column: 7 }
  8973. }
  8974. },
  8975. range: [0, 7],
  8976. loc: {
  8977. start: { line: 1, column: 0 },
  8978. end: { line: 1, column: 7 }
  8979. }
  8980. },
  8981. 'x -= 42': {
  8982. type: 'ExpressionStatement',
  8983. expression: {
  8984. type: 'AssignmentExpression',
  8985. operator: '-=',
  8986. left: {
  8987. type: 'Identifier',
  8988. name: 'x',
  8989. range: [0, 1],
  8990. loc: {
  8991. start: { line: 1, column: 0 },
  8992. end: { line: 1, column: 1 }
  8993. }
  8994. },
  8995. right: {
  8996. type: 'Literal',
  8997. value: 42,
  8998. raw: '42',
  8999. range: [5, 7],
  9000. loc: {
  9001. start: { line: 1, column: 5 },
  9002. end: { line: 1, column: 7 }
  9003. }
  9004. },
  9005. range: [0, 7],
  9006. loc: {
  9007. start: { line: 1, column: 0 },
  9008. end: { line: 1, column: 7 }
  9009. }
  9010. },
  9011. range: [0, 7],
  9012. loc: {
  9013. start: { line: 1, column: 0 },
  9014. end: { line: 1, column: 7 }
  9015. }
  9016. },
  9017. 'x <<= 42': {
  9018. type: 'ExpressionStatement',
  9019. expression: {
  9020. type: 'AssignmentExpression',
  9021. operator: '<<=',
  9022. left: {
  9023. type: 'Identifier',
  9024. name: 'x',
  9025. range: [0, 1],
  9026. loc: {
  9027. start: { line: 1, column: 0 },
  9028. end: { line: 1, column: 1 }
  9029. }
  9030. },
  9031. right: {
  9032. type: 'Literal',
  9033. value: 42,
  9034. raw: '42',
  9035. range: [6, 8],
  9036. loc: {
  9037. start: { line: 1, column: 6 },
  9038. end: { line: 1, column: 8 }
  9039. }
  9040. },
  9041. range: [0, 8],
  9042. loc: {
  9043. start: { line: 1, column: 0 },
  9044. end: { line: 1, column: 8 }
  9045. }
  9046. },
  9047. range: [0, 8],
  9048. loc: {
  9049. start: { line: 1, column: 0 },
  9050. end: { line: 1, column: 8 }
  9051. }
  9052. },
  9053. 'x >>= 42': {
  9054. type: 'ExpressionStatement',
  9055. expression: {
  9056. type: 'AssignmentExpression',
  9057. operator: '>>=',
  9058. left: {
  9059. type: 'Identifier',
  9060. name: 'x',
  9061. range: [0, 1],
  9062. loc: {
  9063. start: { line: 1, column: 0 },
  9064. end: { line: 1, column: 1 }
  9065. }
  9066. },
  9067. right: {
  9068. type: 'Literal',
  9069. value: 42,
  9070. raw: '42',
  9071. range: [6, 8],
  9072. loc: {
  9073. start: { line: 1, column: 6 },
  9074. end: { line: 1, column: 8 }
  9075. }
  9076. },
  9077. range: [0, 8],
  9078. loc: {
  9079. start: { line: 1, column: 0 },
  9080. end: { line: 1, column: 8 }
  9081. }
  9082. },
  9083. range: [0, 8],
  9084. loc: {
  9085. start: { line: 1, column: 0 },
  9086. end: { line: 1, column: 8 }
  9087. }
  9088. },
  9089. 'x >>>= 42': {
  9090. type: 'ExpressionStatement',
  9091. expression: {
  9092. type: 'AssignmentExpression',
  9093. operator: '>>>=',
  9094. left: {
  9095. type: 'Identifier',
  9096. name: 'x',
  9097. range: [0, 1],
  9098. loc: {
  9099. start: { line: 1, column: 0 },
  9100. end: { line: 1, column: 1 }
  9101. }
  9102. },
  9103. right: {
  9104. type: 'Literal',
  9105. value: 42,
  9106. raw: '42',
  9107. range: [7, 9],
  9108. loc: {
  9109. start: { line: 1, column: 7 },
  9110. end: { line: 1, column: 9 }
  9111. }
  9112. },
  9113. range: [0, 9],
  9114. loc: {
  9115. start: { line: 1, column: 0 },
  9116. end: { line: 1, column: 9 }
  9117. }
  9118. },
  9119. range: [0, 9],
  9120. loc: {
  9121. start: { line: 1, column: 0 },
  9122. end: { line: 1, column: 9 }
  9123. }
  9124. },
  9125. 'x &= 42': {
  9126. type: 'ExpressionStatement',
  9127. expression: {
  9128. type: 'AssignmentExpression',
  9129. operator: '&=',
  9130. left: {
  9131. type: 'Identifier',
  9132. name: 'x',
  9133. range: [0, 1],
  9134. loc: {
  9135. start: { line: 1, column: 0 },
  9136. end: { line: 1, column: 1 }
  9137. }
  9138. },
  9139. right: {
  9140. type: 'Literal',
  9141. value: 42,
  9142. raw: '42',
  9143. range: [5, 7],
  9144. loc: {
  9145. start: { line: 1, column: 5 },
  9146. end: { line: 1, column: 7 }
  9147. }
  9148. },
  9149. range: [0, 7],
  9150. loc: {
  9151. start: { line: 1, column: 0 },
  9152. end: { line: 1, column: 7 }
  9153. }
  9154. },
  9155. range: [0, 7],
  9156. loc: {
  9157. start: { line: 1, column: 0 },
  9158. end: { line: 1, column: 7 }
  9159. }
  9160. },
  9161. 'x ^= 42': {
  9162. type: 'ExpressionStatement',
  9163. expression: {
  9164. type: 'AssignmentExpression',
  9165. operator: '^=',
  9166. left: {
  9167. type: 'Identifier',
  9168. name: 'x',
  9169. range: [0, 1],
  9170. loc: {
  9171. start: { line: 1, column: 0 },
  9172. end: { line: 1, column: 1 }
  9173. }
  9174. },
  9175. right: {
  9176. type: 'Literal',
  9177. value: 42,
  9178. raw: '42',
  9179. range: [5, 7],
  9180. loc: {
  9181. start: { line: 1, column: 5 },
  9182. end: { line: 1, column: 7 }
  9183. }
  9184. },
  9185. range: [0, 7],
  9186. loc: {
  9187. start: { line: 1, column: 0 },
  9188. end: { line: 1, column: 7 }
  9189. }
  9190. },
  9191. range: [0, 7],
  9192. loc: {
  9193. start: { line: 1, column: 0 },
  9194. end: { line: 1, column: 7 }
  9195. }
  9196. },
  9197. 'x |= 42': {
  9198. type: 'ExpressionStatement',
  9199. expression: {
  9200. type: 'AssignmentExpression',
  9201. operator: '|=',
  9202. left: {
  9203. type: 'Identifier',
  9204. name: 'x',
  9205. range: [0, 1],
  9206. loc: {
  9207. start: { line: 1, column: 0 },
  9208. end: { line: 1, column: 1 }
  9209. }
  9210. },
  9211. right: {
  9212. type: 'Literal',
  9213. value: 42,
  9214. raw: '42',
  9215. range: [5, 7],
  9216. loc: {
  9217. start: { line: 1, column: 5 },
  9218. end: { line: 1, column: 7 }
  9219. }
  9220. },
  9221. range: [0, 7],
  9222. loc: {
  9223. start: { line: 1, column: 0 },
  9224. end: { line: 1, column: 7 }
  9225. }
  9226. },
  9227. range: [0, 7],
  9228. loc: {
  9229. start: { line: 1, column: 0 },
  9230. end: { line: 1, column: 7 }
  9231. }
  9232. }
  9233. },
  9234. 'Block': {
  9235. '{ foo }': {
  9236. type: 'BlockStatement',
  9237. body: [{
  9238. type: 'ExpressionStatement',
  9239. expression: {
  9240. type: 'Identifier',
  9241. name: 'foo',
  9242. range: [2, 5],
  9243. loc: {
  9244. start: { line: 1, column: 2 },
  9245. end: { line: 1, column: 5 }
  9246. }
  9247. },
  9248. range: [2, 6],
  9249. loc: {
  9250. start: { line: 1, column: 2 },
  9251. end: { line: 1, column: 6 }
  9252. }
  9253. }],
  9254. range: [0, 7],
  9255. loc: {
  9256. start: { line: 1, column: 0 },
  9257. end: { line: 1, column: 7 }
  9258. }
  9259. },
  9260. '{ doThis(); doThat(); }': {
  9261. type: 'BlockStatement',
  9262. body: [{
  9263. type: 'ExpressionStatement',
  9264. expression: {
  9265. type: 'CallExpression',
  9266. callee: {
  9267. type: 'Identifier',
  9268. name: 'doThis',
  9269. range: [2, 8],
  9270. loc: {
  9271. start: { line: 1, column: 2 },
  9272. end: { line: 1, column: 8 }
  9273. }
  9274. },
  9275. 'arguments': [],
  9276. range: [2, 10],
  9277. loc: {
  9278. start: { line: 1, column: 2 },
  9279. end: { line: 1, column: 10 }
  9280. }
  9281. },
  9282. range: [2, 11],
  9283. loc: {
  9284. start: { line: 1, column: 2 },
  9285. end: { line: 1, column: 11 }
  9286. }
  9287. }, {
  9288. type: 'ExpressionStatement',
  9289. expression: {
  9290. type: 'CallExpression',
  9291. callee: {
  9292. type: 'Identifier',
  9293. name: 'doThat',
  9294. range: [12, 18],
  9295. loc: {
  9296. start: { line: 1, column: 12 },
  9297. end: { line: 1, column: 18 }
  9298. }
  9299. },
  9300. 'arguments': [],
  9301. range: [12, 20],
  9302. loc: {
  9303. start: { line: 1, column: 12 },
  9304. end: { line: 1, column: 20 }
  9305. }
  9306. },
  9307. range: [12, 21],
  9308. loc: {
  9309. start: { line: 1, column: 12 },
  9310. end: { line: 1, column: 21 }
  9311. }
  9312. }],
  9313. range: [0, 23],
  9314. loc: {
  9315. start: { line: 1, column: 0 },
  9316. end: { line: 1, column: 23 }
  9317. }
  9318. },
  9319. '{}': {
  9320. type: 'BlockStatement',
  9321. body: [],
  9322. range: [0, 2],
  9323. loc: {
  9324. start: { line: 1, column: 0 },
  9325. end: { line: 1, column: 2 }
  9326. }
  9327. }
  9328. },
  9329. 'Variable Statement': {
  9330. 'var x': {
  9331. type: 'VariableDeclaration',
  9332. declarations: [{
  9333. type: 'VariableDeclarator',
  9334. id: {
  9335. type: 'Identifier',
  9336. name: 'x',
  9337. range: [4, 5],
  9338. loc: {
  9339. start: { line: 1, column: 4 },
  9340. end: { line: 1, column: 5 }
  9341. }
  9342. },
  9343. init: null,
  9344. range: [4, 5],
  9345. loc: {
  9346. start: { line: 1, column: 4 },
  9347. end: { line: 1, column: 5 }
  9348. }
  9349. }],
  9350. kind: 'var',
  9351. range: [0, 5],
  9352. loc: {
  9353. start: { line: 1, column: 0 },
  9354. end: { line: 1, column: 5 }
  9355. }
  9356. },
  9357. 'var x, y;': {
  9358. type: 'VariableDeclaration',
  9359. declarations: [{
  9360. type: 'VariableDeclarator',
  9361. id: {
  9362. type: 'Identifier',
  9363. name: 'x',
  9364. range: [4, 5],
  9365. loc: {
  9366. start: { line: 1, column: 4 },
  9367. end: { line: 1, column: 5 }
  9368. }
  9369. },
  9370. init: null,
  9371. range: [4, 5],
  9372. loc: {
  9373. start: { line: 1, column: 4 },
  9374. end: { line: 1, column: 5 }
  9375. }
  9376. }, {
  9377. type: 'VariableDeclarator',
  9378. id: {
  9379. type: 'Identifier',
  9380. name: 'y',
  9381. range: [7, 8],
  9382. loc: {
  9383. start: { line: 1, column: 7 },
  9384. end: { line: 1, column: 8 }
  9385. }
  9386. },
  9387. init: null,
  9388. range: [7, 8],
  9389. loc: {
  9390. start: { line: 1, column: 7 },
  9391. end: { line: 1, column: 8 }
  9392. }
  9393. }],
  9394. kind: 'var',
  9395. range: [0, 9],
  9396. loc: {
  9397. start: { line: 1, column: 0 },
  9398. end: { line: 1, column: 9 }
  9399. }
  9400. },
  9401. 'var x = 42': {
  9402. type: 'VariableDeclaration',
  9403. declarations: [{
  9404. type: 'VariableDeclarator',
  9405. id: {
  9406. type: 'Identifier',
  9407. name: 'x',
  9408. range: [4, 5],
  9409. loc: {
  9410. start: { line: 1, column: 4 },
  9411. end: { line: 1, column: 5 }
  9412. }
  9413. },
  9414. init: {
  9415. type: 'Literal',
  9416. value: 42,
  9417. raw: '42',
  9418. range: [8, 10],
  9419. loc: {
  9420. start: { line: 1, column: 8 },
  9421. end: { line: 1, column: 10 }
  9422. }
  9423. },
  9424. range: [4, 10],
  9425. loc: {
  9426. start: { line: 1, column: 4 },
  9427. end: { line: 1, column: 10 }
  9428. }
  9429. }],
  9430. kind: 'var',
  9431. range: [0, 10],
  9432. loc: {
  9433. start: { line: 1, column: 0 },
  9434. end: { line: 1, column: 10 }
  9435. }
  9436. },
  9437. 'var eval = 42, arguments = 42': {
  9438. type: 'VariableDeclaration',
  9439. declarations: [{
  9440. type: 'VariableDeclarator',
  9441. id: {
  9442. type: 'Identifier',
  9443. name: 'eval',
  9444. range: [4, 8],
  9445. loc: {
  9446. start: { line: 1, column: 4 },
  9447. end: { line: 1, column: 8 }
  9448. }
  9449. },
  9450. init: {
  9451. type: 'Literal',
  9452. value: 42,
  9453. raw: '42',
  9454. range: [11, 13],
  9455. loc: {
  9456. start: { line: 1, column: 11 },
  9457. end: { line: 1, column: 13 }
  9458. }
  9459. },
  9460. range: [4, 13],
  9461. loc: {
  9462. start: { line: 1, column: 4 },
  9463. end: { line: 1, column: 13 }
  9464. }
  9465. }, {
  9466. type: 'VariableDeclarator',
  9467. id: {
  9468. type: 'Identifier',
  9469. name: 'arguments',
  9470. range: [15, 24],
  9471. loc: {
  9472. start: { line: 1, column: 15 },
  9473. end: { line: 1, column: 24 }
  9474. }
  9475. },
  9476. init: {
  9477. type: 'Literal',
  9478. value: 42,
  9479. raw: '42',
  9480. range: [27, 29],
  9481. loc: {
  9482. start: { line: 1, column: 27 },
  9483. end: { line: 1, column: 29 }
  9484. }
  9485. },
  9486. range: [15, 29],
  9487. loc: {
  9488. start: { line: 1, column: 15 },
  9489. end: { line: 1, column: 29 }
  9490. }
  9491. }],
  9492. kind: 'var',
  9493. range: [0, 29],
  9494. loc: {
  9495. start: { line: 1, column: 0 },
  9496. end: { line: 1, column: 29 }
  9497. }
  9498. },
  9499. 'var x = 14, y = 3, z = 1977': {
  9500. type: 'VariableDeclaration',
  9501. declarations: [{
  9502. type: 'VariableDeclarator',
  9503. id: {
  9504. type: 'Identifier',
  9505. name: 'x',
  9506. range: [4, 5],
  9507. loc: {
  9508. start: { line: 1, column: 4 },
  9509. end: { line: 1, column: 5 }
  9510. }
  9511. },
  9512. init: {
  9513. type: 'Literal',
  9514. value: 14,
  9515. raw: '14',
  9516. range: [8, 10],
  9517. loc: {
  9518. start: { line: 1, column: 8 },
  9519. end: { line: 1, column: 10 }
  9520. }
  9521. },
  9522. range: [4, 10],
  9523. loc: {
  9524. start: { line: 1, column: 4 },
  9525. end: { line: 1, column: 10 }
  9526. }
  9527. }, {
  9528. type: 'VariableDeclarator',
  9529. id: {
  9530. type: 'Identifier',
  9531. name: 'y',
  9532. range: [12, 13],
  9533. loc: {
  9534. start: { line: 1, column: 12 },
  9535. end: { line: 1, column: 13 }
  9536. }
  9537. },
  9538. init: {
  9539. type: 'Literal',
  9540. value: 3,
  9541. raw: '3',
  9542. range: [16, 17],
  9543. loc: {
  9544. start: { line: 1, column: 16 },
  9545. end: { line: 1, column: 17 }
  9546. }
  9547. },
  9548. range: [12, 17],
  9549. loc: {
  9550. start: { line: 1, column: 12 },
  9551. end: { line: 1, column: 17 }
  9552. }
  9553. }, {
  9554. type: 'VariableDeclarator',
  9555. id: {
  9556. type: 'Identifier',
  9557. name: 'z',
  9558. range: [19, 20],
  9559. loc: {
  9560. start: { line: 1, column: 19 },
  9561. end: { line: 1, column: 20 }
  9562. }
  9563. },
  9564. init: {
  9565. type: 'Literal',
  9566. value: 1977,
  9567. raw: '1977',
  9568. range: [23, 27],
  9569. loc: {
  9570. start: { line: 1, column: 23 },
  9571. end: { line: 1, column: 27 }
  9572. }
  9573. },
  9574. range: [19, 27],
  9575. loc: {
  9576. start: { line: 1, column: 19 },
  9577. end: { line: 1, column: 27 }
  9578. }
  9579. }],
  9580. kind: 'var',
  9581. range: [0, 27],
  9582. loc: {
  9583. start: { line: 1, column: 0 },
  9584. end: { line: 1, column: 27 }
  9585. }
  9586. },
  9587. 'var implements, interface, package': {
  9588. type: 'VariableDeclaration',
  9589. declarations: [{
  9590. type: 'VariableDeclarator',
  9591. id: {
  9592. type: 'Identifier',
  9593. name: 'implements',
  9594. range: [4, 14],
  9595. loc: {
  9596. start: { line: 1, column: 4 },
  9597. end: { line: 1, column: 14 }
  9598. }
  9599. },
  9600. init: null,
  9601. range: [4, 14],
  9602. loc: {
  9603. start: { line: 1, column: 4 },
  9604. end: { line: 1, column: 14 }
  9605. }
  9606. }, {
  9607. type: 'VariableDeclarator',
  9608. id: {
  9609. type: 'Identifier',
  9610. name: 'interface',
  9611. range: [16, 25],
  9612. loc: {
  9613. start: { line: 1, column: 16 },
  9614. end: { line: 1, column: 25 }
  9615. }
  9616. },
  9617. init: null,
  9618. range: [16, 25],
  9619. loc: {
  9620. start: { line: 1, column: 16 },
  9621. end: { line: 1, column: 25 }
  9622. }
  9623. }, {
  9624. type: 'VariableDeclarator',
  9625. id: {
  9626. type: 'Identifier',
  9627. name: 'package',
  9628. range: [27, 34],
  9629. loc: {
  9630. start: { line: 1, column: 27 },
  9631. end: { line: 1, column: 34 }
  9632. }
  9633. },
  9634. init: null,
  9635. range: [27, 34],
  9636. loc: {
  9637. start: { line: 1, column: 27 },
  9638. end: { line: 1, column: 34 }
  9639. }
  9640. }],
  9641. kind: 'var',
  9642. range: [0, 34],
  9643. loc: {
  9644. start: { line: 1, column: 0 },
  9645. end: { line: 1, column: 34 }
  9646. }
  9647. },
  9648. 'var private, protected, public, static': {
  9649. type: 'VariableDeclaration',
  9650. declarations: [{
  9651. type: 'VariableDeclarator',
  9652. id: {
  9653. type: 'Identifier',
  9654. name: 'private',
  9655. range: [4, 11],
  9656. loc: {
  9657. start: { line: 1, column: 4 },
  9658. end: { line: 1, column: 11 }
  9659. }
  9660. },
  9661. init: null,
  9662. range: [4, 11],
  9663. loc: {
  9664. start: { line: 1, column: 4 },
  9665. end: { line: 1, column: 11 }
  9666. }
  9667. }, {
  9668. type: 'VariableDeclarator',
  9669. id: {
  9670. type: 'Identifier',
  9671. name: 'protected',
  9672. range: [13, 22],
  9673. loc: {
  9674. start: { line: 1, column: 13 },
  9675. end: { line: 1, column: 22 }
  9676. }
  9677. },
  9678. init: null,
  9679. range: [13, 22],
  9680. loc: {
  9681. start: { line: 1, column: 13 },
  9682. end: { line: 1, column: 22 }
  9683. }
  9684. }, {
  9685. type: 'VariableDeclarator',
  9686. id: {
  9687. type: 'Identifier',
  9688. name: 'public',
  9689. range: [24, 30],
  9690. loc: {
  9691. start: { line: 1, column: 24 },
  9692. end: { line: 1, column: 30 }
  9693. }
  9694. },
  9695. init: null,
  9696. range: [24, 30],
  9697. loc: {
  9698. start: { line: 1, column: 24 },
  9699. end: { line: 1, column: 30 }
  9700. }
  9701. }, {
  9702. type: 'VariableDeclarator',
  9703. id: {
  9704. type: 'Identifier',
  9705. name: 'static',
  9706. range: [32, 38],
  9707. loc: {
  9708. start: { line: 1, column: 32 },
  9709. end: { line: 1, column: 38 }
  9710. }
  9711. },
  9712. init: null,
  9713. range: [32, 38],
  9714. loc: {
  9715. start: { line: 1, column: 32 },
  9716. end: { line: 1, column: 38 }
  9717. }
  9718. }],
  9719. kind: 'var',
  9720. range: [0, 38],
  9721. loc: {
  9722. start: { line: 1, column: 0 },
  9723. end: { line: 1, column: 38 }
  9724. }
  9725. }
  9726. },
  9727. 'Let Statement': {
  9728. 'let x': {
  9729. type: 'VariableDeclaration',
  9730. declarations: [{
  9731. type: 'VariableDeclarator',
  9732. id: {
  9733. type: 'Identifier',
  9734. name: 'x',
  9735. range: [4, 5],
  9736. loc: {
  9737. start: { line: 1, column: 4 },
  9738. end: { line: 1, column: 5 }
  9739. }
  9740. },
  9741. init: null,
  9742. range: [4, 5],
  9743. loc: {
  9744. start: { line: 1, column: 4 },
  9745. end: { line: 1, column: 5 }
  9746. }
  9747. }],
  9748. kind: 'let',
  9749. range: [0, 5],
  9750. loc: {
  9751. start: { line: 1, column: 0 },
  9752. end: { line: 1, column: 5 }
  9753. }
  9754. },
  9755. '{ let x }': {
  9756. type: 'BlockStatement',
  9757. body: [{
  9758. type: 'VariableDeclaration',
  9759. declarations: [{
  9760. type: 'VariableDeclarator',
  9761. id: {
  9762. type: 'Identifier',
  9763. name: 'x',
  9764. range: [6, 7],
  9765. loc: {
  9766. start: { line: 1, column: 6 },
  9767. end: { line: 1, column: 7 }
  9768. }
  9769. },
  9770. init: null,
  9771. range: [6, 7],
  9772. loc: {
  9773. start: { line: 1, column: 6 },
  9774. end: { line: 1, column: 7 }
  9775. }
  9776. }],
  9777. kind: 'let',
  9778. range: [2, 8],
  9779. loc: {
  9780. start: { line: 1, column: 2 },
  9781. end: { line: 1, column: 8 }
  9782. }
  9783. }],
  9784. range: [0, 9],
  9785. loc: {
  9786. start: { line: 1, column: 0 },
  9787. end: { line: 1, column: 9 }
  9788. }
  9789. },
  9790. '{ let x = 42 }': {
  9791. type: 'BlockStatement',
  9792. body: [{
  9793. type: 'VariableDeclaration',
  9794. declarations: [{
  9795. type: 'VariableDeclarator',
  9796. id: {
  9797. type: 'Identifier',
  9798. name: 'x',
  9799. range: [6, 7],
  9800. loc: {
  9801. start: { line: 1, column: 6 },
  9802. end: { line: 1, column: 7 }
  9803. }
  9804. },
  9805. init: {
  9806. type: 'Literal',
  9807. value: 42,
  9808. raw: '42',
  9809. range: [10, 12],
  9810. loc: {
  9811. start: { line: 1, column: 10 },
  9812. end: { line: 1, column: 12 }
  9813. }
  9814. },
  9815. range: [6, 12],
  9816. loc: {
  9817. start: { line: 1, column: 6 },
  9818. end: { line: 1, column: 12 }
  9819. }
  9820. }],
  9821. kind: 'let',
  9822. range: [2, 13],
  9823. loc: {
  9824. start: { line: 1, column: 2 },
  9825. end: { line: 1, column: 13 }
  9826. }
  9827. }],
  9828. range: [0, 14],
  9829. loc: {
  9830. start: { line: 1, column: 0 },
  9831. end: { line: 1, column: 14 }
  9832. }
  9833. },
  9834. '{ let x = 14, y = 3, z = 1977 }': {
  9835. type: 'BlockStatement',
  9836. body: [{
  9837. type: 'VariableDeclaration',
  9838. declarations: [{
  9839. type: 'VariableDeclarator',
  9840. id: {
  9841. type: 'Identifier',
  9842. name: 'x',
  9843. range: [6, 7],
  9844. loc: {
  9845. start: { line: 1, column: 6 },
  9846. end: { line: 1, column: 7 }
  9847. }
  9848. },
  9849. init: {
  9850. type: 'Literal',
  9851. value: 14,
  9852. raw: '14',
  9853. range: [10, 12],
  9854. loc: {
  9855. start: { line: 1, column: 10 },
  9856. end: { line: 1, column: 12 }
  9857. }
  9858. },
  9859. range: [6, 12],
  9860. loc: {
  9861. start: { line: 1, column: 6 },
  9862. end: { line: 1, column: 12 }
  9863. }
  9864. }, {
  9865. type: 'VariableDeclarator',
  9866. id: {
  9867. type: 'Identifier',
  9868. name: 'y',
  9869. range: [14, 15],
  9870. loc: {
  9871. start: { line: 1, column: 14 },
  9872. end: { line: 1, column: 15 }
  9873. }
  9874. },
  9875. init: {
  9876. type: 'Literal',
  9877. value: 3,
  9878. raw: '3',
  9879. range: [18, 19],
  9880. loc: {
  9881. start: { line: 1, column: 18 },
  9882. end: { line: 1, column: 19 }
  9883. }
  9884. },
  9885. range: [14, 19],
  9886. loc: {
  9887. start: { line: 1, column: 14 },
  9888. end: { line: 1, column: 19 }
  9889. }
  9890. }, {
  9891. type: 'VariableDeclarator',
  9892. id: {
  9893. type: 'Identifier',
  9894. name: 'z',
  9895. range: [21, 22],
  9896. loc: {
  9897. start: { line: 1, column: 21 },
  9898. end: { line: 1, column: 22 }
  9899. }
  9900. },
  9901. init: {
  9902. type: 'Literal',
  9903. value: 1977,
  9904. raw: '1977',
  9905. range: [25, 29],
  9906. loc: {
  9907. start: { line: 1, column: 25 },
  9908. end: { line: 1, column: 29 }
  9909. }
  9910. },
  9911. range: [21, 29],
  9912. loc: {
  9913. start: { line: 1, column: 21 },
  9914. end: { line: 1, column: 29 }
  9915. }
  9916. }],
  9917. kind: 'let',
  9918. range: [2, 30],
  9919. loc: {
  9920. start: { line: 1, column: 2 },
  9921. end: { line: 1, column: 30 }
  9922. }
  9923. }],
  9924. range: [0, 31],
  9925. loc: {
  9926. start: { line: 1, column: 0 },
  9927. end: { line: 1, column: 31 }
  9928. }
  9929. }
  9930. },
  9931. 'Const Statement': {
  9932. 'const x = 42': {
  9933. type: 'VariableDeclaration',
  9934. declarations: [{
  9935. type: 'VariableDeclarator',
  9936. id: {
  9937. type: 'Identifier',
  9938. name: 'x',
  9939. range: [6, 7],
  9940. loc: {
  9941. start: { line: 1, column: 6 },
  9942. end: { line: 1, column: 7 }
  9943. }
  9944. },
  9945. init: {
  9946. type: 'Literal',
  9947. value: 42,
  9948. raw: '42',
  9949. range: [10, 12],
  9950. loc: {
  9951. start: { line: 1, column: 10 },
  9952. end: { line: 1, column: 12 }
  9953. }
  9954. },
  9955. range: [6, 12],
  9956. loc: {
  9957. start: { line: 1, column: 6 },
  9958. end: { line: 1, column: 12 }
  9959. }
  9960. }],
  9961. kind: 'const',
  9962. range: [0, 12],
  9963. loc: {
  9964. start: { line: 1, column: 0 },
  9965. end: { line: 1, column: 12 }
  9966. }
  9967. },
  9968. '{ const x = 42 }': {
  9969. type: 'BlockStatement',
  9970. body: [{
  9971. type: 'VariableDeclaration',
  9972. declarations: [{
  9973. type: 'VariableDeclarator',
  9974. id: {
  9975. type: 'Identifier',
  9976. name: 'x',
  9977. range: [8, 9],
  9978. loc: {
  9979. start: { line: 1, column: 8 },
  9980. end: { line: 1, column: 9 }
  9981. }
  9982. },
  9983. init: {
  9984. type: 'Literal',
  9985. value: 42,
  9986. raw: '42',
  9987. range: [12, 14],
  9988. loc: {
  9989. start: { line: 1, column: 12 },
  9990. end: { line: 1, column: 14 }
  9991. }
  9992. },
  9993. range: [8, 14],
  9994. loc: {
  9995. start: { line: 1, column: 8 },
  9996. end: { line: 1, column: 14 }
  9997. }
  9998. }],
  9999. kind: 'const',
  10000. range: [2, 15],
  10001. loc: {
  10002. start: { line: 1, column: 2 },
  10003. end: { line: 1, column: 15 }
  10004. }
  10005. }],
  10006. range: [0, 16],
  10007. loc: {
  10008. start: { line: 1, column: 0 },
  10009. end: { line: 1, column: 16 }
  10010. }
  10011. },
  10012. '{ const x = 14, y = 3, z = 1977 }': {
  10013. type: 'BlockStatement',
  10014. body: [{
  10015. type: 'VariableDeclaration',
  10016. declarations: [{
  10017. type: 'VariableDeclarator',
  10018. id: {
  10019. type: 'Identifier',
  10020. name: 'x',
  10021. range: [8, 9],
  10022. loc: {
  10023. start: { line: 1, column: 8 },
  10024. end: { line: 1, column: 9 }
  10025. }
  10026. },
  10027. init: {
  10028. type: 'Literal',
  10029. value: 14,
  10030. raw: '14',
  10031. range: [12, 14],
  10032. loc: {
  10033. start: { line: 1, column: 12 },
  10034. end: { line: 1, column: 14 }
  10035. }
  10036. },
  10037. range: [8, 14],
  10038. loc: {
  10039. start: { line: 1, column: 8 },
  10040. end: { line: 1, column: 14 }
  10041. }
  10042. }, {
  10043. type: 'VariableDeclarator',
  10044. id: {
  10045. type: 'Identifier',
  10046. name: 'y',
  10047. range: [16, 17],
  10048. loc: {
  10049. start: { line: 1, column: 16 },
  10050. end: { line: 1, column: 17 }
  10051. }
  10052. },
  10053. init: {
  10054. type: 'Literal',
  10055. value: 3,
  10056. raw: '3',
  10057. range: [20, 21],
  10058. loc: {
  10059. start: { line: 1, column: 20 },
  10060. end: { line: 1, column: 21 }
  10061. }
  10062. },
  10063. range: [16, 21],
  10064. loc: {
  10065. start: { line: 1, column: 16 },
  10066. end: { line: 1, column: 21 }
  10067. }
  10068. }, {
  10069. type: 'VariableDeclarator',
  10070. id: {
  10071. type: 'Identifier',
  10072. name: 'z',
  10073. range: [23, 24],
  10074. loc: {
  10075. start: { line: 1, column: 23 },
  10076. end: { line: 1, column: 24 }
  10077. }
  10078. },
  10079. init: {
  10080. type: 'Literal',
  10081. value: 1977,
  10082. raw: '1977',
  10083. range: [27, 31],
  10084. loc: {
  10085. start: { line: 1, column: 27 },
  10086. end: { line: 1, column: 31 }
  10087. }
  10088. },
  10089. range: [23, 31],
  10090. loc: {
  10091. start: { line: 1, column: 23 },
  10092. end: { line: 1, column: 31 }
  10093. }
  10094. }],
  10095. kind: 'const',
  10096. range: [2, 32],
  10097. loc: {
  10098. start: { line: 1, column: 2 },
  10099. end: { line: 1, column: 32 }
  10100. }
  10101. }],
  10102. range: [0, 33],
  10103. loc: {
  10104. start: { line: 1, column: 0 },
  10105. end: { line: 1, column: 33 }
  10106. }
  10107. }
  10108. },
  10109. 'Empty Statement': {
  10110. ';': {
  10111. type: 'EmptyStatement',
  10112. range: [0, 1],
  10113. loc: {
  10114. start: { line: 1, column: 0 },
  10115. end: { line: 1, column: 1 }
  10116. }
  10117. }
  10118. },
  10119. 'Expression Statement': {
  10120. 'x': {
  10121. type: 'ExpressionStatement',
  10122. expression: {
  10123. type: 'Identifier',
  10124. name: 'x',
  10125. range: [0, 1],
  10126. loc: {
  10127. start: { line: 1, column: 0 },
  10128. end: { line: 1, column: 1 }
  10129. }
  10130. },
  10131. range: [0, 1],
  10132. loc: {
  10133. start: { line: 1, column: 0 },
  10134. end: { line: 1, column: 1 }
  10135. }
  10136. },
  10137. 'x, y': {
  10138. type: 'ExpressionStatement',
  10139. expression: {
  10140. type: 'SequenceExpression',
  10141. expressions: [{
  10142. type: 'Identifier',
  10143. name: 'x',
  10144. range: [0, 1],
  10145. loc: {
  10146. start: { line: 1, column: 0 },
  10147. end: { line: 1, column: 1 }
  10148. }
  10149. }, {
  10150. type: 'Identifier',
  10151. name: 'y',
  10152. range: [3, 4],
  10153. loc: {
  10154. start: { line: 1, column: 3 },
  10155. end: { line: 1, column: 4 }
  10156. }
  10157. }],
  10158. range: [0, 4],
  10159. loc: {
  10160. start: { line: 1, column: 0 },
  10161. end: { line: 1, column: 4 }
  10162. }
  10163. },
  10164. range: [0, 4],
  10165. loc: {
  10166. start: { line: 1, column: 0 },
  10167. end: { line: 1, column: 4 }
  10168. }
  10169. },
  10170. '\\u0061': {
  10171. type: 'ExpressionStatement',
  10172. expression: {
  10173. type: 'Identifier',
  10174. name: 'a',
  10175. range: [0, 6],
  10176. loc: {
  10177. start: { line: 1, column: 0 },
  10178. end: { line: 1, column: 6 }
  10179. }
  10180. },
  10181. range: [0, 6],
  10182. loc: {
  10183. start: { line: 1, column: 0 },
  10184. end: { line: 1, column: 6 }
  10185. }
  10186. },
  10187. 'a\\u0061': {
  10188. type: 'ExpressionStatement',
  10189. expression: {
  10190. type: 'Identifier',
  10191. name: 'aa',
  10192. range: [0, 7],
  10193. loc: {
  10194. start: { line: 1, column: 0 },
  10195. end: { line: 1, column: 7 }
  10196. }
  10197. },
  10198. range: [0, 7],
  10199. loc: {
  10200. start: { line: 1, column: 0 },
  10201. end: { line: 1, column: 7 }
  10202. }
  10203. },
  10204. '\\ua': {
  10205. type: 'ExpressionStatement',
  10206. expression: {
  10207. type: 'Identifier',
  10208. name: 'ua',
  10209. range: [0, 3],
  10210. loc: {
  10211. start: { line: 1, column: 0 },
  10212. end: { line: 1, column: 3 }
  10213. }
  10214. },
  10215. range: [0, 3],
  10216. loc: {
  10217. start: { line: 1, column: 0 },
  10218. end: { line: 1, column: 3 }
  10219. }
  10220. },
  10221. 'a\\u': {
  10222. type: 'ExpressionStatement',
  10223. expression: {
  10224. type: 'Identifier',
  10225. name: 'au',
  10226. range: [0, 3],
  10227. loc: {
  10228. start: { line: 1, column: 0 },
  10229. end: { line: 1, column: 3 }
  10230. }
  10231. },
  10232. range: [0, 3],
  10233. loc: {
  10234. start: { line: 1, column: 0 },
  10235. end: { line: 1, column: 3 }
  10236. }
  10237. }
  10238. },
  10239. 'If Statement': {
  10240. 'if (morning) goodMorning()': {
  10241. type: 'IfStatement',
  10242. test: {
  10243. type: 'Identifier',
  10244. name: 'morning',
  10245. range: [4, 11],
  10246. loc: {
  10247. start: { line: 1, column: 4 },
  10248. end: { line: 1, column: 11 }
  10249. }
  10250. },
  10251. consequent: {
  10252. type: 'ExpressionStatement',
  10253. expression: {
  10254. type: 'CallExpression',
  10255. callee: {
  10256. type: 'Identifier',
  10257. name: 'goodMorning',
  10258. range: [13, 24],
  10259. loc: {
  10260. start: { line: 1, column: 13 },
  10261. end: { line: 1, column: 24 }
  10262. }
  10263. },
  10264. 'arguments': [],
  10265. range: [13, 26],
  10266. loc: {
  10267. start: { line: 1, column: 13 },
  10268. end: { line: 1, column: 26 }
  10269. }
  10270. },
  10271. range: [13, 26],
  10272. loc: {
  10273. start: { line: 1, column: 13 },
  10274. end: { line: 1, column: 26 }
  10275. }
  10276. },
  10277. alternate: null,
  10278. range: [0, 26],
  10279. loc: {
  10280. start: { line: 1, column: 0 },
  10281. end: { line: 1, column: 26 }
  10282. }
  10283. },
  10284. 'if (morning) (function(){})': {
  10285. type: 'IfStatement',
  10286. test: {
  10287. type: 'Identifier',
  10288. name: 'morning',
  10289. range: [4, 11],
  10290. loc: {
  10291. start: { line: 1, column: 4 },
  10292. end: { line: 1, column: 11 }
  10293. }
  10294. },
  10295. consequent: {
  10296. type: 'ExpressionStatement',
  10297. expression: {
  10298. type: 'FunctionExpression',
  10299. id: null,
  10300. params: [],
  10301. defaults: [],
  10302. body: {
  10303. type: 'BlockStatement',
  10304. body: [],
  10305. range: [24, 26],
  10306. loc: {
  10307. start: { line: 1, column: 24 },
  10308. end: { line: 1, column: 26 }
  10309. }
  10310. },
  10311. rest: null,
  10312. generator: false,
  10313. expression: false,
  10314. range: [14, 26],
  10315. loc: {
  10316. start: { line: 1, column: 14 },
  10317. end: { line: 1, column: 26 }
  10318. }
  10319. },
  10320. range: [13, 27],
  10321. loc: {
  10322. start: { line: 1, column: 13 },
  10323. end: { line: 1, column: 27 }
  10324. }
  10325. },
  10326. alternate: null,
  10327. range: [0, 27],
  10328. loc: {
  10329. start: { line: 1, column: 0 },
  10330. end: { line: 1, column: 27 }
  10331. }
  10332. },
  10333. 'if (morning) var x = 0;': {
  10334. type: 'IfStatement',
  10335. test: {
  10336. type: 'Identifier',
  10337. name: 'morning',
  10338. range: [4, 11],
  10339. loc: {
  10340. start: { line: 1, column: 4 },
  10341. end: { line: 1, column: 11 }
  10342. }
  10343. },
  10344. consequent: {
  10345. type: 'VariableDeclaration',
  10346. declarations: [{
  10347. type: 'VariableDeclarator',
  10348. id: {
  10349. type: 'Identifier',
  10350. name: 'x',
  10351. range: [17, 18],
  10352. loc: {
  10353. start: { line: 1, column: 17 },
  10354. end: { line: 1, column: 18 }
  10355. }
  10356. },
  10357. init: {
  10358. type: 'Literal',
  10359. value: 0,
  10360. raw: '0',
  10361. range: [21, 22],
  10362. loc: {
  10363. start: { line: 1, column: 21 },
  10364. end: { line: 1, column: 22 }
  10365. }
  10366. },
  10367. range: [17, 22],
  10368. loc: {
  10369. start: { line: 1, column: 17 },
  10370. end: { line: 1, column: 22 }
  10371. }
  10372. }],
  10373. kind: 'var',
  10374. range: [13, 23],
  10375. loc: {
  10376. start: { line: 1, column: 13 },
  10377. end: { line: 1, column: 23 }
  10378. }
  10379. },
  10380. alternate: null,
  10381. range: [0, 23],
  10382. loc: {
  10383. start: { line: 1, column: 0 },
  10384. end: { line: 1, column: 23 }
  10385. }
  10386. },
  10387. 'if (morning) function a(){}': {
  10388. type: 'IfStatement',
  10389. test: {
  10390. type: 'Identifier',
  10391. name: 'morning',
  10392. range: [4, 11],
  10393. loc: {
  10394. start: { line: 1, column: 4 },
  10395. end: { line: 1, column: 11 }
  10396. }
  10397. },
  10398. consequent: {
  10399. type: 'FunctionDeclaration',
  10400. id: {
  10401. type: 'Identifier',
  10402. name: 'a',
  10403. range: [22, 23],
  10404. loc: {
  10405. start: { line: 1, column: 22 },
  10406. end: { line: 1, column: 23 }
  10407. }
  10408. },
  10409. params: [],
  10410. defaults: [],
  10411. body: {
  10412. type: 'BlockStatement',
  10413. body: [],
  10414. range: [25, 27],
  10415. loc: {
  10416. start: { line: 1, column: 25 },
  10417. end: { line: 1, column: 27 }
  10418. }
  10419. },
  10420. rest: null,
  10421. generator: false,
  10422. expression: false,
  10423. range: [13, 27],
  10424. loc: {
  10425. start: { line: 1, column: 13 },
  10426. end: { line: 1, column: 27 }
  10427. }
  10428. },
  10429. alternate: null,
  10430. range: [0, 27],
  10431. loc: {
  10432. start: { line: 1, column: 0 },
  10433. end: { line: 1, column: 27 }
  10434. }
  10435. },
  10436. 'if (morning) goodMorning(); else goodDay()': {
  10437. type: 'IfStatement',
  10438. test: {
  10439. type: 'Identifier',
  10440. name: 'morning',
  10441. range: [4, 11],
  10442. loc: {
  10443. start: { line: 1, column: 4 },
  10444. end: { line: 1, column: 11 }
  10445. }
  10446. },
  10447. consequent: {
  10448. type: 'ExpressionStatement',
  10449. expression: {
  10450. type: 'CallExpression',
  10451. callee: {
  10452. type: 'Identifier',
  10453. name: 'goodMorning',
  10454. range: [13, 24],
  10455. loc: {
  10456. start: { line: 1, column: 13 },
  10457. end: { line: 1, column: 24 }
  10458. }
  10459. },
  10460. 'arguments': [],
  10461. range: [13, 26],
  10462. loc: {
  10463. start: { line: 1, column: 13 },
  10464. end: { line: 1, column: 26 }
  10465. }
  10466. },
  10467. range: [13, 27],
  10468. loc: {
  10469. start: { line: 1, column: 13 },
  10470. end: { line: 1, column: 27 }
  10471. }
  10472. },
  10473. alternate: {
  10474. type: 'ExpressionStatement',
  10475. expression: {
  10476. type: 'CallExpression',
  10477. callee: {
  10478. type: 'Identifier',
  10479. name: 'goodDay',
  10480. range: [33, 40],
  10481. loc: {
  10482. start: { line: 1, column: 33 },
  10483. end: { line: 1, column: 40 }
  10484. }
  10485. },
  10486. 'arguments': [],
  10487. range: [33, 42],
  10488. loc: {
  10489. start: { line: 1, column: 33 },
  10490. end: { line: 1, column: 42 }
  10491. }
  10492. },
  10493. range: [33, 42],
  10494. loc: {
  10495. start: { line: 1, column: 33 },
  10496. end: { line: 1, column: 42 }
  10497. }
  10498. },
  10499. range: [0, 42],
  10500. loc: {
  10501. start: { line: 1, column: 0 },
  10502. end: { line: 1, column: 42 }
  10503. }
  10504. }
  10505. },
  10506. 'Iteration Statements': {
  10507. 'do keep(); while (true)': {
  10508. type: 'DoWhileStatement',
  10509. body: {
  10510. type: 'ExpressionStatement',
  10511. expression: {
  10512. type: 'CallExpression',
  10513. callee: {
  10514. type: 'Identifier',
  10515. name: 'keep',
  10516. range: [3, 7],
  10517. loc: {
  10518. start: { line: 1, column: 3 },
  10519. end: { line: 1, column: 7 }
  10520. }
  10521. },
  10522. 'arguments': [],
  10523. range: [3, 9],
  10524. loc: {
  10525. start: { line: 1, column: 3 },
  10526. end: { line: 1, column: 9 }
  10527. }
  10528. },
  10529. range: [3, 10],
  10530. loc: {
  10531. start: { line: 1, column: 3 },
  10532. end: { line: 1, column: 10 }
  10533. }
  10534. },
  10535. test: {
  10536. type: 'Literal',
  10537. value: true,
  10538. raw: 'true',
  10539. range: [18, 22],
  10540. loc: {
  10541. start: { line: 1, column: 18 },
  10542. end: { line: 1, column: 22 }
  10543. }
  10544. },
  10545. range: [0, 23],
  10546. loc: {
  10547. start: { line: 1, column: 0 },
  10548. end: { line: 1, column: 23 }
  10549. }
  10550. },
  10551. 'do keep(); while (true);': {
  10552. type: 'DoWhileStatement',
  10553. body: {
  10554. type: 'ExpressionStatement',
  10555. expression: {
  10556. type: 'CallExpression',
  10557. callee: {
  10558. type: 'Identifier',
  10559. name: 'keep',
  10560. range: [3, 7],
  10561. loc: {
  10562. start: { line: 1, column: 3 },
  10563. end: { line: 1, column: 7 }
  10564. }
  10565. },
  10566. 'arguments': [],
  10567. range: [3, 9],
  10568. loc: {
  10569. start: { line: 1, column: 3 },
  10570. end: { line: 1, column: 9 }
  10571. }
  10572. },
  10573. range: [3, 10],
  10574. loc: {
  10575. start: { line: 1, column: 3 },
  10576. end: { line: 1, column: 10 }
  10577. }
  10578. },
  10579. test: {
  10580. type: 'Literal',
  10581. value: true,
  10582. raw: 'true',
  10583. range: [18, 22],
  10584. loc: {
  10585. start: { line: 1, column: 18 },
  10586. end: { line: 1, column: 22 }
  10587. }
  10588. },
  10589. range: [0, 24],
  10590. loc: {
  10591. start: { line: 1, column: 0 },
  10592. end: { line: 1, column: 24 }
  10593. }
  10594. },
  10595. 'do { x++; y--; } while (x < 10)': {
  10596. type: 'DoWhileStatement',
  10597. body: {
  10598. type: 'BlockStatement',
  10599. body: [{
  10600. type: 'ExpressionStatement',
  10601. expression: {
  10602. type: 'UpdateExpression',
  10603. operator: '++',
  10604. argument: {
  10605. type: 'Identifier',
  10606. name: 'x',
  10607. range: [5, 6],
  10608. loc: {
  10609. start: { line: 1, column: 5 },
  10610. end: { line: 1, column: 6 }
  10611. }
  10612. },
  10613. prefix: false,
  10614. range: [5, 8],
  10615. loc: {
  10616. start: { line: 1, column: 5 },
  10617. end: { line: 1, column: 8 }
  10618. }
  10619. },
  10620. range: [5, 9],
  10621. loc: {
  10622. start: { line: 1, column: 5 },
  10623. end: { line: 1, column: 9 }
  10624. }
  10625. }, {
  10626. type: 'ExpressionStatement',
  10627. expression: {
  10628. type: 'UpdateExpression',
  10629. operator: '--',
  10630. argument: {
  10631. type: 'Identifier',
  10632. name: 'y',
  10633. range: [10, 11],
  10634. loc: {
  10635. start: { line: 1, column: 10 },
  10636. end: { line: 1, column: 11 }
  10637. }
  10638. },
  10639. prefix: false,
  10640. range: [10, 13],
  10641. loc: {
  10642. start: { line: 1, column: 10 },
  10643. end: { line: 1, column: 13 }
  10644. }
  10645. },
  10646. range: [10, 14],
  10647. loc: {
  10648. start: { line: 1, column: 10 },
  10649. end: { line: 1, column: 14 }
  10650. }
  10651. }],
  10652. range: [3, 16],
  10653. loc: {
  10654. start: { line: 1, column: 3 },
  10655. end: { line: 1, column: 16 }
  10656. }
  10657. },
  10658. test: {
  10659. type: 'BinaryExpression',
  10660. operator: '<',
  10661. left: {
  10662. type: 'Identifier',
  10663. name: 'x',
  10664. range: [24, 25],
  10665. loc: {
  10666. start: { line: 1, column: 24 },
  10667. end: { line: 1, column: 25 }
  10668. }
  10669. },
  10670. right: {
  10671. type: 'Literal',
  10672. value: 10,
  10673. raw: '10',
  10674. range: [28, 30],
  10675. loc: {
  10676. start: { line: 1, column: 28 },
  10677. end: { line: 1, column: 30 }
  10678. }
  10679. },
  10680. range: [24, 30],
  10681. loc: {
  10682. start: { line: 1, column: 24 },
  10683. end: { line: 1, column: 30 }
  10684. }
  10685. },
  10686. range: [0, 31],
  10687. loc: {
  10688. start: { line: 1, column: 0 },
  10689. end: { line: 1, column: 31 }
  10690. }
  10691. },
  10692. '{ do { } while (false) false }': {
  10693. type: 'BlockStatement',
  10694. body: [{
  10695. type: 'DoWhileStatement',
  10696. body: {
  10697. type: 'BlockStatement',
  10698. body: [],
  10699. range: [5, 8],
  10700. loc: {
  10701. start: { line: 1, column: 5 },
  10702. end: { line: 1, column: 8 }
  10703. }
  10704. },
  10705. test: {
  10706. type: 'Literal',
  10707. value: false,
  10708. raw: 'false',
  10709. range: [16, 21],
  10710. loc: {
  10711. start: { line: 1, column: 16 },
  10712. end: { line: 1, column: 21 }
  10713. }
  10714. },
  10715. range: [2, 22],
  10716. loc: {
  10717. start: { line: 1, column: 2 },
  10718. end: { line: 1, column: 22 }
  10719. }
  10720. }, {
  10721. type: 'ExpressionStatement',
  10722. expression: {
  10723. type: 'Literal',
  10724. value: false,
  10725. raw: 'false',
  10726. range: [23, 28],
  10727. loc: {
  10728. start: { line: 1, column: 23 },
  10729. end: { line: 1, column: 28 }
  10730. }
  10731. },
  10732. range: [23, 29],
  10733. loc: {
  10734. start: { line: 1, column: 23 },
  10735. end: { line: 1, column: 29 }
  10736. }
  10737. }],
  10738. range: [0, 30],
  10739. loc: {
  10740. start: { line: 1, column: 0 },
  10741. end: { line: 1, column: 30 }
  10742. }
  10743. },
  10744. 'while (true) doSomething()': {
  10745. type: 'WhileStatement',
  10746. test: {
  10747. type: 'Literal',
  10748. value: true,
  10749. raw: 'true',
  10750. range: [7, 11],
  10751. loc: {
  10752. start: { line: 1, column: 7 },
  10753. end: { line: 1, column: 11 }
  10754. }
  10755. },
  10756. body: {
  10757. type: 'ExpressionStatement',
  10758. expression: {
  10759. type: 'CallExpression',
  10760. callee: {
  10761. type: 'Identifier',
  10762. name: 'doSomething',
  10763. range: [13, 24],
  10764. loc: {
  10765. start: { line: 1, column: 13 },
  10766. end: { line: 1, column: 24 }
  10767. }
  10768. },
  10769. 'arguments': [],
  10770. range: [13, 26],
  10771. loc: {
  10772. start: { line: 1, column: 13 },
  10773. end: { line: 1, column: 26 }
  10774. }
  10775. },
  10776. range: [13, 26],
  10777. loc: {
  10778. start: { line: 1, column: 13 },
  10779. end: { line: 1, column: 26 }
  10780. }
  10781. },
  10782. range: [0, 26],
  10783. loc: {
  10784. start: { line: 1, column: 0 },
  10785. end: { line: 1, column: 26 }
  10786. }
  10787. },
  10788. 'while (x < 10) { x++; y--; }': {
  10789. type: 'WhileStatement',
  10790. test: {
  10791. type: 'BinaryExpression',
  10792. operator: '<',
  10793. left: {
  10794. type: 'Identifier',
  10795. name: 'x',
  10796. range: [7, 8],
  10797. loc: {
  10798. start: { line: 1, column: 7 },
  10799. end: { line: 1, column: 8 }
  10800. }
  10801. },
  10802. right: {
  10803. type: 'Literal',
  10804. value: 10,
  10805. raw: '10',
  10806. range: [11, 13],
  10807. loc: {
  10808. start: { line: 1, column: 11 },
  10809. end: { line: 1, column: 13 }
  10810. }
  10811. },
  10812. range: [7, 13],
  10813. loc: {
  10814. start: { line: 1, column: 7 },
  10815. end: { line: 1, column: 13 }
  10816. }
  10817. },
  10818. body: {
  10819. type: 'BlockStatement',
  10820. body: [{
  10821. type: 'ExpressionStatement',
  10822. expression: {
  10823. type: 'UpdateExpression',
  10824. operator: '++',
  10825. argument: {
  10826. type: 'Identifier',
  10827. name: 'x',
  10828. range: [17, 18],
  10829. loc: {
  10830. start: { line: 1, column: 17 },
  10831. end: { line: 1, column: 18 }
  10832. }
  10833. },
  10834. prefix: false,
  10835. range: [17, 20],
  10836. loc: {
  10837. start: { line: 1, column: 17 },
  10838. end: { line: 1, column: 20 }
  10839. }
  10840. },
  10841. range: [17, 21],
  10842. loc: {
  10843. start: { line: 1, column: 17 },
  10844. end: { line: 1, column: 21 }
  10845. }
  10846. }, {
  10847. type: 'ExpressionStatement',
  10848. expression: {
  10849. type: 'UpdateExpression',
  10850. operator: '--',
  10851. argument: {
  10852. type: 'Identifier',
  10853. name: 'y',
  10854. range: [22, 23],
  10855. loc: {
  10856. start: { line: 1, column: 22 },
  10857. end: { line: 1, column: 23 }
  10858. }
  10859. },
  10860. prefix: false,
  10861. range: [22, 25],
  10862. loc: {
  10863. start: { line: 1, column: 22 },
  10864. end: { line: 1, column: 25 }
  10865. }
  10866. },
  10867. range: [22, 26],
  10868. loc: {
  10869. start: { line: 1, column: 22 },
  10870. end: { line: 1, column: 26 }
  10871. }
  10872. }],
  10873. range: [15, 28],
  10874. loc: {
  10875. start: { line: 1, column: 15 },
  10876. end: { line: 1, column: 28 }
  10877. }
  10878. },
  10879. range: [0, 28],
  10880. loc: {
  10881. start: { line: 1, column: 0 },
  10882. end: { line: 1, column: 28 }
  10883. }
  10884. },
  10885. 'for(;;);': {
  10886. type: 'ForStatement',
  10887. init: null,
  10888. test: null,
  10889. update: null,
  10890. body: {
  10891. type: 'EmptyStatement',
  10892. range: [7, 8],
  10893. loc: {
  10894. start: { line: 1, column: 7 },
  10895. end: { line: 1, column: 8 }
  10896. }
  10897. },
  10898. range: [0, 8],
  10899. loc: {
  10900. start: { line: 1, column: 0 },
  10901. end: { line: 1, column: 8 }
  10902. }
  10903. },
  10904. 'for(;;){}': {
  10905. type: 'ForStatement',
  10906. init: null,
  10907. test: null,
  10908. update: null,
  10909. body: {
  10910. type: 'BlockStatement',
  10911. body: [],
  10912. range: [7, 9],
  10913. loc: {
  10914. start: { line: 1, column: 7 },
  10915. end: { line: 1, column: 9 }
  10916. }
  10917. },
  10918. range: [0, 9],
  10919. loc: {
  10920. start: { line: 1, column: 0 },
  10921. end: { line: 1, column: 9 }
  10922. }
  10923. },
  10924. 'for(x = 0;;);': {
  10925. type: 'ForStatement',
  10926. init: {
  10927. type: 'AssignmentExpression',
  10928. operator: '=',
  10929. left: {
  10930. type: 'Identifier',
  10931. name: 'x',
  10932. range: [4, 5],
  10933. loc: {
  10934. start: { line: 1, column: 4 },
  10935. end: { line: 1, column: 5 }
  10936. }
  10937. },
  10938. right: {
  10939. type: 'Literal',
  10940. value: 0,
  10941. raw: '0',
  10942. range: [8, 9],
  10943. loc: {
  10944. start: { line: 1, column: 8 },
  10945. end: { line: 1, column: 9 }
  10946. }
  10947. },
  10948. range: [4, 9],
  10949. loc: {
  10950. start: { line: 1, column: 4 },
  10951. end: { line: 1, column: 9 }
  10952. }
  10953. },
  10954. test: null,
  10955. update: null,
  10956. body: {
  10957. type: 'EmptyStatement',
  10958. range: [12, 13],
  10959. loc: {
  10960. start: { line: 1, column: 12 },
  10961. end: { line: 1, column: 13 }
  10962. }
  10963. },
  10964. range: [0, 13],
  10965. loc: {
  10966. start: { line: 1, column: 0 },
  10967. end: { line: 1, column: 13 }
  10968. }
  10969. },
  10970. 'for(var x = 0;;);': {
  10971. type: 'ForStatement',
  10972. init: {
  10973. type: 'VariableDeclaration',
  10974. declarations: [{
  10975. type: 'VariableDeclarator',
  10976. id: {
  10977. type: 'Identifier',
  10978. name: 'x',
  10979. range: [8, 9],
  10980. loc: {
  10981. start: { line: 1, column: 8 },
  10982. end: { line: 1, column: 9 }
  10983. }
  10984. },
  10985. init: {
  10986. type: 'Literal',
  10987. value: 0,
  10988. raw: '0',
  10989. range: [12, 13],
  10990. loc: {
  10991. start: { line: 1, column: 12 },
  10992. end: { line: 1, column: 13 }
  10993. }
  10994. },
  10995. range: [8, 13],
  10996. loc: {
  10997. start: { line: 1, column: 8 },
  10998. end: { line: 1, column: 13 }
  10999. }
  11000. }],
  11001. kind: 'var',
  11002. range: [4, 13],
  11003. loc: {
  11004. start: { line: 1, column: 4 },
  11005. end: { line: 1, column: 13 }
  11006. }
  11007. },
  11008. test: null,
  11009. update: null,
  11010. body: {
  11011. type: 'EmptyStatement',
  11012. range: [16, 17],
  11013. loc: {
  11014. start: { line: 1, column: 16 },
  11015. end: { line: 1, column: 17 }
  11016. }
  11017. },
  11018. range: [0, 17],
  11019. loc: {
  11020. start: { line: 1, column: 0 },
  11021. end: { line: 1, column: 17 }
  11022. }
  11023. },
  11024. 'for(let x = 0;;);': {
  11025. type: 'ForStatement',
  11026. init: {
  11027. type: 'VariableDeclaration',
  11028. declarations: [{
  11029. type: 'VariableDeclarator',
  11030. id: {
  11031. type: 'Identifier',
  11032. name: 'x',
  11033. range: [8, 9],
  11034. loc: {
  11035. start: { line: 1, column: 8 },
  11036. end: { line: 1, column: 9 }
  11037. }
  11038. },
  11039. init: {
  11040. type: 'Literal',
  11041. value: 0,
  11042. raw: '0',
  11043. range: [12, 13],
  11044. loc: {
  11045. start: { line: 1, column: 12 },
  11046. end: { line: 1, column: 13 }
  11047. }
  11048. },
  11049. range: [8, 13],
  11050. loc: {
  11051. start: { line: 1, column: 8 },
  11052. end: { line: 1, column: 13 }
  11053. }
  11054. }],
  11055. kind: 'let',
  11056. range: [4, 13],
  11057. loc: {
  11058. start: { line: 1, column: 4 },
  11059. end: { line: 1, column: 13 }
  11060. }
  11061. },
  11062. test: null,
  11063. update: null,
  11064. body: {
  11065. type: 'EmptyStatement',
  11066. range: [16, 17],
  11067. loc: {
  11068. start: { line: 1, column: 16 },
  11069. end: { line: 1, column: 17 }
  11070. }
  11071. },
  11072. range: [0, 17],
  11073. loc: {
  11074. start: { line: 1, column: 0 },
  11075. end: { line: 1, column: 17 }
  11076. }
  11077. },
  11078. 'for(var x = 0, y = 1;;);': {
  11079. type: 'ForStatement',
  11080. init: {
  11081. type: 'VariableDeclaration',
  11082. declarations: [{
  11083. type: 'VariableDeclarator',
  11084. id: {
  11085. type: 'Identifier',
  11086. name: 'x',
  11087. range: [8, 9],
  11088. loc: {
  11089. start: { line: 1, column: 8 },
  11090. end: { line: 1, column: 9 }
  11091. }
  11092. },
  11093. init: {
  11094. type: 'Literal',
  11095. value: 0,
  11096. raw: '0',
  11097. range: [12, 13],
  11098. loc: {
  11099. start: { line: 1, column: 12 },
  11100. end: { line: 1, column: 13 }
  11101. }
  11102. },
  11103. range: [8, 13],
  11104. loc: {
  11105. start: { line: 1, column: 8 },
  11106. end: { line: 1, column: 13 }
  11107. }
  11108. }, {
  11109. type: 'VariableDeclarator',
  11110. id: {
  11111. type: 'Identifier',
  11112. name: 'y',
  11113. range: [15, 16],
  11114. loc: {
  11115. start: { line: 1, column: 15 },
  11116. end: { line: 1, column: 16 }
  11117. }
  11118. },
  11119. init: {
  11120. type: 'Literal',
  11121. value: 1,
  11122. raw: '1',
  11123. range: [19, 20],
  11124. loc: {
  11125. start: { line: 1, column: 19 },
  11126. end: { line: 1, column: 20 }
  11127. }
  11128. },
  11129. range: [15, 20],
  11130. loc: {
  11131. start: { line: 1, column: 15 },
  11132. end: { line: 1, column: 20 }
  11133. }
  11134. }],
  11135. kind: 'var',
  11136. range: [4, 20],
  11137. loc: {
  11138. start: { line: 1, column: 4 },
  11139. end: { line: 1, column: 20 }
  11140. }
  11141. },
  11142. test: null,
  11143. update: null,
  11144. body: {
  11145. type: 'EmptyStatement',
  11146. range: [23, 24],
  11147. loc: {
  11148. start: { line: 1, column: 23 },
  11149. end: { line: 1, column: 24 }
  11150. }
  11151. },
  11152. range: [0, 24],
  11153. loc: {
  11154. start: { line: 1, column: 0 },
  11155. end: { line: 1, column: 24 }
  11156. }
  11157. },
  11158. 'for(x = 0; x < 42;);': {
  11159. type: 'ForStatement',
  11160. init: {
  11161. type: 'AssignmentExpression',
  11162. operator: '=',
  11163. left: {
  11164. type: 'Identifier',
  11165. name: 'x',
  11166. range: [4, 5],
  11167. loc: {
  11168. start: { line: 1, column: 4 },
  11169. end: { line: 1, column: 5 }
  11170. }
  11171. },
  11172. right: {
  11173. type: 'Literal',
  11174. value: 0,
  11175. raw: '0',
  11176. range: [8, 9],
  11177. loc: {
  11178. start: { line: 1, column: 8 },
  11179. end: { line: 1, column: 9 }
  11180. }
  11181. },
  11182. range: [4, 9],
  11183. loc: {
  11184. start: { line: 1, column: 4 },
  11185. end: { line: 1, column: 9 }
  11186. }
  11187. },
  11188. test: {
  11189. type: 'BinaryExpression',
  11190. operator: '<',
  11191. left: {
  11192. type: 'Identifier',
  11193. name: 'x',
  11194. range: [11, 12],
  11195. loc: {
  11196. start: { line: 1, column: 11 },
  11197. end: { line: 1, column: 12 }
  11198. }
  11199. },
  11200. right: {
  11201. type: 'Literal',
  11202. value: 42,
  11203. raw: '42',
  11204. range: [15, 17],
  11205. loc: {
  11206. start: { line: 1, column: 15 },
  11207. end: { line: 1, column: 17 }
  11208. }
  11209. },
  11210. range: [11, 17],
  11211. loc: {
  11212. start: { line: 1, column: 11 },
  11213. end: { line: 1, column: 17 }
  11214. }
  11215. },
  11216. update: null,
  11217. body: {
  11218. type: 'EmptyStatement',
  11219. range: [19, 20],
  11220. loc: {
  11221. start: { line: 1, column: 19 },
  11222. end: { line: 1, column: 20 }
  11223. }
  11224. },
  11225. range: [0, 20],
  11226. loc: {
  11227. start: { line: 1, column: 0 },
  11228. end: { line: 1, column: 20 }
  11229. }
  11230. },
  11231. 'for(x = 0; x < 42; x++);': {
  11232. type: 'ForStatement',
  11233. init: {
  11234. type: 'AssignmentExpression',
  11235. operator: '=',
  11236. left: {
  11237. type: 'Identifier',
  11238. name: 'x',
  11239. range: [4, 5],
  11240. loc: {
  11241. start: { line: 1, column: 4 },
  11242. end: { line: 1, column: 5 }
  11243. }
  11244. },
  11245. right: {
  11246. type: 'Literal',
  11247. value: 0,
  11248. raw: '0',
  11249. range: [8, 9],
  11250. loc: {
  11251. start: { line: 1, column: 8 },
  11252. end: { line: 1, column: 9 }
  11253. }
  11254. },
  11255. range: [4, 9],
  11256. loc: {
  11257. start: { line: 1, column: 4 },
  11258. end: { line: 1, column: 9 }
  11259. }
  11260. },
  11261. test: {
  11262. type: 'BinaryExpression',
  11263. operator: '<',
  11264. left: {
  11265. type: 'Identifier',
  11266. name: 'x',
  11267. range: [11, 12],
  11268. loc: {
  11269. start: { line: 1, column: 11 },
  11270. end: { line: 1, column: 12 }
  11271. }
  11272. },
  11273. right: {
  11274. type: 'Literal',
  11275. value: 42,
  11276. raw: '42',
  11277. range: [15, 17],
  11278. loc: {
  11279. start: { line: 1, column: 15 },
  11280. end: { line: 1, column: 17 }
  11281. }
  11282. },
  11283. range: [11, 17],
  11284. loc: {
  11285. start: { line: 1, column: 11 },
  11286. end: { line: 1, column: 17 }
  11287. }
  11288. },
  11289. update: {
  11290. type: 'UpdateExpression',
  11291. operator: '++',
  11292. argument: {
  11293. type: 'Identifier',
  11294. name: 'x',
  11295. range: [19, 20],
  11296. loc: {
  11297. start: { line: 1, column: 19 },
  11298. end: { line: 1, column: 20 }
  11299. }
  11300. },
  11301. prefix: false,
  11302. range: [19, 22],
  11303. loc: {
  11304. start: { line: 1, column: 19 },
  11305. end: { line: 1, column: 22 }
  11306. }
  11307. },
  11308. body: {
  11309. type: 'EmptyStatement',
  11310. range: [23, 24],
  11311. loc: {
  11312. start: { line: 1, column: 23 },
  11313. end: { line: 1, column: 24 }
  11314. }
  11315. },
  11316. range: [0, 24],
  11317. loc: {
  11318. start: { line: 1, column: 0 },
  11319. end: { line: 1, column: 24 }
  11320. }
  11321. },
  11322. 'for(x = 0; x < 42; x++) process(x);': {
  11323. type: 'ForStatement',
  11324. init: {
  11325. type: 'AssignmentExpression',
  11326. operator: '=',
  11327. left: {
  11328. type: 'Identifier',
  11329. name: 'x',
  11330. range: [4, 5],
  11331. loc: {
  11332. start: { line: 1, column: 4 },
  11333. end: { line: 1, column: 5 }
  11334. }
  11335. },
  11336. right: {
  11337. type: 'Literal',
  11338. value: 0,
  11339. raw: '0',
  11340. range: [8, 9],
  11341. loc: {
  11342. start: { line: 1, column: 8 },
  11343. end: { line: 1, column: 9 }
  11344. }
  11345. },
  11346. range: [4, 9],
  11347. loc: {
  11348. start: { line: 1, column: 4 },
  11349. end: { line: 1, column: 9 }
  11350. }
  11351. },
  11352. test: {
  11353. type: 'BinaryExpression',
  11354. operator: '<',
  11355. left: {
  11356. type: 'Identifier',
  11357. name: 'x',
  11358. range: [11, 12],
  11359. loc: {
  11360. start: { line: 1, column: 11 },
  11361. end: { line: 1, column: 12 }
  11362. }
  11363. },
  11364. right: {
  11365. type: 'Literal',
  11366. value: 42,
  11367. raw: '42',
  11368. range: [15, 17],
  11369. loc: {
  11370. start: { line: 1, column: 15 },
  11371. end: { line: 1, column: 17 }
  11372. }
  11373. },
  11374. range: [11, 17],
  11375. loc: {
  11376. start: { line: 1, column: 11 },
  11377. end: { line: 1, column: 17 }
  11378. }
  11379. },
  11380. update: {
  11381. type: 'UpdateExpression',
  11382. operator: '++',
  11383. argument: {
  11384. type: 'Identifier',
  11385. name: 'x',
  11386. range: [19, 20],
  11387. loc: {
  11388. start: { line: 1, column: 19 },
  11389. end: { line: 1, column: 20 }
  11390. }
  11391. },
  11392. prefix: false,
  11393. range: [19, 22],
  11394. loc: {
  11395. start: { line: 1, column: 19 },
  11396. end: { line: 1, column: 22 }
  11397. }
  11398. },
  11399. body: {
  11400. type: 'ExpressionStatement',
  11401. expression: {
  11402. type: 'CallExpression',
  11403. callee: {
  11404. type: 'Identifier',
  11405. name: 'process',
  11406. range: [24, 31],
  11407. loc: {
  11408. start: { line: 1, column: 24 },
  11409. end: { line: 1, column: 31 }
  11410. }
  11411. },
  11412. 'arguments': [{
  11413. type: 'Identifier',
  11414. name: 'x',
  11415. range: [32, 33],
  11416. loc: {
  11417. start: { line: 1, column: 32 },
  11418. end: { line: 1, column: 33 }
  11419. }
  11420. }],
  11421. range: [24, 34],
  11422. loc: {
  11423. start: { line: 1, column: 24 },
  11424. end: { line: 1, column: 34 }
  11425. }
  11426. },
  11427. range: [24, 35],
  11428. loc: {
  11429. start: { line: 1, column: 24 },
  11430. end: { line: 1, column: 35 }
  11431. }
  11432. },
  11433. range: [0, 35],
  11434. loc: {
  11435. start: { line: 1, column: 0 },
  11436. end: { line: 1, column: 35 }
  11437. }
  11438. },
  11439. 'for(x in list) process(x);': {
  11440. type: 'ForInStatement',
  11441. left: {
  11442. type: 'Identifier',
  11443. name: 'x',
  11444. range: [4, 5],
  11445. loc: {
  11446. start: { line: 1, column: 4 },
  11447. end: { line: 1, column: 5 }
  11448. }
  11449. },
  11450. right: {
  11451. type: 'Identifier',
  11452. name: 'list',
  11453. range: [9, 13],
  11454. loc: {
  11455. start: { line: 1, column: 9 },
  11456. end: { line: 1, column: 13 }
  11457. }
  11458. },
  11459. body: {
  11460. type: 'ExpressionStatement',
  11461. expression: {
  11462. type: 'CallExpression',
  11463. callee: {
  11464. type: 'Identifier',
  11465. name: 'process',
  11466. range: [15, 22],
  11467. loc: {
  11468. start: { line: 1, column: 15 },
  11469. end: { line: 1, column: 22 }
  11470. }
  11471. },
  11472. 'arguments': [{
  11473. type: 'Identifier',
  11474. name: 'x',
  11475. range: [23, 24],
  11476. loc: {
  11477. start: { line: 1, column: 23 },
  11478. end: { line: 1, column: 24 }
  11479. }
  11480. }],
  11481. range: [15, 25],
  11482. loc: {
  11483. start: { line: 1, column: 15 },
  11484. end: { line: 1, column: 25 }
  11485. }
  11486. },
  11487. range: [15, 26],
  11488. loc: {
  11489. start: { line: 1, column: 15 },
  11490. end: { line: 1, column: 26 }
  11491. }
  11492. },
  11493. each: false,
  11494. range: [0, 26],
  11495. loc: {
  11496. start: { line: 1, column: 0 },
  11497. end: { line: 1, column: 26 }
  11498. }
  11499. },
  11500. 'for (var x in list) process(x);': {
  11501. type: 'ForInStatement',
  11502. left: {
  11503. type: 'VariableDeclaration',
  11504. declarations: [{
  11505. type: 'VariableDeclarator',
  11506. id: {
  11507. type: 'Identifier',
  11508. name: 'x',
  11509. range: [9, 10],
  11510. loc: {
  11511. start: { line: 1, column: 9 },
  11512. end: { line: 1, column: 10 }
  11513. }
  11514. },
  11515. init: null,
  11516. range: [9, 10],
  11517. loc: {
  11518. start: { line: 1, column: 9 },
  11519. end: { line: 1, column: 10 }
  11520. }
  11521. }],
  11522. kind: 'var',
  11523. range: [5, 10],
  11524. loc: {
  11525. start: { line: 1, column: 5 },
  11526. end: { line: 1, column: 10 }
  11527. }
  11528. },
  11529. right: {
  11530. type: 'Identifier',
  11531. name: 'list',
  11532. range: [14, 18],
  11533. loc: {
  11534. start: { line: 1, column: 14 },
  11535. end: { line: 1, column: 18 }
  11536. }
  11537. },
  11538. body: {
  11539. type: 'ExpressionStatement',
  11540. expression: {
  11541. type: 'CallExpression',
  11542. callee: {
  11543. type: 'Identifier',
  11544. name: 'process',
  11545. range: [20, 27],
  11546. loc: {
  11547. start: { line: 1, column: 20 },
  11548. end: { line: 1, column: 27 }
  11549. }
  11550. },
  11551. 'arguments': [{
  11552. type: 'Identifier',
  11553. name: 'x',
  11554. range: [28, 29],
  11555. loc: {
  11556. start: { line: 1, column: 28 },
  11557. end: { line: 1, column: 29 }
  11558. }
  11559. }],
  11560. range: [20, 30],
  11561. loc: {
  11562. start: { line: 1, column: 20 },
  11563. end: { line: 1, column: 30 }
  11564. }
  11565. },
  11566. range: [20, 31],
  11567. loc: {
  11568. start: { line: 1, column: 20 },
  11569. end: { line: 1, column: 31 }
  11570. }
  11571. },
  11572. each: false,
  11573. range: [0, 31],
  11574. loc: {
  11575. start: { line: 1, column: 0 },
  11576. end: { line: 1, column: 31 }
  11577. }
  11578. },
  11579. 'for (var x = 42 in list) process(x);': {
  11580. type: 'ForInStatement',
  11581. left: {
  11582. type: 'VariableDeclaration',
  11583. declarations: [{
  11584. type: 'VariableDeclarator',
  11585. id: {
  11586. type: 'Identifier',
  11587. name: 'x',
  11588. range: [9, 10],
  11589. loc: {
  11590. start: { line: 1, column: 9 },
  11591. end: { line: 1, column: 10 }
  11592. }
  11593. },
  11594. init: {
  11595. type: 'Literal',
  11596. value: 42,
  11597. raw: '42',
  11598. range: [13, 15],
  11599. loc: {
  11600. start: { line: 1, column: 13 },
  11601. end: { line: 1, column: 15 }
  11602. }
  11603. },
  11604. range: [9, 15],
  11605. loc: {
  11606. start: { line: 1, column: 9 },
  11607. end: { line: 1, column: 15 }
  11608. }
  11609. }],
  11610. kind: 'var',
  11611. range: [5, 15],
  11612. loc: {
  11613. start: { line: 1, column: 5 },
  11614. end: { line: 1, column: 15 }
  11615. }
  11616. },
  11617. right: {
  11618. type: 'Identifier',
  11619. name: 'list',
  11620. range: [19, 23],
  11621. loc: {
  11622. start: { line: 1, column: 19 },
  11623. end: { line: 1, column: 23 }
  11624. }
  11625. },
  11626. body: {
  11627. type: 'ExpressionStatement',
  11628. expression: {
  11629. type: 'CallExpression',
  11630. callee: {
  11631. type: 'Identifier',
  11632. name: 'process',
  11633. range: [25, 32],
  11634. loc: {
  11635. start: { line: 1, column: 25 },
  11636. end: { line: 1, column: 32 }
  11637. }
  11638. },
  11639. 'arguments': [{
  11640. type: 'Identifier',
  11641. name: 'x',
  11642. range: [33, 34],
  11643. loc: {
  11644. start: { line: 1, column: 33 },
  11645. end: { line: 1, column: 34 }
  11646. }
  11647. }],
  11648. range: [25, 35],
  11649. loc: {
  11650. start: { line: 1, column: 25 },
  11651. end: { line: 1, column: 35 }
  11652. }
  11653. },
  11654. range: [25, 36],
  11655. loc: {
  11656. start: { line: 1, column: 25 },
  11657. end: { line: 1, column: 36 }
  11658. }
  11659. },
  11660. each: false,
  11661. range: [0, 36],
  11662. loc: {
  11663. start: { line: 1, column: 0 },
  11664. end: { line: 1, column: 36 }
  11665. }
  11666. },
  11667. 'for (let x in list) process(x);': {
  11668. type: 'ForInStatement',
  11669. left: {
  11670. type: 'VariableDeclaration',
  11671. declarations: [{
  11672. type: 'VariableDeclarator',
  11673. id: {
  11674. type: 'Identifier',
  11675. name: 'x',
  11676. range: [9, 10],
  11677. loc: {
  11678. start: { line: 1, column: 9 },
  11679. end: { line: 1, column: 10 }
  11680. }
  11681. },
  11682. init: null,
  11683. range: [9, 10],
  11684. loc: {
  11685. start: { line: 1, column: 9 },
  11686. end: { line: 1, column: 10 }
  11687. }
  11688. }],
  11689. kind: 'let',
  11690. range: [5, 10],
  11691. loc: {
  11692. start: { line: 1, column: 5 },
  11693. end: { line: 1, column: 10 }
  11694. }
  11695. },
  11696. right: {
  11697. type: 'Identifier',
  11698. name: 'list',
  11699. range: [14, 18],
  11700. loc: {
  11701. start: { line: 1, column: 14 },
  11702. end: { line: 1, column: 18 }
  11703. }
  11704. },
  11705. body: {
  11706. type: 'ExpressionStatement',
  11707. expression: {
  11708. type: 'CallExpression',
  11709. callee: {
  11710. type: 'Identifier',
  11711. name: 'process',
  11712. range: [20, 27],
  11713. loc: {
  11714. start: { line: 1, column: 20 },
  11715. end: { line: 1, column: 27 }
  11716. }
  11717. },
  11718. 'arguments': [{
  11719. type: 'Identifier',
  11720. name: 'x',
  11721. range: [28, 29],
  11722. loc: {
  11723. start: { line: 1, column: 28 },
  11724. end: { line: 1, column: 29 }
  11725. }
  11726. }],
  11727. range: [20, 30],
  11728. loc: {
  11729. start: { line: 1, column: 20 },
  11730. end: { line: 1, column: 30 }
  11731. }
  11732. },
  11733. range: [20, 31],
  11734. loc: {
  11735. start: { line: 1, column: 20 },
  11736. end: { line: 1, column: 31 }
  11737. }
  11738. },
  11739. each: false,
  11740. range: [0, 31],
  11741. loc: {
  11742. start: { line: 1, column: 0 },
  11743. end: { line: 1, column: 31 }
  11744. }
  11745. },
  11746. 'for (let x = 42 in list) process(x);': {
  11747. type: 'ForInStatement',
  11748. left: {
  11749. type: 'VariableDeclaration',
  11750. declarations: [{
  11751. type: 'VariableDeclarator',
  11752. id: {
  11753. type: 'Identifier',
  11754. name: 'x',
  11755. range: [9, 10],
  11756. loc: {
  11757. start: { line: 1, column: 9 },
  11758. end: { line: 1, column: 10 }
  11759. }
  11760. },
  11761. init: {
  11762. type: 'Literal',
  11763. value: 42,
  11764. raw: '42',
  11765. range: [13, 15],
  11766. loc: {
  11767. start: { line: 1, column: 13 },
  11768. end: { line: 1, column: 15 }
  11769. }
  11770. },
  11771. range: [9, 15],
  11772. loc: {
  11773. start: { line: 1, column: 9 },
  11774. end: { line: 1, column: 15 }
  11775. }
  11776. }],
  11777. kind: 'let',
  11778. range: [5, 15],
  11779. loc: {
  11780. start: { line: 1, column: 5 },
  11781. end: { line: 1, column: 15 }
  11782. }
  11783. },
  11784. right: {
  11785. type: 'Identifier',
  11786. name: 'list',
  11787. range: [19, 23],
  11788. loc: {
  11789. start: { line: 1, column: 19 },
  11790. end: { line: 1, column: 23 }
  11791. }
  11792. },
  11793. body: {
  11794. type: 'ExpressionStatement',
  11795. expression: {
  11796. type: 'CallExpression',
  11797. callee: {
  11798. type: 'Identifier',
  11799. name: 'process',
  11800. range: [25, 32],
  11801. loc: {
  11802. start: { line: 1, column: 25 },
  11803. end: { line: 1, column: 32 }
  11804. }
  11805. },
  11806. 'arguments': [{
  11807. type: 'Identifier',
  11808. name: 'x',
  11809. range: [33, 34],
  11810. loc: {
  11811. start: { line: 1, column: 33 },
  11812. end: { line: 1, column: 34 }
  11813. }
  11814. }],
  11815. range: [25, 35],
  11816. loc: {
  11817. start: { line: 1, column: 25 },
  11818. end: { line: 1, column: 35 }
  11819. }
  11820. },
  11821. range: [25, 36],
  11822. loc: {
  11823. start: { line: 1, column: 25 },
  11824. end: { line: 1, column: 36 }
  11825. }
  11826. },
  11827. each: false,
  11828. range: [0, 36],
  11829. loc: {
  11830. start: { line: 1, column: 0 },
  11831. end: { line: 1, column: 36 }
  11832. }
  11833. },
  11834. 'for (var i = function() { return 10 in [] } in list) process(x);': {
  11835. type: 'ForInStatement',
  11836. left: {
  11837. type: 'VariableDeclaration',
  11838. declarations: [{
  11839. type: 'VariableDeclarator',
  11840. id: {
  11841. type: 'Identifier',
  11842. name: 'i',
  11843. range: [9, 10],
  11844. loc: {
  11845. start: { line: 1, column: 9 },
  11846. end: { line: 1, column: 10 }
  11847. }
  11848. },
  11849. init: {
  11850. type: 'FunctionExpression',
  11851. id: null,
  11852. params: [],
  11853. defaults: [],
  11854. body: {
  11855. type: 'BlockStatement',
  11856. body: [{
  11857. type: 'ReturnStatement',
  11858. argument: {
  11859. type: 'BinaryExpression',
  11860. operator: 'in',
  11861. left: {
  11862. type: 'Literal',
  11863. value: 10,
  11864. raw: '10',
  11865. range: [33, 35],
  11866. loc: {
  11867. start: { line: 1, column: 33 },
  11868. end: { line: 1, column: 35 }
  11869. }
  11870. },
  11871. right: {
  11872. type: 'ArrayExpression',
  11873. elements: [],
  11874. range: [39, 41],
  11875. loc: {
  11876. start: { line: 1, column: 39 },
  11877. end: { line: 1, column: 41 }
  11878. }
  11879. },
  11880. range: [33, 41],
  11881. loc: {
  11882. start: { line: 1, column: 33 },
  11883. end: { line: 1, column: 41 }
  11884. }
  11885. },
  11886. range: [26, 42],
  11887. loc: {
  11888. start: { line: 1, column: 26 },
  11889. end: { line: 1, column: 42 }
  11890. }
  11891. }],
  11892. range: [24, 43],
  11893. loc: {
  11894. start: { line: 1, column: 24 },
  11895. end: { line: 1, column: 43 }
  11896. }
  11897. },
  11898. rest: null,
  11899. generator: false,
  11900. expression: false,
  11901. range: [13, 43],
  11902. loc: {
  11903. start: { line: 1, column: 13 },
  11904. end: { line: 1, column: 43 }
  11905. }
  11906. },
  11907. range: [9, 43],
  11908. loc: {
  11909. start: { line: 1, column: 9 },
  11910. end: { line: 1, column: 43 }
  11911. }
  11912. }],
  11913. kind: 'var',
  11914. range: [5, 43],
  11915. loc: {
  11916. start: { line: 1, column: 5 },
  11917. end: { line: 1, column: 43 }
  11918. }
  11919. },
  11920. right: {
  11921. type: 'Identifier',
  11922. name: 'list',
  11923. range: [47, 51],
  11924. loc: {
  11925. start: { line: 1, column: 47 },
  11926. end: { line: 1, column: 51 }
  11927. }
  11928. },
  11929. body: {
  11930. type: 'ExpressionStatement',
  11931. expression: {
  11932. type: 'CallExpression',
  11933. callee: {
  11934. type: 'Identifier',
  11935. name: 'process',
  11936. range: [53, 60],
  11937. loc: {
  11938. start: { line: 1, column: 53 },
  11939. end: { line: 1, column: 60 }
  11940. }
  11941. },
  11942. 'arguments': [{
  11943. type: 'Identifier',
  11944. name: 'x',
  11945. range: [61, 62],
  11946. loc: {
  11947. start: { line: 1, column: 61 },
  11948. end: { line: 1, column: 62 }
  11949. }
  11950. }],
  11951. range: [53, 63],
  11952. loc: {
  11953. start: { line: 1, column: 53 },
  11954. end: { line: 1, column: 63 }
  11955. }
  11956. },
  11957. range: [53, 64],
  11958. loc: {
  11959. start: { line: 1, column: 53 },
  11960. end: { line: 1, column: 64 }
  11961. }
  11962. },
  11963. each: false,
  11964. range: [0, 64],
  11965. loc: {
  11966. start: { line: 1, column: 0 },
  11967. end: { line: 1, column: 64 }
  11968. }
  11969. }
  11970. },
  11971. 'continue statement': {
  11972. 'while (true) { continue; }': {
  11973. type: 'WhileStatement',
  11974. test: {
  11975. type: 'Literal',
  11976. value: true,
  11977. raw: 'true',
  11978. range: [7, 11],
  11979. loc: {
  11980. start: { line: 1, column: 7 },
  11981. end: { line: 1, column: 11 }
  11982. }
  11983. },
  11984. body: {
  11985. type: 'BlockStatement',
  11986. body: [
  11987. {
  11988. type: 'ContinueStatement',
  11989. label: null,
  11990. range: [15, 24],
  11991. loc: {
  11992. start: { line: 1, column: 15 },
  11993. end: { line: 1, column: 24 }
  11994. }
  11995. }
  11996. ],
  11997. range: [13, 26],
  11998. loc: {
  11999. start: { line: 1, column: 13 },
  12000. end: { line: 1, column: 26 }
  12001. }
  12002. },
  12003. range: [0, 26],
  12004. loc: {
  12005. start: { line: 1, column: 0 },
  12006. end: { line: 1, column: 26 }
  12007. }
  12008. },
  12009. 'while (true) { continue }': {
  12010. type: 'WhileStatement',
  12011. test: {
  12012. type: 'Literal',
  12013. value: true,
  12014. raw: 'true',
  12015. range: [7, 11],
  12016. loc: {
  12017. start: { line: 1, column: 7 },
  12018. end: { line: 1, column: 11 }
  12019. }
  12020. },
  12021. body: {
  12022. type: 'BlockStatement',
  12023. body: [
  12024. {
  12025. type: 'ContinueStatement',
  12026. label: null,
  12027. range: [15, 24],
  12028. loc: {
  12029. start: { line: 1, column: 15 },
  12030. end: { line: 1, column: 24 }
  12031. }
  12032. }
  12033. ],
  12034. range: [13, 25],
  12035. loc: {
  12036. start: { line: 1, column: 13 },
  12037. end: { line: 1, column: 25 }
  12038. }
  12039. },
  12040. range: [0, 25],
  12041. loc: {
  12042. start: { line: 1, column: 0 },
  12043. end: { line: 1, column: 25 }
  12044. }
  12045. },
  12046. 'done: while (true) { continue done }': {
  12047. type: 'LabeledStatement',
  12048. label: {
  12049. type: 'Identifier',
  12050. name: 'done',
  12051. range: [0, 4],
  12052. loc: {
  12053. start: { line: 1, column: 0 },
  12054. end: { line: 1, column: 4 }
  12055. }
  12056. },
  12057. body: {
  12058. type: 'WhileStatement',
  12059. test: {
  12060. type: 'Literal',
  12061. value: true,
  12062. raw: 'true',
  12063. range: [13, 17],
  12064. loc: {
  12065. start: { line: 1, column: 13 },
  12066. end: { line: 1, column: 17 }
  12067. }
  12068. },
  12069. body: {
  12070. type: 'BlockStatement',
  12071. body: [
  12072. {
  12073. type: 'ContinueStatement',
  12074. label: {
  12075. type: 'Identifier',
  12076. name: 'done',
  12077. range: [30, 34],
  12078. loc: {
  12079. start: { line: 1, column: 30 },
  12080. end: { line: 1, column: 34 }
  12081. }
  12082. },
  12083. range: [21, 35],
  12084. loc: {
  12085. start: { line: 1, column: 21 },
  12086. end: { line: 1, column: 35 }
  12087. }
  12088. }
  12089. ],
  12090. range: [19, 36],
  12091. loc: {
  12092. start: { line: 1, column: 19 },
  12093. end: { line: 1, column: 36 }
  12094. }
  12095. },
  12096. range: [6, 36],
  12097. loc: {
  12098. start: { line: 1, column: 6 },
  12099. end: { line: 1, column: 36 }
  12100. }
  12101. },
  12102. range: [0, 36],
  12103. loc: {
  12104. start: { line: 1, column: 0 },
  12105. end: { line: 1, column: 36 }
  12106. }
  12107. },
  12108. 'done: while (true) { continue done; }': {
  12109. type: 'LabeledStatement',
  12110. label: {
  12111. type: 'Identifier',
  12112. name: 'done',
  12113. range: [0, 4],
  12114. loc: {
  12115. start: { line: 1, column: 0 },
  12116. end: { line: 1, column: 4 }
  12117. }
  12118. },
  12119. body: {
  12120. type: 'WhileStatement',
  12121. test: {
  12122. type: 'Literal',
  12123. value: true,
  12124. raw: 'true',
  12125. range: [13, 17],
  12126. loc: {
  12127. start: { line: 1, column: 13 },
  12128. end: { line: 1, column: 17 }
  12129. }
  12130. },
  12131. body: {
  12132. type: 'BlockStatement',
  12133. body: [
  12134. {
  12135. type: 'ContinueStatement',
  12136. label: {
  12137. type: 'Identifier',
  12138. name: 'done',
  12139. range: [30, 34],
  12140. loc: {
  12141. start: { line: 1, column: 30 },
  12142. end: { line: 1, column: 34 }
  12143. }
  12144. },
  12145. range: [21, 35],
  12146. loc: {
  12147. start: { line: 1, column: 21 },
  12148. end: { line: 1, column: 35 }
  12149. }
  12150. }
  12151. ],
  12152. range: [19, 37],
  12153. loc: {
  12154. start: { line: 1, column: 19 },
  12155. end: { line: 1, column: 37 }
  12156. }
  12157. },
  12158. range: [6, 37],
  12159. loc: {
  12160. start: { line: 1, column: 6 },
  12161. end: { line: 1, column: 37 }
  12162. }
  12163. },
  12164. range: [0, 37],
  12165. loc: {
  12166. start: { line: 1, column: 0 },
  12167. end: { line: 1, column: 37 }
  12168. }
  12169. }
  12170. },
  12171. 'break statement': {
  12172. 'while (true) { break }': {
  12173. type: 'WhileStatement',
  12174. test: {
  12175. type: 'Literal',
  12176. value: true,
  12177. raw: 'true',
  12178. range: [7, 11],
  12179. loc: {
  12180. start: { line: 1, column: 7 },
  12181. end: { line: 1, column: 11 }
  12182. }
  12183. },
  12184. body: {
  12185. type: 'BlockStatement',
  12186. body: [
  12187. {
  12188. type: 'BreakStatement',
  12189. label: null,
  12190. range: [15, 21],
  12191. loc: {
  12192. start: { line: 1, column: 15 },
  12193. end: { line: 1, column: 21 }
  12194. }
  12195. }
  12196. ],
  12197. range: [13, 22],
  12198. loc: {
  12199. start: { line: 1, column: 13 },
  12200. end: { line: 1, column: 22 }
  12201. }
  12202. },
  12203. range: [0, 22],
  12204. loc: {
  12205. start: { line: 1, column: 0 },
  12206. end: { line: 1, column: 22 }
  12207. }
  12208. },
  12209. 'done: while (true) { break done }': {
  12210. type: 'LabeledStatement',
  12211. label: {
  12212. type: 'Identifier',
  12213. name: 'done',
  12214. range: [0, 4],
  12215. loc: {
  12216. start: { line: 1, column: 0 },
  12217. end: { line: 1, column: 4 }
  12218. }
  12219. },
  12220. body: {
  12221. type: 'WhileStatement',
  12222. test: {
  12223. type: 'Literal',
  12224. value: true,
  12225. raw: 'true',
  12226. range: [13, 17],
  12227. loc: {
  12228. start: { line: 1, column: 13 },
  12229. end: { line: 1, column: 17 }
  12230. }
  12231. },
  12232. body: {
  12233. type: 'BlockStatement',
  12234. body: [
  12235. {
  12236. type: 'BreakStatement',
  12237. label: {
  12238. type: 'Identifier',
  12239. name: 'done',
  12240. range: [27, 31],
  12241. loc: {
  12242. start: { line: 1, column: 27 },
  12243. end: { line: 1, column: 31 }
  12244. }
  12245. },
  12246. range: [21, 32],
  12247. loc: {
  12248. start: { line: 1, column: 21 },
  12249. end: { line: 1, column: 32 }
  12250. }
  12251. }
  12252. ],
  12253. range: [19, 33],
  12254. loc: {
  12255. start: { line: 1, column: 19 },
  12256. end: { line: 1, column: 33 }
  12257. }
  12258. },
  12259. range: [6, 33],
  12260. loc: {
  12261. start: { line: 1, column: 6 },
  12262. end: { line: 1, column: 33 }
  12263. }
  12264. },
  12265. range: [0, 33],
  12266. loc: {
  12267. start: { line: 1, column: 0 },
  12268. end: { line: 1, column: 33 }
  12269. }
  12270. },
  12271. 'done: while (true) { break done; }': {
  12272. type: 'LabeledStatement',
  12273. label: {
  12274. type: 'Identifier',
  12275. name: 'done',
  12276. range: [0, 4],
  12277. loc: {
  12278. start: { line: 1, column: 0 },
  12279. end: { line: 1, column: 4 }
  12280. }
  12281. },
  12282. body: {
  12283. type: 'WhileStatement',
  12284. test: {
  12285. type: 'Literal',
  12286. value: true,
  12287. raw: 'true',
  12288. range: [13, 17],
  12289. loc: {
  12290. start: { line: 1, column: 13 },
  12291. end: { line: 1, column: 17 }
  12292. }
  12293. },
  12294. body: {
  12295. type: 'BlockStatement',
  12296. body: [
  12297. {
  12298. type: 'BreakStatement',
  12299. label: {
  12300. type: 'Identifier',
  12301. name: 'done',
  12302. range: [27, 31],
  12303. loc: {
  12304. start: { line: 1, column: 27 },
  12305. end: { line: 1, column: 31 }
  12306. }
  12307. },
  12308. range: [21, 32],
  12309. loc: {
  12310. start: { line: 1, column: 21 },
  12311. end: { line: 1, column: 32 }
  12312. }
  12313. }
  12314. ],
  12315. range: [19, 34],
  12316. loc: {
  12317. start: { line: 1, column: 19 },
  12318. end: { line: 1, column: 34 }
  12319. }
  12320. },
  12321. range: [6, 34],
  12322. loc: {
  12323. start: { line: 1, column: 6 },
  12324. end: { line: 1, column: 34 }
  12325. }
  12326. },
  12327. range: [0, 34],
  12328. loc: {
  12329. start: { line: 1, column: 0 },
  12330. end: { line: 1, column: 34 }
  12331. }
  12332. }
  12333. },
  12334. 'return statement': {
  12335. '(function(){ return })': {
  12336. type: 'ExpressionStatement',
  12337. expression: {
  12338. type: 'FunctionExpression',
  12339. id: null,
  12340. params: [],
  12341. defaults: [],
  12342. body: {
  12343. type: 'BlockStatement',
  12344. body: [
  12345. {
  12346. type: 'ReturnStatement',
  12347. argument: null,
  12348. range: [13, 20],
  12349. loc: {
  12350. start: { line: 1, column: 13 },
  12351. end: { line: 1, column: 20 }
  12352. }
  12353. }
  12354. ],
  12355. range: [11, 21],
  12356. loc: {
  12357. start: { line: 1, column: 11 },
  12358. end: { line: 1, column: 21 }
  12359. }
  12360. },
  12361. rest: null,
  12362. generator: false,
  12363. expression: false,
  12364. range: [1, 21],
  12365. loc: {
  12366. start: { line: 1, column: 1 },
  12367. end: { line: 1, column: 21 }
  12368. }
  12369. },
  12370. range: [0, 22],
  12371. loc: {
  12372. start: { line: 1, column: 0 },
  12373. end: { line: 1, column: 22 }
  12374. }
  12375. },
  12376. '(function(){ return; })': {
  12377. type: 'ExpressionStatement',
  12378. expression: {
  12379. type: 'FunctionExpression',
  12380. id: null,
  12381. params: [],
  12382. defaults: [],
  12383. body: {
  12384. type: 'BlockStatement',
  12385. body: [
  12386. {
  12387. type: 'ReturnStatement',
  12388. argument: null,
  12389. range: [13, 20],
  12390. loc: {
  12391. start: { line: 1, column: 13 },
  12392. end: { line: 1, column: 20 }
  12393. }
  12394. }
  12395. ],
  12396. range: [11, 22],
  12397. loc: {
  12398. start: { line: 1, column: 11 },
  12399. end: { line: 1, column: 22 }
  12400. }
  12401. },
  12402. rest: null,
  12403. generator: false,
  12404. expression: false,
  12405. range: [1, 22],
  12406. loc: {
  12407. start: { line: 1, column: 1 },
  12408. end: { line: 1, column: 22 }
  12409. }
  12410. },
  12411. range: [0, 23],
  12412. loc: {
  12413. start: { line: 1, column: 0 },
  12414. end: { line: 1, column: 23 }
  12415. }
  12416. },
  12417. '(function(){ return x; })': {
  12418. type: 'ExpressionStatement',
  12419. expression: {
  12420. type: 'FunctionExpression',
  12421. id: null,
  12422. params: [],
  12423. defaults: [],
  12424. body: {
  12425. type: 'BlockStatement',
  12426. body: [
  12427. {
  12428. type: 'ReturnStatement',
  12429. argument: {
  12430. type: 'Identifier',
  12431. name: 'x',
  12432. range: [20, 21],
  12433. loc: {
  12434. start: { line: 1, column: 20 },
  12435. end: { line: 1, column: 21 }
  12436. }
  12437. },
  12438. range: [13, 22],
  12439. loc: {
  12440. start: { line: 1, column: 13 },
  12441. end: { line: 1, column: 22 }
  12442. }
  12443. }
  12444. ],
  12445. range: [11, 24],
  12446. loc: {
  12447. start: { line: 1, column: 11 },
  12448. end: { line: 1, column: 24 }
  12449. }
  12450. },
  12451. rest: null,
  12452. generator: false,
  12453. expression: false,
  12454. range: [1, 24],
  12455. loc: {
  12456. start: { line: 1, column: 1 },
  12457. end: { line: 1, column: 24 }
  12458. }
  12459. },
  12460. range: [0, 25],
  12461. loc: {
  12462. start: { line: 1, column: 0 },
  12463. end: { line: 1, column: 25 }
  12464. }
  12465. },
  12466. '(function(){ return x * y })': {
  12467. type: 'ExpressionStatement',
  12468. expression: {
  12469. type: 'FunctionExpression',
  12470. id: null,
  12471. params: [],
  12472. defaults: [],
  12473. body: {
  12474. type: 'BlockStatement',
  12475. body: [
  12476. {
  12477. type: 'ReturnStatement',
  12478. argument: {
  12479. type: 'BinaryExpression',
  12480. operator: '*',
  12481. left: {
  12482. type: 'Identifier',
  12483. name: 'x',
  12484. range: [20, 21],
  12485. loc: {
  12486. start: { line: 1, column: 20 },
  12487. end: { line: 1, column: 21 }
  12488. }
  12489. },
  12490. right: {
  12491. type: 'Identifier',
  12492. name: 'y',
  12493. range: [24, 25],
  12494. loc: {
  12495. start: { line: 1, column: 24 },
  12496. end: { line: 1, column: 25 }
  12497. }
  12498. },
  12499. range: [20, 25],
  12500. loc: {
  12501. start: { line: 1, column: 20 },
  12502. end: { line: 1, column: 25 }
  12503. }
  12504. },
  12505. range: [13, 26],
  12506. loc: {
  12507. start: { line: 1, column: 13 },
  12508. end: { line: 1, column: 26 }
  12509. }
  12510. }
  12511. ],
  12512. range: [11, 27],
  12513. loc: {
  12514. start: { line: 1, column: 11 },
  12515. end: { line: 1, column: 27 }
  12516. }
  12517. },
  12518. rest: null,
  12519. generator: false,
  12520. expression: false,
  12521. range: [1, 27],
  12522. loc: {
  12523. start: { line: 1, column: 1 },
  12524. end: { line: 1, column: 27 }
  12525. }
  12526. },
  12527. range: [0, 28],
  12528. loc: {
  12529. start: { line: 1, column: 0 },
  12530. end: { line: 1, column: 28 }
  12531. }
  12532. }
  12533. },
  12534. 'with statement': {
  12535. 'with (x) foo = bar': {
  12536. type: 'WithStatement',
  12537. object: {
  12538. type: 'Identifier',
  12539. name: 'x',
  12540. range: [6, 7],
  12541. loc: {
  12542. start: { line: 1, column: 6 },
  12543. end: { line: 1, column: 7 }
  12544. }
  12545. },
  12546. body: {
  12547. type: 'ExpressionStatement',
  12548. expression: {
  12549. type: 'AssignmentExpression',
  12550. operator: '=',
  12551. left: {
  12552. type: 'Identifier',
  12553. name: 'foo',
  12554. range: [9, 12],
  12555. loc: {
  12556. start: { line: 1, column: 9 },
  12557. end: { line: 1, column: 12 }
  12558. }
  12559. },
  12560. right: {
  12561. type: 'Identifier',
  12562. name: 'bar',
  12563. range: [15, 18],
  12564. loc: {
  12565. start: { line: 1, column: 15 },
  12566. end: { line: 1, column: 18 }
  12567. }
  12568. },
  12569. range: [9, 18],
  12570. loc: {
  12571. start: { line: 1, column: 9 },
  12572. end: { line: 1, column: 18 }
  12573. }
  12574. },
  12575. range: [9, 18],
  12576. loc: {
  12577. start: { line: 1, column: 9 },
  12578. end: { line: 1, column: 18 }
  12579. }
  12580. },
  12581. range: [0, 18],
  12582. loc: {
  12583. start: { line: 1, column: 0 },
  12584. end: { line: 1, column: 18 }
  12585. }
  12586. },
  12587. 'with (x) foo = bar;': {
  12588. type: 'WithStatement',
  12589. object: {
  12590. type: 'Identifier',
  12591. name: 'x',
  12592. range: [6, 7],
  12593. loc: {
  12594. start: { line: 1, column: 6 },
  12595. end: { line: 1, column: 7 }
  12596. }
  12597. },
  12598. body: {
  12599. type: 'ExpressionStatement',
  12600. expression: {
  12601. type: 'AssignmentExpression',
  12602. operator: '=',
  12603. left: {
  12604. type: 'Identifier',
  12605. name: 'foo',
  12606. range: [9, 12],
  12607. loc: {
  12608. start: { line: 1, column: 9 },
  12609. end: { line: 1, column: 12 }
  12610. }
  12611. },
  12612. right: {
  12613. type: 'Identifier',
  12614. name: 'bar',
  12615. range: [15, 18],
  12616. loc: {
  12617. start: { line: 1, column: 15 },
  12618. end: { line: 1, column: 18 }
  12619. }
  12620. },
  12621. range: [9, 18],
  12622. loc: {
  12623. start: { line: 1, column: 9 },
  12624. end: { line: 1, column: 18 }
  12625. }
  12626. },
  12627. range: [9, 19],
  12628. loc: {
  12629. start: { line: 1, column: 9 },
  12630. end: { line: 1, column: 19 }
  12631. }
  12632. },
  12633. range: [0, 19],
  12634. loc: {
  12635. start: { line: 1, column: 0 },
  12636. end: { line: 1, column: 19 }
  12637. }
  12638. },
  12639. 'with (x) { foo = bar }': {
  12640. type: 'WithStatement',
  12641. object: {
  12642. type: 'Identifier',
  12643. name: 'x',
  12644. range: [6, 7],
  12645. loc: {
  12646. start: { line: 1, column: 6 },
  12647. end: { line: 1, column: 7 }
  12648. }
  12649. },
  12650. body: {
  12651. type: 'BlockStatement',
  12652. body: [{
  12653. type: 'ExpressionStatement',
  12654. expression: {
  12655. type: 'AssignmentExpression',
  12656. operator: '=',
  12657. left: {
  12658. type: 'Identifier',
  12659. name: 'foo',
  12660. range: [11, 14],
  12661. loc: {
  12662. start: { line: 1, column: 11 },
  12663. end: { line: 1, column: 14 }
  12664. }
  12665. },
  12666. right: {
  12667. type: 'Identifier',
  12668. name: 'bar',
  12669. range: [17, 20],
  12670. loc: {
  12671. start: { line: 1, column: 17 },
  12672. end: { line: 1, column: 20 }
  12673. }
  12674. },
  12675. range: [11, 20],
  12676. loc: {
  12677. start: { line: 1, column: 11 },
  12678. end: { line: 1, column: 20 }
  12679. }
  12680. },
  12681. range: [11, 21],
  12682. loc: {
  12683. start: { line: 1, column: 11 },
  12684. end: { line: 1, column: 21 }
  12685. }
  12686. }],
  12687. range: [9, 22],
  12688. loc: {
  12689. start: { line: 1, column: 9 },
  12690. end: { line: 1, column: 22 }
  12691. }
  12692. },
  12693. range: [0, 22],
  12694. loc: {
  12695. start: { line: 1, column: 0 },
  12696. end: { line: 1, column: 22 }
  12697. }
  12698. }
  12699. },
  12700. 'switch statement': {
  12701. 'switch (x) {}': {
  12702. type: 'SwitchStatement',
  12703. discriminant: {
  12704. type: 'Identifier',
  12705. name: 'x',
  12706. range: [8, 9],
  12707. loc: {
  12708. start: { line: 1, column: 8 },
  12709. end: { line: 1, column: 9 }
  12710. }
  12711. },
  12712. cases:[],
  12713. range: [0, 13],
  12714. loc: {
  12715. start: { line: 1, column: 0 },
  12716. end: { line: 1, column: 13 }
  12717. }
  12718. },
  12719. 'switch (answer) { case 42: hi(); break; }': {
  12720. type: 'SwitchStatement',
  12721. discriminant: {
  12722. type: 'Identifier',
  12723. name: 'answer',
  12724. range: [8, 14],
  12725. loc: {
  12726. start: { line: 1, column: 8 },
  12727. end: { line: 1, column: 14 }
  12728. }
  12729. },
  12730. cases: [{
  12731. type: 'SwitchCase',
  12732. test: {
  12733. type: 'Literal',
  12734. value: 42,
  12735. raw: '42',
  12736. range: [23, 25],
  12737. loc: {
  12738. start: { line: 1, column: 23 },
  12739. end: { line: 1, column: 25 }
  12740. }
  12741. },
  12742. consequent: [{
  12743. type: 'ExpressionStatement',
  12744. expression: {
  12745. type: 'CallExpression',
  12746. callee: {
  12747. type: 'Identifier',
  12748. name: 'hi',
  12749. range: [27, 29],
  12750. loc: {
  12751. start: { line: 1, column: 27 },
  12752. end: { line: 1, column: 29 }
  12753. }
  12754. },
  12755. 'arguments': [],
  12756. range: [27, 31],
  12757. loc: {
  12758. start: { line: 1, column: 27 },
  12759. end: { line: 1, column: 31 }
  12760. }
  12761. },
  12762. range: [27, 32],
  12763. loc: {
  12764. start: { line: 1, column: 27 },
  12765. end: { line: 1, column: 32 }
  12766. }
  12767. }, {
  12768. type: 'BreakStatement',
  12769. label: null,
  12770. range: [33, 39],
  12771. loc: {
  12772. start: { line: 1, column: 33 },
  12773. end: { line: 1, column: 39 }
  12774. }
  12775. }],
  12776. range: [18, 39],
  12777. loc: {
  12778. start: { line: 1, column: 18 },
  12779. end: { line: 1, column: 39 }
  12780. }
  12781. }],
  12782. range: [0, 41],
  12783. loc: {
  12784. start: { line: 1, column: 0 },
  12785. end: { line: 1, column: 41 }
  12786. }
  12787. },
  12788. 'switch (answer) { case 42: hi(); break; default: break }': {
  12789. type: 'SwitchStatement',
  12790. discriminant: {
  12791. type: 'Identifier',
  12792. name: 'answer',
  12793. range: [8, 14],
  12794. loc: {
  12795. start: { line: 1, column: 8 },
  12796. end: { line: 1, column: 14 }
  12797. }
  12798. },
  12799. cases: [{
  12800. type: 'SwitchCase',
  12801. test: {
  12802. type: 'Literal',
  12803. value: 42,
  12804. raw: '42',
  12805. range: [23, 25],
  12806. loc: {
  12807. start: { line: 1, column: 23 },
  12808. end: { line: 1, column: 25 }
  12809. }
  12810. },
  12811. consequent: [{
  12812. type: 'ExpressionStatement',
  12813. expression: {
  12814. type: 'CallExpression',
  12815. callee: {
  12816. type: 'Identifier',
  12817. name: 'hi',
  12818. range: [27, 29],
  12819. loc: {
  12820. start: { line: 1, column: 27 },
  12821. end: { line: 1, column: 29 }
  12822. }
  12823. },
  12824. 'arguments': [],
  12825. range: [27, 31],
  12826. loc: {
  12827. start: { line: 1, column: 27 },
  12828. end: { line: 1, column: 31 }
  12829. }
  12830. },
  12831. range: [27, 32],
  12832. loc: {
  12833. start: { line: 1, column: 27 },
  12834. end: { line: 1, column: 32 }
  12835. }
  12836. }, {
  12837. type: 'BreakStatement',
  12838. label: null,
  12839. range: [33, 39],
  12840. loc: {
  12841. start: { line: 1, column: 33 },
  12842. end: { line: 1, column: 39 }
  12843. }
  12844. }],
  12845. range: [18, 39],
  12846. loc: {
  12847. start: { line: 1, column: 18 },
  12848. end: { line: 1, column: 39 }
  12849. }
  12850. }, {
  12851. type: 'SwitchCase',
  12852. test: null,
  12853. consequent: [{
  12854. type: 'BreakStatement',
  12855. label: null,
  12856. range: [49, 55],
  12857. loc: {
  12858. start: { line: 1, column: 49 },
  12859. end: { line: 1, column: 55 }
  12860. }
  12861. }],
  12862. range: [40, 55],
  12863. loc: {
  12864. start: { line: 1, column: 40 },
  12865. end: { line: 1, column: 55 }
  12866. }
  12867. }],
  12868. range: [0, 56],
  12869. loc: {
  12870. start: { line: 1, column: 0 },
  12871. end: { line: 1, column: 56 }
  12872. }
  12873. }
  12874. },
  12875. 'Labelled Statements': {
  12876. 'start: for (;;) break start': {
  12877. type: 'LabeledStatement',
  12878. label: {
  12879. type: 'Identifier',
  12880. name: 'start',
  12881. range: [0, 5],
  12882. loc: {
  12883. start: { line: 1, column: 0 },
  12884. end: { line: 1, column: 5 }
  12885. }
  12886. },
  12887. body: {
  12888. type: 'ForStatement',
  12889. init: null,
  12890. test: null,
  12891. update: null,
  12892. body: {
  12893. type: 'BreakStatement',
  12894. label: {
  12895. type: 'Identifier',
  12896. name: 'start',
  12897. range: [22, 27],
  12898. loc: {
  12899. start: { line: 1, column: 22 },
  12900. end: { line: 1, column: 27 }
  12901. }
  12902. },
  12903. range: [16, 27],
  12904. loc: {
  12905. start: { line: 1, column: 16 },
  12906. end: { line: 1, column: 27 }
  12907. }
  12908. },
  12909. range: [7, 27],
  12910. loc: {
  12911. start: { line: 1, column: 7 },
  12912. end: { line: 1, column: 27 }
  12913. }
  12914. },
  12915. range: [0, 27],
  12916. loc: {
  12917. start: { line: 1, column: 0 },
  12918. end: { line: 1, column: 27 }
  12919. }
  12920. },
  12921. 'start: while (true) break start': {
  12922. type: 'LabeledStatement',
  12923. label: {
  12924. type: 'Identifier',
  12925. name: 'start',
  12926. range: [0, 5],
  12927. loc: {
  12928. start: { line: 1, column: 0 },
  12929. end: { line: 1, column: 5 }
  12930. }
  12931. },
  12932. body: {
  12933. type: 'WhileStatement',
  12934. test: {
  12935. type: 'Literal',
  12936. value: true,
  12937. raw: 'true',
  12938. range: [14, 18],
  12939. loc: {
  12940. start: { line: 1, column: 14 },
  12941. end: { line: 1, column: 18 }
  12942. }
  12943. },
  12944. body: {
  12945. type: 'BreakStatement',
  12946. label: {
  12947. type: 'Identifier',
  12948. name: 'start',
  12949. range: [26, 31],
  12950. loc: {
  12951. start: { line: 1, column: 26 },
  12952. end: { line: 1, column: 31 }
  12953. }
  12954. },
  12955. range: [20, 31],
  12956. loc: {
  12957. start: { line: 1, column: 20 },
  12958. end: { line: 1, column: 31 }
  12959. }
  12960. },
  12961. range: [7, 31],
  12962. loc: {
  12963. start: { line: 1, column: 7 },
  12964. end: { line: 1, column: 31 }
  12965. }
  12966. },
  12967. range: [0, 31],
  12968. loc: {
  12969. start: { line: 1, column: 0 },
  12970. end: { line: 1, column: 31 }
  12971. }
  12972. }
  12973. },
  12974. 'throw statement': {
  12975. 'throw x;': {
  12976. type: 'ThrowStatement',
  12977. argument: {
  12978. type: 'Identifier',
  12979. name: 'x',
  12980. range: [6, 7],
  12981. loc: {
  12982. start: { line: 1, column: 6 },
  12983. end: { line: 1, column: 7 }
  12984. }
  12985. },
  12986. range: [0, 8],
  12987. loc: {
  12988. start: { line: 1, column: 0 },
  12989. end: { line: 1, column: 8 }
  12990. }
  12991. },
  12992. 'throw x * y': {
  12993. type: 'ThrowStatement',
  12994. argument: {
  12995. type: 'BinaryExpression',
  12996. operator: '*',
  12997. left: {
  12998. type: 'Identifier',
  12999. name: 'x',
  13000. range: [6, 7],
  13001. loc: {
  13002. start: { line: 1, column: 6 },
  13003. end: { line: 1, column: 7 }
  13004. }
  13005. },
  13006. right: {
  13007. type: 'Identifier',
  13008. name: 'y',
  13009. range: [10, 11],
  13010. loc: {
  13011. start: { line: 1, column: 10 },
  13012. end: { line: 1, column: 11 }
  13013. }
  13014. },
  13015. range: [6, 11],
  13016. loc: {
  13017. start: { line: 1, column: 6 },
  13018. end: { line: 1, column: 11 }
  13019. }
  13020. },
  13021. range: [0, 11],
  13022. loc: {
  13023. start: { line: 1, column: 0 },
  13024. end: { line: 1, column: 11 }
  13025. }
  13026. },
  13027. 'throw { message: "Error" }': {
  13028. type: 'ThrowStatement',
  13029. argument: {
  13030. type: 'ObjectExpression',
  13031. properties: [{
  13032. type: 'Property',
  13033. key: {
  13034. type: 'Identifier',
  13035. name: 'message',
  13036. range: [8, 15],
  13037. loc: {
  13038. start: { line: 1, column: 8 },
  13039. end: { line: 1, column: 15 }
  13040. }
  13041. },
  13042. value: {
  13043. type: 'Literal',
  13044. value: 'Error',
  13045. raw: '"Error"',
  13046. range: [17, 24],
  13047. loc: {
  13048. start: { line: 1, column: 17 },
  13049. end: { line: 1, column: 24 }
  13050. }
  13051. },
  13052. kind: 'init',
  13053. range: [8, 24],
  13054. loc: {
  13055. start: { line: 1, column: 8 },
  13056. end: { line: 1, column: 24 }
  13057. }
  13058. }],
  13059. range: [6, 26],
  13060. loc: {
  13061. start: { line: 1, column: 6 },
  13062. end: { line: 1, column: 26 }
  13063. }
  13064. },
  13065. range: [0, 26],
  13066. loc: {
  13067. start: { line: 1, column: 0 },
  13068. end: { line: 1, column: 26 }
  13069. }
  13070. }
  13071. },
  13072. 'try statement': {
  13073. 'try { } catch (e) { }': {
  13074. type: 'TryStatement',
  13075. block: {
  13076. type: 'BlockStatement',
  13077. body: [],
  13078. range: [4, 7],
  13079. loc: {
  13080. start: { line: 1, column: 4 },
  13081. end: { line: 1, column: 7 }
  13082. }
  13083. },
  13084. guardedHandlers: [],
  13085. handlers: [{
  13086. type: 'CatchClause',
  13087. param: {
  13088. type: 'Identifier',
  13089. name: 'e',
  13090. range: [15, 16],
  13091. loc: {
  13092. start: { line: 1, column: 15 },
  13093. end: { line: 1, column: 16 }
  13094. }
  13095. },
  13096. body: {
  13097. type: 'BlockStatement',
  13098. body: [],
  13099. range: [18, 21],
  13100. loc: {
  13101. start: { line: 1, column: 18 },
  13102. end: { line: 1, column: 21 }
  13103. }
  13104. },
  13105. range: [8, 21],
  13106. loc: {
  13107. start: { line: 1, column: 8 },
  13108. end: { line: 1, column: 21 }
  13109. }
  13110. }],
  13111. finalizer: null,
  13112. range: [0, 21],
  13113. loc: {
  13114. start: { line: 1, column: 0 },
  13115. end: { line: 1, column: 21 }
  13116. }
  13117. },
  13118. 'try { } catch (eval) { }': {
  13119. type: 'TryStatement',
  13120. block: {
  13121. type: 'BlockStatement',
  13122. body: [],
  13123. range: [4, 7],
  13124. loc: {
  13125. start: { line: 1, column: 4 },
  13126. end: { line: 1, column: 7 }
  13127. }
  13128. },
  13129. guardedHandlers: [],
  13130. handlers: [{
  13131. type: 'CatchClause',
  13132. param: {
  13133. type: 'Identifier',
  13134. name: 'eval',
  13135. range: [15, 19],
  13136. loc: {
  13137. start: { line: 1, column: 15 },
  13138. end: { line: 1, column: 19 }
  13139. }
  13140. },
  13141. body: {
  13142. type: 'BlockStatement',
  13143. body: [],
  13144. range: [21, 24],
  13145. loc: {
  13146. start: { line: 1, column: 21 },
  13147. end: { line: 1, column: 24 }
  13148. }
  13149. },
  13150. range: [8, 24],
  13151. loc: {
  13152. start: { line: 1, column: 8 },
  13153. end: { line: 1, column: 24 }
  13154. }
  13155. }],
  13156. finalizer: null,
  13157. range: [0, 24],
  13158. loc: {
  13159. start: { line: 1, column: 0 },
  13160. end: { line: 1, column: 24 }
  13161. }
  13162. },
  13163. 'try { } catch (arguments) { }': {
  13164. type: 'TryStatement',
  13165. block: {
  13166. type: 'BlockStatement',
  13167. body: [],
  13168. range: [4, 7],
  13169. loc: {
  13170. start: { line: 1, column: 4 },
  13171. end: { line: 1, column: 7 }
  13172. }
  13173. },
  13174. guardedHandlers: [],
  13175. handlers: [{
  13176. type: 'CatchClause',
  13177. param: {
  13178. type: 'Identifier',
  13179. name: 'arguments',
  13180. range: [15, 24],
  13181. loc: {
  13182. start: { line: 1, column: 15 },
  13183. end: { line: 1, column: 24 }
  13184. }
  13185. },
  13186. body: {
  13187. type: 'BlockStatement',
  13188. body: [],
  13189. range: [26, 29],
  13190. loc: {
  13191. start: { line: 1, column: 26 },
  13192. end: { line: 1, column: 29 }
  13193. }
  13194. },
  13195. range: [8, 29],
  13196. loc: {
  13197. start: { line: 1, column: 8 },
  13198. end: { line: 1, column: 29 }
  13199. }
  13200. }],
  13201. finalizer: null,
  13202. range: [0, 29],
  13203. loc: {
  13204. start: { line: 1, column: 0 },
  13205. end: { line: 1, column: 29 }
  13206. }
  13207. },
  13208. 'try { } catch (e) { say(e) }': {
  13209. type: 'TryStatement',
  13210. block: {
  13211. type: 'BlockStatement',
  13212. body: [],
  13213. range: [4, 7],
  13214. loc: {
  13215. start: { line: 1, column: 4 },
  13216. end: { line: 1, column: 7 }
  13217. }
  13218. },
  13219. guardedHandlers: [],
  13220. handlers: [{
  13221. type: 'CatchClause',
  13222. param: {
  13223. type: 'Identifier',
  13224. name: 'e',
  13225. range: [15, 16],
  13226. loc: {
  13227. start: { line: 1, column: 15 },
  13228. end: { line: 1, column: 16 }
  13229. }
  13230. },
  13231. body: {
  13232. type: 'BlockStatement',
  13233. body: [{
  13234. type: 'ExpressionStatement',
  13235. expression: {
  13236. type: 'CallExpression',
  13237. callee: {
  13238. type: 'Identifier',
  13239. name: 'say',
  13240. range: [20, 23],
  13241. loc: {
  13242. start: { line: 1, column: 20 },
  13243. end: { line: 1, column: 23 }
  13244. }
  13245. },
  13246. 'arguments': [{
  13247. type: 'Identifier',
  13248. name: 'e',
  13249. range: [24, 25],
  13250. loc: {
  13251. start: { line: 1, column: 24 },
  13252. end: { line: 1, column: 25 }
  13253. }
  13254. }],
  13255. range: [20, 26],
  13256. loc: {
  13257. start: { line: 1, column: 20 },
  13258. end: { line: 1, column: 26 }
  13259. }
  13260. },
  13261. range: [20, 27],
  13262. loc: {
  13263. start: { line: 1, column: 20 },
  13264. end: { line: 1, column: 27 }
  13265. }
  13266. }],
  13267. range: [18, 28],
  13268. loc: {
  13269. start: { line: 1, column: 18 },
  13270. end: { line: 1, column: 28 }
  13271. }
  13272. },
  13273. range: [8, 28],
  13274. loc: {
  13275. start: { line: 1, column: 8 },
  13276. end: { line: 1, column: 28 }
  13277. }
  13278. }],
  13279. finalizer: null,
  13280. range: [0, 28],
  13281. loc: {
  13282. start: { line: 1, column: 0 },
  13283. end: { line: 1, column: 28 }
  13284. }
  13285. },
  13286. 'try { } finally { cleanup(stuff) }': {
  13287. type: 'TryStatement',
  13288. block: {
  13289. type: 'BlockStatement',
  13290. body: [],
  13291. range: [4, 7],
  13292. loc: {
  13293. start: { line: 1, column: 4 },
  13294. end: { line: 1, column: 7 }
  13295. }
  13296. },
  13297. guardedHandlers: [],
  13298. handlers: [],
  13299. finalizer: {
  13300. type: 'BlockStatement',
  13301. body: [{
  13302. type: 'ExpressionStatement',
  13303. expression: {
  13304. type: 'CallExpression',
  13305. callee: {
  13306. type: 'Identifier',
  13307. name: 'cleanup',
  13308. range: [18, 25],
  13309. loc: {
  13310. start: { line: 1, column: 18 },
  13311. end: { line: 1, column: 25 }
  13312. }
  13313. },
  13314. 'arguments': [{
  13315. type: 'Identifier',
  13316. name: 'stuff',
  13317. range: [26, 31],
  13318. loc: {
  13319. start: { line: 1, column: 26 },
  13320. end: { line: 1, column: 31 }
  13321. }
  13322. }],
  13323. range: [18, 32],
  13324. loc: {
  13325. start: { line: 1, column: 18 },
  13326. end: { line: 1, column: 32 }
  13327. }
  13328. },
  13329. range: [18, 33],
  13330. loc: {
  13331. start: { line: 1, column: 18 },
  13332. end: { line: 1, column: 33 }
  13333. }
  13334. }],
  13335. range: [16, 34],
  13336. loc: {
  13337. start: { line: 1, column: 16 },
  13338. end: { line: 1, column: 34 }
  13339. }
  13340. },
  13341. range: [0, 34],
  13342. loc: {
  13343. start: { line: 1, column: 0 },
  13344. end: { line: 1, column: 34 }
  13345. }
  13346. },
  13347. 'try { doThat(); } catch (e) { say(e) }': {
  13348. type: 'TryStatement',
  13349. block: {
  13350. type: 'BlockStatement',
  13351. body: [{
  13352. type: 'ExpressionStatement',
  13353. expression: {
  13354. type: 'CallExpression',
  13355. callee: {
  13356. type: 'Identifier',
  13357. name: 'doThat',
  13358. range: [6, 12],
  13359. loc: {
  13360. start: { line: 1, column: 6 },
  13361. end: { line: 1, column: 12 }
  13362. }
  13363. },
  13364. 'arguments': [],
  13365. range: [6, 14],
  13366. loc: {
  13367. start: { line: 1, column: 6 },
  13368. end: { line: 1, column: 14 }
  13369. }
  13370. },
  13371. range: [6, 15],
  13372. loc: {
  13373. start: { line: 1, column: 6 },
  13374. end: { line: 1, column: 15 }
  13375. }
  13376. }],
  13377. range: [4, 17],
  13378. loc: {
  13379. start: { line: 1, column: 4 },
  13380. end: { line: 1, column: 17 }
  13381. }
  13382. },
  13383. guardedHandlers: [],
  13384. handlers: [{
  13385. type: 'CatchClause',
  13386. param: {
  13387. type: 'Identifier',
  13388. name: 'e',
  13389. range: [25, 26],
  13390. loc: {
  13391. start: { line: 1, column: 25 },
  13392. end: { line: 1, column: 26 }
  13393. }
  13394. },
  13395. body: {
  13396. type: 'BlockStatement',
  13397. body: [{
  13398. type: 'ExpressionStatement',
  13399. expression: {
  13400. type: 'CallExpression',
  13401. callee: {
  13402. type: 'Identifier',
  13403. name: 'say',
  13404. range: [30, 33],
  13405. loc: {
  13406. start: { line: 1, column: 30 },
  13407. end: { line: 1, column: 33 }
  13408. }
  13409. },
  13410. 'arguments': [{
  13411. type: 'Identifier',
  13412. name: 'e',
  13413. range: [34, 35],
  13414. loc: {
  13415. start: { line: 1, column: 34 },
  13416. end: { line: 1, column: 35 }
  13417. }
  13418. }],
  13419. range: [30, 36],
  13420. loc: {
  13421. start: { line: 1, column: 30 },
  13422. end: { line: 1, column: 36 }
  13423. }
  13424. },
  13425. range: [30, 37],
  13426. loc: {
  13427. start: { line: 1, column: 30 },
  13428. end: { line: 1, column: 37 }
  13429. }
  13430. }],
  13431. range: [28, 38],
  13432. loc: {
  13433. start: { line: 1, column: 28 },
  13434. end: { line: 1, column: 38 }
  13435. }
  13436. },
  13437. range: [18, 38],
  13438. loc: {
  13439. start: { line: 1, column: 18 },
  13440. end: { line: 1, column: 38 }
  13441. }
  13442. }],
  13443. finalizer: null,
  13444. range: [0, 38],
  13445. loc: {
  13446. start: { line: 1, column: 0 },
  13447. end: { line: 1, column: 38 }
  13448. }
  13449. },
  13450. 'try { doThat(); } catch (e) { say(e) } finally { cleanup(stuff) }': {
  13451. type: 'TryStatement',
  13452. block: {
  13453. type: 'BlockStatement',
  13454. body: [{
  13455. type: 'ExpressionStatement',
  13456. expression: {
  13457. type: 'CallExpression',
  13458. callee: {
  13459. type: 'Identifier',
  13460. name: 'doThat',
  13461. range: [6, 12],
  13462. loc: {
  13463. start: { line: 1, column: 6 },
  13464. end: { line: 1, column: 12 }
  13465. }
  13466. },
  13467. 'arguments': [],
  13468. range: [6, 14],
  13469. loc: {
  13470. start: { line: 1, column: 6 },
  13471. end: { line: 1, column: 14 }
  13472. }
  13473. },
  13474. range: [6, 15],
  13475. loc: {
  13476. start: { line: 1, column: 6 },
  13477. end: { line: 1, column: 15 }
  13478. }
  13479. }],
  13480. range: [4, 17],
  13481. loc: {
  13482. start: { line: 1, column: 4 },
  13483. end: { line: 1, column: 17 }
  13484. }
  13485. },
  13486. guardedHandlers: [],
  13487. handlers: [{
  13488. type: 'CatchClause',
  13489. param: {
  13490. type: 'Identifier',
  13491. name: 'e',
  13492. range: [25, 26],
  13493. loc: {
  13494. start: { line: 1, column: 25 },
  13495. end: { line: 1, column: 26 }
  13496. }
  13497. },
  13498. body: {
  13499. type: 'BlockStatement',
  13500. body: [{
  13501. type: 'ExpressionStatement',
  13502. expression: {
  13503. type: 'CallExpression',
  13504. callee: {
  13505. type: 'Identifier',
  13506. name: 'say',
  13507. range: [30, 33],
  13508. loc: {
  13509. start: { line: 1, column: 30 },
  13510. end: { line: 1, column: 33 }
  13511. }
  13512. },
  13513. 'arguments': [{
  13514. type: 'Identifier',
  13515. name: 'e',
  13516. range: [34, 35],
  13517. loc: {
  13518. start: { line: 1, column: 34 },
  13519. end: { line: 1, column: 35 }
  13520. }
  13521. }],
  13522. range: [30, 36],
  13523. loc: {
  13524. start: { line: 1, column: 30 },
  13525. end: { line: 1, column: 36 }
  13526. }
  13527. },
  13528. range: [30, 37],
  13529. loc: {
  13530. start: { line: 1, column: 30 },
  13531. end: { line: 1, column: 37 }
  13532. }
  13533. }],
  13534. range: [28, 38],
  13535. loc: {
  13536. start: { line: 1, column: 28 },
  13537. end: { line: 1, column: 38 }
  13538. }
  13539. },
  13540. range: [18, 38],
  13541. loc: {
  13542. start: { line: 1, column: 18 },
  13543. end: { line: 1, column: 38 }
  13544. }
  13545. }],
  13546. finalizer: {
  13547. type: 'BlockStatement',
  13548. body: [{
  13549. type: 'ExpressionStatement',
  13550. expression: {
  13551. type: 'CallExpression',
  13552. callee: {
  13553. type: 'Identifier',
  13554. name: 'cleanup',
  13555. range: [49, 56],
  13556. loc: {
  13557. start: { line: 1, column: 49 },
  13558. end: { line: 1, column: 56 }
  13559. }
  13560. },
  13561. 'arguments': [{
  13562. type: 'Identifier',
  13563. name: 'stuff',
  13564. range: [57, 62],
  13565. loc: {
  13566. start: { line: 1, column: 57 },
  13567. end: { line: 1, column: 62 }
  13568. }
  13569. }],
  13570. range: [49, 63],
  13571. loc: {
  13572. start: { line: 1, column: 49 },
  13573. end: { line: 1, column: 63 }
  13574. }
  13575. },
  13576. range: [49, 64],
  13577. loc: {
  13578. start: { line: 1, column: 49 },
  13579. end: { line: 1, column: 64 }
  13580. }
  13581. }],
  13582. range: [47, 65],
  13583. loc: {
  13584. start: { line: 1, column: 47 },
  13585. end: { line: 1, column: 65 }
  13586. }
  13587. },
  13588. range: [0, 65],
  13589. loc: {
  13590. start: { line: 1, column: 0 },
  13591. end: { line: 1, column: 65 }
  13592. }
  13593. }
  13594. },
  13595. 'debugger statement': {
  13596. 'debugger;': {
  13597. type: 'DebuggerStatement',
  13598. range: [0, 9],
  13599. loc: {
  13600. start: { line: 1, column: 0 },
  13601. end: { line: 1, column: 9 }
  13602. }
  13603. }
  13604. },
  13605. 'Function Definition': {
  13606. 'function hello() { sayHi(); }': {
  13607. type: 'FunctionDeclaration',
  13608. id: {
  13609. type: 'Identifier',
  13610. name: 'hello',
  13611. range: [9, 14],
  13612. loc: {
  13613. start: { line: 1, column: 9 },
  13614. end: { line: 1, column: 14 }
  13615. }
  13616. },
  13617. params: [],
  13618. defaults: [],
  13619. body: {
  13620. type: 'BlockStatement',
  13621. body: [{
  13622. type: 'ExpressionStatement',
  13623. expression: {
  13624. type: 'CallExpression',
  13625. callee: {
  13626. type: 'Identifier',
  13627. name: 'sayHi',
  13628. range: [19, 24],
  13629. loc: {
  13630. start: { line: 1, column: 19 },
  13631. end: { line: 1, column: 24 }
  13632. }
  13633. },
  13634. 'arguments': [],
  13635. range: [19, 26],
  13636. loc: {
  13637. start: { line: 1, column: 19 },
  13638. end: { line: 1, column: 26 }
  13639. }
  13640. },
  13641. range: [19, 27],
  13642. loc: {
  13643. start: { line: 1, column: 19 },
  13644. end: { line: 1, column: 27 }
  13645. }
  13646. }],
  13647. range: [17, 29],
  13648. loc: {
  13649. start: { line: 1, column: 17 },
  13650. end: { line: 1, column: 29 }
  13651. }
  13652. },
  13653. rest: null,
  13654. generator: false,
  13655. expression: false,
  13656. range: [0, 29],
  13657. loc: {
  13658. start: { line: 1, column: 0 },
  13659. end: { line: 1, column: 29 }
  13660. }
  13661. },
  13662. 'function eval() { }': {
  13663. type: 'FunctionDeclaration',
  13664. id: {
  13665. type: 'Identifier',
  13666. name: 'eval',
  13667. range: [9, 13],
  13668. loc: {
  13669. start: { line: 1, column: 9 },
  13670. end: { line: 1, column: 13 }
  13671. }
  13672. },
  13673. params: [],
  13674. defaults: [],
  13675. body: {
  13676. type: 'BlockStatement',
  13677. body: [],
  13678. range: [16, 19],
  13679. loc: {
  13680. start: { line: 1, column: 16 },
  13681. end: { line: 1, column: 19 }
  13682. }
  13683. },
  13684. rest: null,
  13685. generator: false,
  13686. expression: false,
  13687. range: [0, 19],
  13688. loc: {
  13689. start: { line: 1, column: 0 },
  13690. end: { line: 1, column: 19 }
  13691. }
  13692. },
  13693. 'function arguments() { }': {
  13694. type: 'FunctionDeclaration',
  13695. id: {
  13696. type: 'Identifier',
  13697. name: 'arguments',
  13698. range: [9, 18],
  13699. loc: {
  13700. start: { line: 1, column: 9 },
  13701. end: { line: 1, column: 18 }
  13702. }
  13703. },
  13704. params: [],
  13705. defaults: [],
  13706. body: {
  13707. type: 'BlockStatement',
  13708. body: [],
  13709. range: [21, 24],
  13710. loc: {
  13711. start: { line: 1, column: 21 },
  13712. end: { line: 1, column: 24 }
  13713. }
  13714. },
  13715. rest: null,
  13716. generator: false,
  13717. expression: false,
  13718. range: [0, 24],
  13719. loc: {
  13720. start: { line: 1, column: 0 },
  13721. end: { line: 1, column: 24 }
  13722. }
  13723. },
  13724. 'function test(t, t) { }': {
  13725. type: 'FunctionDeclaration',
  13726. id: {
  13727. type: 'Identifier',
  13728. name: 'test',
  13729. range: [9, 13],
  13730. loc: {
  13731. start: { line: 1, column: 9 },
  13732. end: { line: 1, column: 13 }
  13733. }
  13734. },
  13735. params: [{
  13736. type: 'Identifier',
  13737. name: 't',
  13738. range: [14, 15],
  13739. loc: {
  13740. start: { line: 1, column: 14 },
  13741. end: { line: 1, column: 15 }
  13742. }
  13743. }, {
  13744. type: 'Identifier',
  13745. name: 't',
  13746. range: [17, 18],
  13747. loc: {
  13748. start: { line: 1, column: 17 },
  13749. end: { line: 1, column: 18 }
  13750. }
  13751. }],
  13752. defaults: [],
  13753. body: {
  13754. type: 'BlockStatement',
  13755. body: [],
  13756. range: [20, 23],
  13757. loc: {
  13758. start: { line: 1, column: 20 },
  13759. end: { line: 1, column: 23 }
  13760. }
  13761. },
  13762. rest: null,
  13763. generator: false,
  13764. expression: false,
  13765. range: [0, 23],
  13766. loc: {
  13767. start: { line: 1, column: 0 },
  13768. end: { line: 1, column: 23 }
  13769. }
  13770. },
  13771. '(function test(t, t) { })': {
  13772. type: 'ExpressionStatement',
  13773. expression: {
  13774. type: 'FunctionExpression',
  13775. id: {
  13776. type: 'Identifier',
  13777. name: 'test',
  13778. range: [10, 14],
  13779. loc: {
  13780. start: { line: 1, column: 10 },
  13781. end: { line: 1, column: 14 }
  13782. }
  13783. },
  13784. params: [{
  13785. type: 'Identifier',
  13786. name: 't',
  13787. range: [15, 16],
  13788. loc: {
  13789. start: { line: 1, column: 15 },
  13790. end: { line: 1, column: 16 }
  13791. }
  13792. }, {
  13793. type: 'Identifier',
  13794. name: 't',
  13795. range: [18, 19],
  13796. loc: {
  13797. start: { line: 1, column: 18 },
  13798. end: { line: 1, column: 19 }
  13799. }
  13800. }],
  13801. defaults: [],
  13802. body: {
  13803. type: 'BlockStatement',
  13804. body: [],
  13805. range: [21, 24],
  13806. loc: {
  13807. start: { line: 1, column: 21 },
  13808. end: { line: 1, column: 24 }
  13809. }
  13810. },
  13811. rest: null,
  13812. generator: false,
  13813. expression: false,
  13814. range: [1, 24],
  13815. loc: {
  13816. start: { line: 1, column: 1 },
  13817. end: { line: 1, column: 24 }
  13818. }
  13819. },
  13820. range: [0, 25],
  13821. loc: {
  13822. start: { line: 1, column: 0 },
  13823. end: { line: 1, column: 25 }
  13824. }
  13825. },
  13826. 'function eval() { function inner() { "use strict" } }': {
  13827. type: 'FunctionDeclaration',
  13828. id: {
  13829. type: 'Identifier',
  13830. name: 'eval',
  13831. range: [9, 13],
  13832. loc: {
  13833. start: { line: 1, column: 9 },
  13834. end: { line: 1, column: 13 }
  13835. }
  13836. },
  13837. params: [],
  13838. defaults: [],
  13839. body: {
  13840. type: 'BlockStatement',
  13841. body: [{
  13842. type: 'FunctionDeclaration',
  13843. id: {
  13844. type: 'Identifier',
  13845. name: 'inner',
  13846. range: [27, 32],
  13847. loc: {
  13848. start: { line: 1, column: 27 },
  13849. end: { line: 1, column: 32 }
  13850. }
  13851. },
  13852. params: [],
  13853. defaults: [],
  13854. body: {
  13855. type: 'BlockStatement',
  13856. body: [{
  13857. type: 'ExpressionStatement',
  13858. expression: {
  13859. type: 'Literal',
  13860. value: 'use strict',
  13861. raw: '\"use strict\"',
  13862. range: [37, 49],
  13863. loc: {
  13864. start: { line: 1, column: 37 },
  13865. end: { line: 1, column: 49 }
  13866. }
  13867. },
  13868. range: [37, 50],
  13869. loc: {
  13870. start: { line: 1, column: 37 },
  13871. end: { line: 1, column: 50 }
  13872. }
  13873. }],
  13874. range: [35, 51],
  13875. loc: {
  13876. start: { line: 1, column: 35 },
  13877. end: { line: 1, column: 51 }
  13878. }
  13879. },
  13880. rest: null,
  13881. generator: false,
  13882. expression: false,
  13883. range: [18, 51],
  13884. loc: {
  13885. start: { line: 1, column: 18 },
  13886. end: { line: 1, column: 51 }
  13887. }
  13888. }],
  13889. range: [16, 53],
  13890. loc: {
  13891. start: { line: 1, column: 16 },
  13892. end: { line: 1, column: 53 }
  13893. }
  13894. },
  13895. rest: null,
  13896. generator: false,
  13897. expression: false,
  13898. range: [0, 53],
  13899. loc: {
  13900. start: { line: 1, column: 0 },
  13901. end: { line: 1, column: 53 }
  13902. }
  13903. },
  13904. 'function hello(a) { sayHi(); }': {
  13905. type: 'FunctionDeclaration',
  13906. id: {
  13907. type: 'Identifier',
  13908. name: 'hello',
  13909. range: [9, 14],
  13910. loc: {
  13911. start: { line: 1, column: 9 },
  13912. end: { line: 1, column: 14 }
  13913. }
  13914. },
  13915. params: [{
  13916. type: 'Identifier',
  13917. name: 'a',
  13918. range: [15, 16],
  13919. loc: {
  13920. start: { line: 1, column: 15 },
  13921. end: { line: 1, column: 16 }
  13922. }
  13923. }],
  13924. defaults: [],
  13925. body: {
  13926. type: 'BlockStatement',
  13927. body: [{
  13928. type: 'ExpressionStatement',
  13929. expression: {
  13930. type: 'CallExpression',
  13931. callee: {
  13932. type: 'Identifier',
  13933. name: 'sayHi',
  13934. range: [20, 25],
  13935. loc: {
  13936. start: { line: 1, column: 20 },
  13937. end: { line: 1, column: 25 }
  13938. }
  13939. },
  13940. 'arguments': [],
  13941. range: [20, 27],
  13942. loc: {
  13943. start: { line: 1, column: 20 },
  13944. end: { line: 1, column: 27 }
  13945. }
  13946. },
  13947. range: [20, 28],
  13948. loc: {
  13949. start: { line: 1, column: 20 },
  13950. end: { line: 1, column: 28 }
  13951. }
  13952. }],
  13953. range: [18, 30],
  13954. loc: {
  13955. start: { line: 1, column: 18 },
  13956. end: { line: 1, column: 30 }
  13957. }
  13958. },
  13959. rest: null,
  13960. generator: false,
  13961. expression: false,
  13962. range: [0, 30],
  13963. loc: {
  13964. start: { line: 1, column: 0 },
  13965. end: { line: 1, column: 30 }
  13966. }
  13967. },
  13968. 'function hello(a, b) { sayHi(); }': {
  13969. type: 'FunctionDeclaration',
  13970. id: {
  13971. type: 'Identifier',
  13972. name: 'hello',
  13973. range: [9, 14],
  13974. loc: {
  13975. start: { line: 1, column: 9 },
  13976. end: { line: 1, column: 14 }
  13977. }
  13978. },
  13979. params: [{
  13980. type: 'Identifier',
  13981. name: 'a',
  13982. range: [15, 16],
  13983. loc: {
  13984. start: { line: 1, column: 15 },
  13985. end: { line: 1, column: 16 }
  13986. }
  13987. }, {
  13988. type: 'Identifier',
  13989. name: 'b',
  13990. range: [18, 19],
  13991. loc: {
  13992. start: { line: 1, column: 18 },
  13993. end: { line: 1, column: 19 }
  13994. }
  13995. }],
  13996. defaults: [],
  13997. body: {
  13998. type: 'BlockStatement',
  13999. body: [{
  14000. type: 'ExpressionStatement',
  14001. expression: {
  14002. type: 'CallExpression',
  14003. callee: {
  14004. type: 'Identifier',
  14005. name: 'sayHi',
  14006. range: [23, 28],
  14007. loc: {
  14008. start: { line: 1, column: 23 },
  14009. end: { line: 1, column: 28 }
  14010. }
  14011. },
  14012. 'arguments': [],
  14013. range: [23, 30],
  14014. loc: {
  14015. start: { line: 1, column: 23 },
  14016. end: { line: 1, column: 30 }
  14017. }
  14018. },
  14019. range: [23, 31],
  14020. loc: {
  14021. start: { line: 1, column: 23 },
  14022. end: { line: 1, column: 31 }
  14023. }
  14024. }],
  14025. range: [21, 33],
  14026. loc: {
  14027. start: { line: 1, column: 21 },
  14028. end: { line: 1, column: 33 }
  14029. }
  14030. },
  14031. rest: null,
  14032. generator: false,
  14033. expression: false,
  14034. range: [0, 33],
  14035. loc: {
  14036. start: { line: 1, column: 0 },
  14037. end: { line: 1, column: 33 }
  14038. }
  14039. },
  14040. 'var hi = function() { sayHi() };': {
  14041. type: 'VariableDeclaration',
  14042. declarations: [{
  14043. type: 'VariableDeclarator',
  14044. id: {
  14045. type: 'Identifier',
  14046. name: 'hi',
  14047. range: [4, 6],
  14048. loc: {
  14049. start: { line: 1, column: 4 },
  14050. end: { line: 1, column: 6 }
  14051. }
  14052. },
  14053. init: {
  14054. type: 'FunctionExpression',
  14055. id: null,
  14056. params: [],
  14057. defaults: [],
  14058. body: {
  14059. type: 'BlockStatement',
  14060. body: [{
  14061. type: 'ExpressionStatement',
  14062. expression: {
  14063. type: 'CallExpression',
  14064. callee: {
  14065. type: 'Identifier',
  14066. name: 'sayHi',
  14067. range: [22, 27],
  14068. loc: {
  14069. start: { line: 1, column: 22 },
  14070. end: { line: 1, column: 27 }
  14071. }
  14072. },
  14073. 'arguments': [],
  14074. range: [22, 29],
  14075. loc: {
  14076. start: { line: 1, column: 22 },
  14077. end: { line: 1, column: 29 }
  14078. }
  14079. },
  14080. range: [22, 30],
  14081. loc: {
  14082. start: { line: 1, column: 22 },
  14083. end: { line: 1, column: 30 }
  14084. }
  14085. }],
  14086. range: [20, 31],
  14087. loc: {
  14088. start: { line: 1, column: 20 },
  14089. end: { line: 1, column: 31 }
  14090. }
  14091. },
  14092. rest: null,
  14093. generator: false,
  14094. expression: false,
  14095. range: [9, 31],
  14096. loc: {
  14097. start: { line: 1, column: 9 },
  14098. end: { line: 1, column: 31 }
  14099. }
  14100. },
  14101. range: [4, 31],
  14102. loc: {
  14103. start: { line: 1, column: 4 },
  14104. end: { line: 1, column: 31 }
  14105. }
  14106. }],
  14107. kind: 'var',
  14108. range: [0, 32],
  14109. loc: {
  14110. start: { line: 1, column: 0 },
  14111. end: { line: 1, column: 32 }
  14112. }
  14113. },
  14114. 'var hi = function eval() { };': {
  14115. type: 'VariableDeclaration',
  14116. declarations: [{
  14117. type: 'VariableDeclarator',
  14118. id: {
  14119. type: 'Identifier',
  14120. name: 'hi',
  14121. range: [4, 6],
  14122. loc: {
  14123. start: { line: 1, column: 4 },
  14124. end: { line: 1, column: 6 }
  14125. }
  14126. },
  14127. init: {
  14128. type: 'FunctionExpression',
  14129. id: {
  14130. type: 'Identifier',
  14131. name: 'eval',
  14132. range: [18, 22],
  14133. loc: {
  14134. start: { line: 1, column: 18 },
  14135. end: { line: 1, column: 22 }
  14136. }
  14137. },
  14138. params: [],
  14139. defaults: [],
  14140. body: {
  14141. type: 'BlockStatement',
  14142. body: [],
  14143. range: [25, 28],
  14144. loc: {
  14145. start: { line: 1, column: 25 },
  14146. end: { line: 1, column: 28 }
  14147. }
  14148. },
  14149. rest: null,
  14150. generator: false,
  14151. expression: false,
  14152. range: [9, 28],
  14153. loc: {
  14154. start: { line: 1, column: 9 },
  14155. end: { line: 1, column: 28 }
  14156. }
  14157. },
  14158. range: [4, 28],
  14159. loc: {
  14160. start: { line: 1, column: 4 },
  14161. end: { line: 1, column: 28 }
  14162. }
  14163. }],
  14164. kind: 'var',
  14165. range: [0, 29],
  14166. loc: {
  14167. start: { line: 1, column: 0 },
  14168. end: { line: 1, column: 29 }
  14169. }
  14170. },
  14171. 'var hi = function arguments() { };': {
  14172. type: 'VariableDeclaration',
  14173. declarations: [{
  14174. type: 'VariableDeclarator',
  14175. id: {
  14176. type: 'Identifier',
  14177. name: 'hi',
  14178. range: [4, 6],
  14179. loc: {
  14180. start: { line: 1, column: 4 },
  14181. end: { line: 1, column: 6 }
  14182. }
  14183. },
  14184. init: {
  14185. type: 'FunctionExpression',
  14186. id: {
  14187. type: 'Identifier',
  14188. name: 'arguments',
  14189. range: [18, 27],
  14190. loc: {
  14191. start: { line: 1, column: 18 },
  14192. end: { line: 1, column: 27 }
  14193. }
  14194. },
  14195. params: [],
  14196. defaults: [],
  14197. body: {
  14198. type: 'BlockStatement',
  14199. body: [],
  14200. range: [30, 33],
  14201. loc: {
  14202. start: { line: 1, column: 30 },
  14203. end: { line: 1, column: 33 }
  14204. }
  14205. },
  14206. rest: null,
  14207. generator: false,
  14208. expression: false,
  14209. range: [9, 33],
  14210. loc: {
  14211. start: { line: 1, column: 9 },
  14212. end: { line: 1, column: 33 }
  14213. }
  14214. },
  14215. range: [4, 33],
  14216. loc: {
  14217. start: { line: 1, column: 4 },
  14218. end: { line: 1, column: 33 }
  14219. }
  14220. }],
  14221. kind: 'var',
  14222. range: [0, 34],
  14223. loc: {
  14224. start: { line: 1, column: 0 },
  14225. end: { line: 1, column: 34 }
  14226. }
  14227. },
  14228. 'var hello = function hi() { sayHi() };': {
  14229. type: 'VariableDeclaration',
  14230. declarations: [{
  14231. type: 'VariableDeclarator',
  14232. id: {
  14233. type: 'Identifier',
  14234. name: 'hello',
  14235. range: [4, 9],
  14236. loc: {
  14237. start: { line: 1, column: 4 },
  14238. end: { line: 1, column: 9 }
  14239. }
  14240. },
  14241. init: {
  14242. type: 'FunctionExpression',
  14243. id: {
  14244. type: 'Identifier',
  14245. name: 'hi',
  14246. range: [21, 23],
  14247. loc: {
  14248. start: { line: 1, column: 21 },
  14249. end: { line: 1, column: 23 }
  14250. }
  14251. },
  14252. params: [],
  14253. defaults: [],
  14254. body: {
  14255. type: 'BlockStatement',
  14256. body: [{
  14257. type: 'ExpressionStatement',
  14258. expression: {
  14259. type: 'CallExpression',
  14260. callee: {
  14261. type: 'Identifier',
  14262. name: 'sayHi',
  14263. range: [28, 33],
  14264. loc: {
  14265. start: { line: 1, column: 28 },
  14266. end: { line: 1, column: 33 }
  14267. }
  14268. },
  14269. 'arguments': [],
  14270. range: [28, 35],
  14271. loc: {
  14272. start: { line: 1, column: 28 },
  14273. end: { line: 1, column: 35 }
  14274. }
  14275. },
  14276. range: [28, 36],
  14277. loc: {
  14278. start: { line: 1, column: 28 },
  14279. end: { line: 1, column: 36 }
  14280. }
  14281. }],
  14282. range: [26, 37],
  14283. loc: {
  14284. start: { line: 1, column: 26 },
  14285. end: { line: 1, column: 37 }
  14286. }
  14287. },
  14288. rest: null,
  14289. generator: false,
  14290. expression: false,
  14291. range: [12, 37],
  14292. loc: {
  14293. start: { line: 1, column: 12 },
  14294. end: { line: 1, column: 37 }
  14295. }
  14296. },
  14297. range: [4, 37],
  14298. loc: {
  14299. start: { line: 1, column: 4 },
  14300. end: { line: 1, column: 37 }
  14301. }
  14302. }],
  14303. kind: 'var',
  14304. range: [0, 38],
  14305. loc: {
  14306. start: { line: 1, column: 0 },
  14307. end: { line: 1, column: 38 }
  14308. }
  14309. },
  14310. '(function(){})': {
  14311. type: 'ExpressionStatement',
  14312. expression: {
  14313. type: 'FunctionExpression',
  14314. id: null,
  14315. params: [],
  14316. defaults: [],
  14317. body: {
  14318. type: 'BlockStatement',
  14319. body: [],
  14320. range: [11, 13],
  14321. loc: {
  14322. start: { line: 1, column: 11 },
  14323. end: { line: 1, column: 13 }
  14324. }
  14325. },
  14326. rest: null,
  14327. generator: false,
  14328. expression: false,
  14329. range: [1, 13],
  14330. loc: {
  14331. start: { line: 1, column: 1 },
  14332. end: { line: 1, column: 13 }
  14333. }
  14334. },
  14335. range: [0, 14],
  14336. loc: {
  14337. start: { line: 1, column: 0 },
  14338. end: { line: 1, column: 14 }
  14339. }
  14340. }
  14341. },
  14342. 'Automatic semicolon insertion': {
  14343. '{ x\n++y }': {
  14344. type: 'BlockStatement',
  14345. body: [{
  14346. type: 'ExpressionStatement',
  14347. expression: {
  14348. type: 'Identifier',
  14349. name: 'x',
  14350. range: [2, 3],
  14351. loc: {
  14352. start: { line: 1, column: 2 },
  14353. end: { line: 1, column: 3 }
  14354. }
  14355. },
  14356. range: [2, 4],
  14357. loc: {
  14358. start: { line: 1, column: 2 },
  14359. end: { line: 2, column: 0 }
  14360. }
  14361. }, {
  14362. type: 'ExpressionStatement',
  14363. expression: {
  14364. type: 'UpdateExpression',
  14365. operator: '++',
  14366. argument: {
  14367. type: 'Identifier',
  14368. name: 'y',
  14369. range: [6, 7],
  14370. loc: {
  14371. start: { line: 2, column: 2 },
  14372. end: { line: 2, column: 3 }
  14373. }
  14374. },
  14375. prefix: true,
  14376. range: [4, 7],
  14377. loc: {
  14378. start: { line: 2, column: 0 },
  14379. end: { line: 2, column: 3 }
  14380. }
  14381. },
  14382. range: [4, 8],
  14383. loc: {
  14384. start: { line: 2, column: 0 },
  14385. end: { line: 2, column: 4 }
  14386. }
  14387. }],
  14388. range: [0, 9],
  14389. loc: {
  14390. start: { line: 1, column: 0 },
  14391. end: { line: 2, column: 5 }
  14392. }
  14393. },
  14394. '{ x\n--y }': {
  14395. type: 'BlockStatement',
  14396. body: [{
  14397. type: 'ExpressionStatement',
  14398. expression: {
  14399. type: 'Identifier',
  14400. name: 'x',
  14401. range: [2, 3],
  14402. loc: {
  14403. start: { line: 1, column: 2 },
  14404. end: { line: 1, column: 3 }
  14405. }
  14406. },
  14407. range: [2, 4],
  14408. loc: {
  14409. start: { line: 1, column: 2 },
  14410. end: { line: 2, column: 0 }
  14411. }
  14412. }, {
  14413. type: 'ExpressionStatement',
  14414. expression: {
  14415. type: 'UpdateExpression',
  14416. operator: '--',
  14417. argument: {
  14418. type: 'Identifier',
  14419. name: 'y',
  14420. range: [6, 7],
  14421. loc: {
  14422. start: { line: 2, column: 2 },
  14423. end: { line: 2, column: 3 }
  14424. }
  14425. },
  14426. prefix: true,
  14427. range: [4, 7],
  14428. loc: {
  14429. start: { line: 2, column: 0 },
  14430. end: { line: 2, column: 3 }
  14431. }
  14432. },
  14433. range: [4, 8],
  14434. loc: {
  14435. start: { line: 2, column: 0 },
  14436. end: { line: 2, column: 4 }
  14437. }
  14438. }],
  14439. range: [0, 9],
  14440. loc: {
  14441. start: { line: 1, column: 0 },
  14442. end: { line: 2, column: 5 }
  14443. }
  14444. },
  14445. 'var x /* comment */;': {
  14446. type: 'VariableDeclaration',
  14447. declarations: [{
  14448. type: 'VariableDeclarator',
  14449. id: {
  14450. type: 'Identifier',
  14451. name: 'x',
  14452. range: [4, 5],
  14453. loc: {
  14454. start: { line: 1, column: 4 },
  14455. end: { line: 1, column: 5 }
  14456. }
  14457. },
  14458. init: null,
  14459. range: [4, 5],
  14460. loc: {
  14461. start: { line: 1, column: 4 },
  14462. end: { line: 1, column: 5 }
  14463. }
  14464. }],
  14465. kind: 'var',
  14466. range: [0, 20],
  14467. loc: {
  14468. start: { line: 1, column: 0 },
  14469. end: { line: 1, column: 20 }
  14470. }
  14471. },
  14472. '{ var x = 14, y = 3\nz; }': {
  14473. type: 'BlockStatement',
  14474. body: [{
  14475. type: 'VariableDeclaration',
  14476. declarations: [{
  14477. type: 'VariableDeclarator',
  14478. id: {
  14479. type: 'Identifier',
  14480. name: 'x',
  14481. range: [6, 7],
  14482. loc: {
  14483. start: { line: 1, column: 6 },
  14484. end: { line: 1, column: 7 }
  14485. }
  14486. },
  14487. init: {
  14488. type: 'Literal',
  14489. value: 14,
  14490. raw: '14',
  14491. range: [10, 12],
  14492. loc: {
  14493. start: { line: 1, column: 10 },
  14494. end: { line: 1, column: 12 }
  14495. }
  14496. },
  14497. range: [6, 12],
  14498. loc: {
  14499. start: { line: 1, column: 6 },
  14500. end: { line: 1, column: 12 }
  14501. }
  14502. }, {
  14503. type: 'VariableDeclarator',
  14504. id: {
  14505. type: 'Identifier',
  14506. name: 'y',
  14507. range: [14, 15],
  14508. loc: {
  14509. start: { line: 1, column: 14 },
  14510. end: { line: 1, column: 15 }
  14511. }
  14512. },
  14513. init: {
  14514. type: 'Literal',
  14515. value: 3,
  14516. raw: '3',
  14517. range: [18, 19],
  14518. loc: {
  14519. start: { line: 1, column: 18 },
  14520. end: { line: 1, column: 19 }
  14521. }
  14522. },
  14523. range: [14, 19],
  14524. loc: {
  14525. start: { line: 1, column: 14 },
  14526. end: { line: 1, column: 19 }
  14527. }
  14528. }],
  14529. kind: 'var',
  14530. range: [2, 20],
  14531. loc: {
  14532. start: { line: 1, column: 2 },
  14533. end: { line: 2, column: 0 }
  14534. }
  14535. }, {
  14536. type: 'ExpressionStatement',
  14537. expression: {
  14538. type: 'Identifier',
  14539. name: 'z',
  14540. range: [20, 21],
  14541. loc: {
  14542. start: { line: 2, column: 0 },
  14543. end: { line: 2, column: 1 }
  14544. }
  14545. },
  14546. range: [20, 22],
  14547. loc: {
  14548. start: { line: 2, column: 0 },
  14549. end: { line: 2, column: 2 }
  14550. }
  14551. }],
  14552. range: [0, 24],
  14553. loc: {
  14554. start: { line: 1, column: 0 },
  14555. end: { line: 2, column: 4 }
  14556. }
  14557. },
  14558. 'while (true) { continue\nthere; }': {
  14559. type: 'WhileStatement',
  14560. test: {
  14561. type: 'Literal',
  14562. value: true,
  14563. raw: 'true',
  14564. range: [7, 11],
  14565. loc: {
  14566. start: { line: 1, column: 7 },
  14567. end: { line: 1, column: 11 }
  14568. }
  14569. },
  14570. body: {
  14571. type: 'BlockStatement',
  14572. body: [{
  14573. type: 'ContinueStatement',
  14574. label: null,
  14575. range: [15, 23],
  14576. loc: {
  14577. start: { line: 1, column: 15 },
  14578. end: { line: 1, column: 23 }
  14579. }
  14580. }, {
  14581. type: 'ExpressionStatement',
  14582. expression: {
  14583. type: 'Identifier',
  14584. name: 'there',
  14585. range: [24, 29],
  14586. loc: {
  14587. start: { line: 2, column: 0 },
  14588. end: { line: 2, column: 5 }
  14589. }
  14590. },
  14591. range: [24, 30],
  14592. loc: {
  14593. start: { line: 2, column: 0 },
  14594. end: { line: 2, column: 6 }
  14595. }
  14596. }],
  14597. range: [13, 32],
  14598. loc: {
  14599. start: { line: 1, column: 13 },
  14600. end: { line: 2, column: 8 }
  14601. }
  14602. },
  14603. range: [0, 32],
  14604. loc: {
  14605. start: { line: 1, column: 0 },
  14606. end: { line: 2, column: 8 }
  14607. }
  14608. },
  14609. 'while (true) { continue // Comment\nthere; }': {
  14610. type: 'WhileStatement',
  14611. test: {
  14612. type: 'Literal',
  14613. value: true,
  14614. raw: 'true',
  14615. range: [7, 11],
  14616. loc: {
  14617. start: { line: 1, column: 7 },
  14618. end: { line: 1, column: 11 }
  14619. }
  14620. },
  14621. body: {
  14622. type: 'BlockStatement',
  14623. body: [{
  14624. type: 'ContinueStatement',
  14625. label: null,
  14626. range: [15, 23],
  14627. loc: {
  14628. start: { line: 1, column: 15 },
  14629. end: { line: 1, column: 23 }
  14630. }
  14631. }, {
  14632. type: 'ExpressionStatement',
  14633. expression: {
  14634. type: 'Identifier',
  14635. name: 'there',
  14636. range: [35, 40],
  14637. loc: {
  14638. start: { line: 2, column: 0 },
  14639. end: { line: 2, column: 5 }
  14640. }
  14641. },
  14642. range: [35, 41],
  14643. loc: {
  14644. start: { line: 2, column: 0 },
  14645. end: { line: 2, column: 6 }
  14646. }
  14647. }],
  14648. range: [13, 43],
  14649. loc: {
  14650. start: { line: 1, column: 13 },
  14651. end: { line: 2, column: 8 }
  14652. }
  14653. },
  14654. range: [0, 43],
  14655. loc: {
  14656. start: { line: 1, column: 0 },
  14657. end: { line: 2, column: 8 }
  14658. }
  14659. },
  14660. 'while (true) { continue /* Multiline\nComment */there; }': {
  14661. type: 'WhileStatement',
  14662. test: {
  14663. type: 'Literal',
  14664. value: true,
  14665. raw: 'true',
  14666. range: [7, 11],
  14667. loc: {
  14668. start: { line: 1, column: 7 },
  14669. end: { line: 1, column: 11 }
  14670. }
  14671. },
  14672. body: {
  14673. type: 'BlockStatement',
  14674. body: [{
  14675. type: 'ContinueStatement',
  14676. label: null,
  14677. range: [15, 23],
  14678. loc: {
  14679. start: { line: 1, column: 15 },
  14680. end: { line: 1, column: 23 }
  14681. }
  14682. }, {
  14683. type: 'ExpressionStatement',
  14684. expression: {
  14685. type: 'Identifier',
  14686. name: 'there',
  14687. range: [47, 52],
  14688. loc: {
  14689. start: { line: 2, column: 10 },
  14690. end: { line: 2, column: 15 }
  14691. }
  14692. },
  14693. range: [47, 53],
  14694. loc: {
  14695. start: { line: 2, column: 10 },
  14696. end: { line: 2, column: 16 }
  14697. }
  14698. }],
  14699. range: [13, 55],
  14700. loc: {
  14701. start: { line: 1, column: 13 },
  14702. end: { line: 2, column: 18 }
  14703. }
  14704. },
  14705. range: [0, 55],
  14706. loc: {
  14707. start: { line: 1, column: 0 },
  14708. end: { line: 2, column: 18 }
  14709. }
  14710. },
  14711. 'while (true) { break\nthere; }': {
  14712. type: 'WhileStatement',
  14713. test: {
  14714. type: 'Literal',
  14715. value: true,
  14716. raw: 'true',
  14717. range: [7, 11],
  14718. loc: {
  14719. start: { line: 1, column: 7 },
  14720. end: { line: 1, column: 11 }
  14721. }
  14722. },
  14723. body: {
  14724. type: 'BlockStatement',
  14725. body: [{
  14726. type: 'BreakStatement',
  14727. label: null,
  14728. range: [15, 20],
  14729. loc: {
  14730. start: { line: 1, column: 15 },
  14731. end: { line: 1, column: 20 }
  14732. }
  14733. }, {
  14734. type: 'ExpressionStatement',
  14735. expression: {
  14736. type: 'Identifier',
  14737. name: 'there',
  14738. range: [21, 26],
  14739. loc: {
  14740. start: { line: 2, column: 0 },
  14741. end: { line: 2, column: 5 }
  14742. }
  14743. },
  14744. range: [21, 27],
  14745. loc: {
  14746. start: { line: 2, column: 0 },
  14747. end: { line: 2, column: 6 }
  14748. }
  14749. }],
  14750. range: [13, 29],
  14751. loc: {
  14752. start: { line: 1, column: 13 },
  14753. end: { line: 2, column: 8 }
  14754. }
  14755. },
  14756. range: [0, 29],
  14757. loc: {
  14758. start: { line: 1, column: 0 },
  14759. end: { line: 2, column: 8 }
  14760. }
  14761. },
  14762. 'while (true) { break // Comment\nthere; }': {
  14763. type: 'WhileStatement',
  14764. test: {
  14765. type: 'Literal',
  14766. value: true,
  14767. raw: 'true',
  14768. range: [7, 11],
  14769. loc: {
  14770. start: { line: 1, column: 7 },
  14771. end: { line: 1, column: 11 }
  14772. }
  14773. },
  14774. body: {
  14775. type: 'BlockStatement',
  14776. body: [{
  14777. type: 'BreakStatement',
  14778. label: null,
  14779. range: [15, 20],
  14780. loc: {
  14781. start: { line: 1, column: 15 },
  14782. end: { line: 1, column: 20 }
  14783. }
  14784. }, {
  14785. type: 'ExpressionStatement',
  14786. expression: {
  14787. type: 'Identifier',
  14788. name: 'there',
  14789. range: [32, 37],
  14790. loc: {
  14791. start: { line: 2, column: 0 },
  14792. end: { line: 2, column: 5 }
  14793. }
  14794. },
  14795. range: [32, 38],
  14796. loc: {
  14797. start: { line: 2, column: 0 },
  14798. end: { line: 2, column: 6 }
  14799. }
  14800. }],
  14801. range: [13, 40],
  14802. loc: {
  14803. start: { line: 1, column: 13 },
  14804. end: { line: 2, column: 8 }
  14805. }
  14806. },
  14807. range: [0, 40],
  14808. loc: {
  14809. start: { line: 1, column: 0 },
  14810. end: { line: 2, column: 8 }
  14811. }
  14812. },
  14813. 'while (true) { break /* Multiline\nComment */there; }': {
  14814. type: 'WhileStatement',
  14815. test: {
  14816. type: 'Literal',
  14817. value: true,
  14818. raw: 'true',
  14819. range: [7, 11],
  14820. loc: {
  14821. start: { line: 1, column: 7 },
  14822. end: { line: 1, column: 11 }
  14823. }
  14824. },
  14825. body: {
  14826. type: 'BlockStatement',
  14827. body: [{
  14828. type: 'BreakStatement',
  14829. label: null,
  14830. range: [15, 20],
  14831. loc: {
  14832. start: { line: 1, column: 15 },
  14833. end: { line: 1, column: 20 }
  14834. }
  14835. }, {
  14836. type: 'ExpressionStatement',
  14837. expression: {
  14838. type: 'Identifier',
  14839. name: 'there',
  14840. range: [44, 49],
  14841. loc: {
  14842. start: { line: 2, column: 10 },
  14843. end: { line: 2, column: 15 }
  14844. }
  14845. },
  14846. range: [44, 50],
  14847. loc: {
  14848. start: { line: 2, column: 10 },
  14849. end: { line: 2, column: 16 }
  14850. }
  14851. }],
  14852. range: [13, 52],
  14853. loc: {
  14854. start: { line: 1, column: 13 },
  14855. end: { line: 2, column: 18 }
  14856. }
  14857. },
  14858. range: [0, 52],
  14859. loc: {
  14860. start: { line: 1, column: 0 },
  14861. end: { line: 2, column: 18 }
  14862. }
  14863. },
  14864. '(function(){ return\nx; })': {
  14865. type: 'ExpressionStatement',
  14866. expression: {
  14867. type: 'FunctionExpression',
  14868. id: null,
  14869. params: [],
  14870. defaults: [],
  14871. body: {
  14872. type: 'BlockStatement',
  14873. body: [
  14874. {
  14875. type: 'ReturnStatement',
  14876. argument: null,
  14877. range: [13, 19],
  14878. loc: {
  14879. start: { line: 1, column: 13 },
  14880. end: { line: 1, column: 19 }
  14881. }
  14882. },
  14883. {
  14884. type: 'ExpressionStatement',
  14885. expression: {
  14886. type: 'Identifier',
  14887. name: 'x',
  14888. range: [20, 21],
  14889. loc: {
  14890. start: { line: 2, column: 0 },
  14891. end: { line: 2, column: 1 }
  14892. }
  14893. },
  14894. range: [20, 22],
  14895. loc: {
  14896. start: { line: 2, column: 0 },
  14897. end: { line: 2, column: 2 }
  14898. }
  14899. }
  14900. ],
  14901. range: [11, 24],
  14902. loc: {
  14903. start: { line: 1, column: 11 },
  14904. end: { line: 2, column: 4 }
  14905. }
  14906. },
  14907. rest: null,
  14908. generator: false,
  14909. expression: false,
  14910. range: [1, 24],
  14911. loc: {
  14912. start: { line: 1, column: 1 },
  14913. end: { line: 2, column: 4 }
  14914. }
  14915. },
  14916. range: [0, 25],
  14917. loc: {
  14918. start: { line: 1, column: 0 },
  14919. end: { line: 2, column: 5 }
  14920. }
  14921. },
  14922. '(function(){ return // Comment\nx; })': {
  14923. type: 'ExpressionStatement',
  14924. expression: {
  14925. type: 'FunctionExpression',
  14926. id: null,
  14927. params: [],
  14928. defaults: [],
  14929. body: {
  14930. type: 'BlockStatement',
  14931. body: [
  14932. {
  14933. type: 'ReturnStatement',
  14934. argument: null,
  14935. range: [13, 19],
  14936. loc: {
  14937. start: { line: 1, column: 13 },
  14938. end: { line: 1, column: 19 }
  14939. }
  14940. },
  14941. {
  14942. type: 'ExpressionStatement',
  14943. expression: {
  14944. type: 'Identifier',
  14945. name: 'x',
  14946. range: [31, 32],
  14947. loc: {
  14948. start: { line: 2, column: 0 },
  14949. end: { line: 2, column: 1 }
  14950. }
  14951. },
  14952. range: [31, 33],
  14953. loc: {
  14954. start: { line: 2, column: 0 },
  14955. end: { line: 2, column: 2 }
  14956. }
  14957. }
  14958. ],
  14959. range: [11, 35],
  14960. loc: {
  14961. start: { line: 1, column: 11 },
  14962. end: { line: 2, column: 4 }
  14963. }
  14964. },
  14965. rest: null,
  14966. generator: false,
  14967. expression: false,
  14968. range: [1, 35],
  14969. loc: {
  14970. start: { line: 1, column: 1 },
  14971. end: { line: 2, column: 4 }
  14972. }
  14973. },
  14974. range: [0, 36],
  14975. loc: {
  14976. start: { line: 1, column: 0 },
  14977. end: { line: 2, column: 5 }
  14978. }
  14979. },
  14980. '(function(){ return/* Multiline\nComment */x; })': {
  14981. type: 'ExpressionStatement',
  14982. expression: {
  14983. type: 'FunctionExpression',
  14984. id: null,
  14985. params: [],
  14986. defaults: [],
  14987. body: {
  14988. type: 'BlockStatement',
  14989. body: [
  14990. {
  14991. type: 'ReturnStatement',
  14992. argument: null,
  14993. range: [13, 19],
  14994. loc: {
  14995. start: { line: 1, column: 13 },
  14996. end: { line: 1, column: 19 }
  14997. }
  14998. },
  14999. {
  15000. type: 'ExpressionStatement',
  15001. expression: {
  15002. type: 'Identifier',
  15003. name: 'x',
  15004. range: [42, 43],
  15005. loc: {
  15006. start: { line: 2, column: 10 },
  15007. end: { line: 2, column: 11 }
  15008. }
  15009. },
  15010. range: [42, 44],
  15011. loc: {
  15012. start: { line: 2, column: 10 },
  15013. end: { line: 2, column: 12 }
  15014. }
  15015. }
  15016. ],
  15017. range: [11, 46],
  15018. loc: {
  15019. start: { line: 1, column: 11 },
  15020. end: { line: 2, column: 14 }
  15021. }
  15022. },
  15023. rest: null,
  15024. generator: false,
  15025. expression: false,
  15026. range: [1, 46],
  15027. loc: {
  15028. start: { line: 1, column: 1 },
  15029. end: { line: 2, column: 14 }
  15030. }
  15031. },
  15032. range: [0, 47],
  15033. loc: {
  15034. start: { line: 1, column: 0 },
  15035. end: { line: 2, column: 15 }
  15036. }
  15037. },
  15038. '{ throw error\nerror; }': {
  15039. type: 'BlockStatement',
  15040. body: [{
  15041. type: 'ThrowStatement',
  15042. argument: {
  15043. type: 'Identifier',
  15044. name: 'error',
  15045. range: [8, 13],
  15046. loc: {
  15047. start: { line: 1, column: 8 },
  15048. end: { line: 1, column: 13 }
  15049. }
  15050. },
  15051. range: [2, 14],
  15052. loc: {
  15053. start: { line: 1, column: 2 },
  15054. end: { line: 2, column: 0 }
  15055. }
  15056. }, {
  15057. type: 'ExpressionStatement',
  15058. expression: {
  15059. type: 'Identifier',
  15060. name: 'error',
  15061. range: [14, 19],
  15062. loc: {
  15063. start: { line: 2, column: 0 },
  15064. end: { line: 2, column: 5 }
  15065. }
  15066. },
  15067. range: [14, 20],
  15068. loc: {
  15069. start: { line: 2, column: 0 },
  15070. end: { line: 2, column: 6 }
  15071. }
  15072. }],
  15073. range: [0, 22],
  15074. loc: {
  15075. start: { line: 1, column: 0 },
  15076. end: { line: 2, column: 8 }
  15077. }
  15078. },
  15079. '{ throw error// Comment\nerror; }': {
  15080. type: 'BlockStatement',
  15081. body: [{
  15082. type: 'ThrowStatement',
  15083. argument: {
  15084. type: 'Identifier',
  15085. name: 'error',
  15086. range: [8, 13],
  15087. loc: {
  15088. start: { line: 1, column: 8 },
  15089. end: { line: 1, column: 13 }
  15090. }
  15091. },
  15092. range: [2, 24],
  15093. loc: {
  15094. start: { line: 1, column: 2 },
  15095. end: { line: 2, column: 0 }
  15096. }
  15097. }, {
  15098. type: 'ExpressionStatement',
  15099. expression: {
  15100. type: 'Identifier',
  15101. name: 'error',
  15102. range: [24, 29],
  15103. loc: {
  15104. start: { line: 2, column: 0 },
  15105. end: { line: 2, column: 5 }
  15106. }
  15107. },
  15108. range: [24, 30],
  15109. loc: {
  15110. start: { line: 2, column: 0 },
  15111. end: { line: 2, column: 6 }
  15112. }
  15113. }],
  15114. range: [0, 32],
  15115. loc: {
  15116. start: { line: 1, column: 0 },
  15117. end: { line: 2, column: 8 }
  15118. }
  15119. },
  15120. '{ throw error/* Multiline\nComment */error; }': {
  15121. type: 'BlockStatement',
  15122. body: [{
  15123. type: 'ThrowStatement',
  15124. argument: {
  15125. type: 'Identifier',
  15126. name: 'error',
  15127. range: [8, 13],
  15128. loc: {
  15129. start: { line: 1, column: 8 },
  15130. end: { line: 1, column: 13 }
  15131. }
  15132. },
  15133. range: [2, 36],
  15134. loc: {
  15135. start: { line: 1, column: 2 },
  15136. end: { line: 2, column: 10 }
  15137. }
  15138. }, {
  15139. type: 'ExpressionStatement',
  15140. expression: {
  15141. type: 'Identifier',
  15142. name: 'error',
  15143. range: [36, 41],
  15144. loc: {
  15145. start: { line: 2, column: 10 },
  15146. end: { line: 2, column: 15 }
  15147. }
  15148. },
  15149. range: [36, 42],
  15150. loc: {
  15151. start: { line: 2, column: 10 },
  15152. end: { line: 2, column: 16 }
  15153. }
  15154. }],
  15155. range: [0, 44],
  15156. loc: {
  15157. start: { line: 1, column: 0 },
  15158. end: { line: 2, column: 18 }
  15159. }
  15160. }
  15161. },
  15162. 'Source elements': {
  15163. '': {
  15164. type: 'Program',
  15165. body: [],
  15166. range: [0, 0],
  15167. loc: {
  15168. start: { line: 0, column: 0 },
  15169. end: { line: 0, column: 0 }
  15170. },
  15171. tokens: []
  15172. }
  15173. },
  15174. 'Invalid syntax': {
  15175. '{': {
  15176. index: 1,
  15177. lineNumber: 1,
  15178. column: 2,
  15179. message: 'Error: Line 1: Unexpected end of input'
  15180. },
  15181. '}': {
  15182. index: 0,
  15183. lineNumber: 1,
  15184. column: 1,
  15185. message: 'Error: Line 1: Unexpected token }'
  15186. },
  15187. '3ea': {
  15188. index: 2,
  15189. lineNumber: 1,
  15190. column: 3,
  15191. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15192. },
  15193. '3in []': {
  15194. index: 1,
  15195. lineNumber: 1,
  15196. column: 2,
  15197. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15198. },
  15199. '3e': {
  15200. index: 2,
  15201. lineNumber: 1,
  15202. column: 3,
  15203. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15204. },
  15205. '3e+': {
  15206. index: 3,
  15207. lineNumber: 1,
  15208. column: 4,
  15209. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15210. },
  15211. '3e-': {
  15212. index: 3,
  15213. lineNumber: 1,
  15214. column: 4,
  15215. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15216. },
  15217. '3x': {
  15218. index: 1,
  15219. lineNumber: 1,
  15220. column: 2,
  15221. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15222. },
  15223. '3x0': {
  15224. index: 1,
  15225. lineNumber: 1,
  15226. column: 2,
  15227. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15228. },
  15229. '0x': {
  15230. index: 2,
  15231. lineNumber: 1,
  15232. column: 3,
  15233. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15234. },
  15235. '09': {
  15236. index: 1,
  15237. lineNumber: 1,
  15238. column: 2,
  15239. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15240. },
  15241. '018': {
  15242. index: 2,
  15243. lineNumber: 1,
  15244. column: 3,
  15245. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15246. },
  15247. '01a': {
  15248. index: 2,
  15249. lineNumber: 1,
  15250. column: 3,
  15251. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15252. },
  15253. '3in[]': {
  15254. index: 1,
  15255. lineNumber: 1,
  15256. column: 2,
  15257. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15258. },
  15259. '0x3in[]': {
  15260. index: 3,
  15261. lineNumber: 1,
  15262. column: 4,
  15263. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15264. },
  15265. '"Hello\nWorld"': {
  15266. index: 7,
  15267. lineNumber: 1,
  15268. column: 8,
  15269. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15270. },
  15271. 'x\\': {
  15272. index: 2,
  15273. lineNumber: 1,
  15274. column: 3,
  15275. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15276. },
  15277. 'x\\u005c': {
  15278. index: 7,
  15279. lineNumber: 1,
  15280. column: 8,
  15281. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15282. },
  15283. 'x\\u002a': {
  15284. index: 7,
  15285. lineNumber: 1,
  15286. column: 8,
  15287. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15288. },
  15289. 'var x = /(s/g': {
  15290. index: 13,
  15291. lineNumber: 1,
  15292. column: 14,
  15293. message: 'Error: Line 1: Invalid regular expression'
  15294. },
  15295. '/': {
  15296. index: 1,
  15297. lineNumber: 1,
  15298. column: 2,
  15299. message: 'Error: Line 1: Invalid regular expression: missing /'
  15300. },
  15301. '/test': {
  15302. index: 5,
  15303. lineNumber: 1,
  15304. column: 6,
  15305. message: 'Error: Line 1: Invalid regular expression: missing /'
  15306. },
  15307. 'var x = /[a-z]/\\ux': {
  15308. index: 18,
  15309. lineNumber: 1,
  15310. column: 19,
  15311. message: 'Error: Line 1: Invalid regular expression'
  15312. },
  15313. '3 = 4': {
  15314. index: 1,
  15315. lineNumber: 1,
  15316. column: 2,
  15317. message: 'Error: Line 1: Invalid left-hand side in assignment'
  15318. },
  15319. 'func() = 4': {
  15320. index: 6,
  15321. lineNumber: 1,
  15322. column: 7,
  15323. message: 'Error: Line 1: Invalid left-hand side in assignment'
  15324. },
  15325. '(1 + 1) = 10': {
  15326. index: 7,
  15327. lineNumber: 1,
  15328. column: 8,
  15329. message: 'Error: Line 1: Invalid left-hand side in assignment'
  15330. },
  15331. '1++': {
  15332. index: 1,
  15333. lineNumber: 1,
  15334. column: 2,
  15335. message: 'Error: Line 1: Invalid left-hand side in assignment'
  15336. },
  15337. '1--': {
  15338. index: 1,
  15339. lineNumber: 1,
  15340. column: 2,
  15341. message: 'Error: Line 1: Invalid left-hand side in assignment'
  15342. },
  15343. '++1': {
  15344. index: 3,
  15345. lineNumber: 1,
  15346. column: 4,
  15347. message: 'Error: Line 1: Invalid left-hand side in assignment'
  15348. },
  15349. '--1': {
  15350. index: 3,
  15351. lineNumber: 1,
  15352. column: 4,
  15353. message: 'Error: Line 1: Invalid left-hand side in assignment'
  15354. },
  15355. 'for((1 + 1) in list) process(x);': {
  15356. index: 11,
  15357. lineNumber: 1,
  15358. column: 12,
  15359. message: 'Error: Line 1: Invalid left-hand side in for-in'
  15360. },
  15361. '[': {
  15362. index: 1,
  15363. lineNumber: 1,
  15364. column: 2,
  15365. message: 'Error: Line 1: Unexpected end of input'
  15366. },
  15367. '[,': {
  15368. index: 2,
  15369. lineNumber: 1,
  15370. column: 3,
  15371. message: 'Error: Line 1: Unexpected end of input'
  15372. },
  15373. '1 + {': {
  15374. index: 5,
  15375. lineNumber: 1,
  15376. column: 6,
  15377. message: 'Error: Line 1: Unexpected end of input'
  15378. },
  15379. '1 + { t:t ': {
  15380. index: 10,
  15381. lineNumber: 1,
  15382. column: 11,
  15383. message: 'Error: Line 1: Unexpected end of input'
  15384. },
  15385. '1 + { t:t,': {
  15386. index: 10,
  15387. lineNumber: 1,
  15388. column: 11,
  15389. message: 'Error: Line 1: Unexpected end of input'
  15390. },
  15391. 'var x = /\n/': {
  15392. index: 10,
  15393. lineNumber: 1,
  15394. column: 11,
  15395. message: 'Error: Line 1: Invalid regular expression: missing /'
  15396. },
  15397. 'var x = "\n': {
  15398. index: 10,
  15399. lineNumber: 1,
  15400. column: 11,
  15401. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15402. },
  15403. 'var if = 42': {
  15404. index: 4,
  15405. lineNumber: 1,
  15406. column: 5,
  15407. message: 'Error: Line 1: Unexpected token if'
  15408. },
  15409. 'i + 2 = 42': {
  15410. index: 5,
  15411. lineNumber: 1,
  15412. column: 6,
  15413. message: 'Error: Line 1: Invalid left-hand side in assignment'
  15414. },
  15415. '+i = 42': {
  15416. index: 2,
  15417. lineNumber: 1,
  15418. column: 3,
  15419. message: 'Error: Line 1: Invalid left-hand side in assignment'
  15420. },
  15421. '1 + (': {
  15422. index: 5,
  15423. lineNumber: 1,
  15424. column: 6,
  15425. message: 'Error: Line 1: Unexpected end of input'
  15426. },
  15427. '\n\n\n{': {
  15428. index: 4,
  15429. lineNumber: 4,
  15430. column: 2,
  15431. message: 'Error: Line 4: Unexpected end of input'
  15432. },
  15433. '\n/* Some multiline\ncomment */\n)': {
  15434. index: 30,
  15435. lineNumber: 4,
  15436. column: 1,
  15437. message: 'Error: Line 4: Unexpected token )'
  15438. },
  15439. '{ set 1 }': {
  15440. index: 6,
  15441. lineNumber: 1,
  15442. column: 7,
  15443. message: 'Error: Line 1: Unexpected number'
  15444. },
  15445. '{ get 2 }': {
  15446. index: 6,
  15447. lineNumber: 1,
  15448. column: 7,
  15449. message: 'Error: Line 1: Unexpected number'
  15450. },
  15451. '({ set: s(if) { } })': {
  15452. index: 10,
  15453. lineNumber: 1,
  15454. column: 11,
  15455. message: 'Error: Line 1: Unexpected token if'
  15456. },
  15457. '({ set s(.) { } })': {
  15458. index: 9,
  15459. lineNumber: 1,
  15460. column: 10,
  15461. message: 'Error: Line 1: Unexpected token .'
  15462. },
  15463. '({ set s() { } })': {
  15464. index: 9,
  15465. lineNumber: 1,
  15466. column: 10,
  15467. message: 'Error: Line 1: Unexpected token )'
  15468. },
  15469. '({ set: s() { } })': {
  15470. index: 12,
  15471. lineNumber: 1,
  15472. column: 13,
  15473. message: 'Error: Line 1: Unexpected token {'
  15474. },
  15475. '({ set: s(a, b) { } })': {
  15476. index: 16,
  15477. lineNumber: 1,
  15478. column: 17,
  15479. message: 'Error: Line 1: Unexpected token {'
  15480. },
  15481. '({ get: g(d) { } })': {
  15482. index: 13,
  15483. lineNumber: 1,
  15484. column: 14,
  15485. message: 'Error: Line 1: Unexpected token {'
  15486. },
  15487. '({ get i() { }, i: 42 })': {
  15488. index: 21,
  15489. lineNumber: 1,
  15490. column: 22,
  15491. message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
  15492. },
  15493. '({ i: 42, get i() { } })': {
  15494. index: 21,
  15495. lineNumber: 1,
  15496. column: 22,
  15497. message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
  15498. },
  15499. '({ set i(x) { }, i: 42 })': {
  15500. index: 22,
  15501. lineNumber: 1,
  15502. column: 23,
  15503. message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
  15504. },
  15505. '({ i: 42, set i(x) { } })': {
  15506. index: 22,
  15507. lineNumber: 1,
  15508. column: 23,
  15509. message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
  15510. },
  15511. '({ get i() { }, get i() { } })': {
  15512. index: 27,
  15513. lineNumber: 1,
  15514. column: 28,
  15515. message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
  15516. },
  15517. '({ set i(x) { }, set i(x) { } })': {
  15518. index: 29,
  15519. lineNumber: 1,
  15520. column: 30,
  15521. message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
  15522. },
  15523. 'function t(if) { }': {
  15524. index: 11,
  15525. lineNumber: 1,
  15526. column: 12,
  15527. message: 'Error: Line 1: Unexpected token if'
  15528. },
  15529. 'function t(true) { }': {
  15530. index: 11,
  15531. lineNumber: 1,
  15532. column: 12,
  15533. message: 'Error: Line 1: Unexpected token true'
  15534. },
  15535. 'function t(false) { }': {
  15536. index: 11,
  15537. lineNumber: 1,
  15538. column: 12,
  15539. message: 'Error: Line 1: Unexpected token false'
  15540. },
  15541. 'function t(null) { }': {
  15542. index: 11,
  15543. lineNumber: 1,
  15544. column: 12,
  15545. message: 'Error: Line 1: Unexpected token null'
  15546. },
  15547. 'function null() { }': {
  15548. index: 9,
  15549. lineNumber: 1,
  15550. column: 10,
  15551. message: 'Error: Line 1: Unexpected token null'
  15552. },
  15553. 'function true() { }': {
  15554. index: 9,
  15555. lineNumber: 1,
  15556. column: 10,
  15557. message: 'Error: Line 1: Unexpected token true'
  15558. },
  15559. 'function false() { }': {
  15560. index: 9,
  15561. lineNumber: 1,
  15562. column: 10,
  15563. message: 'Error: Line 1: Unexpected token false'
  15564. },
  15565. 'function if() { }': {
  15566. index: 9,
  15567. lineNumber: 1,
  15568. column: 10,
  15569. message: 'Error: Line 1: Unexpected token if'
  15570. },
  15571. 'a b;': {
  15572. index: 2,
  15573. lineNumber: 1,
  15574. column: 3,
  15575. message: 'Error: Line 1: Unexpected identifier'
  15576. },
  15577. 'if.a;': {
  15578. index: 2,
  15579. lineNumber: 1,
  15580. column: 3,
  15581. message: 'Error: Line 1: Unexpected token .'
  15582. },
  15583. 'a if;': {
  15584. index: 2,
  15585. lineNumber: 1,
  15586. column: 3,
  15587. message: 'Error: Line 1: Unexpected token if'
  15588. },
  15589. 'a class;': {
  15590. index: 2,
  15591. lineNumber: 1,
  15592. column: 3,
  15593. message: 'Error: Line 1: Unexpected reserved word'
  15594. },
  15595. 'break\n': {
  15596. index: 5,
  15597. lineNumber: 1,
  15598. column: 6,
  15599. message: 'Error: Line 1: Illegal break statement'
  15600. },
  15601. 'break 1;': {
  15602. index: 6,
  15603. lineNumber: 1,
  15604. column: 7,
  15605. message: 'Error: Line 1: Unexpected number'
  15606. },
  15607. 'continue\n': {
  15608. index: 8,
  15609. lineNumber: 1,
  15610. column: 9,
  15611. message: 'Error: Line 1: Illegal continue statement'
  15612. },
  15613. 'continue 2;': {
  15614. index: 9,
  15615. lineNumber: 1,
  15616. column: 10,
  15617. message: 'Error: Line 1: Unexpected number'
  15618. },
  15619. 'throw': {
  15620. index: 5,
  15621. lineNumber: 1,
  15622. column: 6,
  15623. message: 'Error: Line 1: Unexpected end of input'
  15624. },
  15625. 'throw;': {
  15626. index: 5,
  15627. lineNumber: 1,
  15628. column: 6,
  15629. message: 'Error: Line 1: Unexpected token ;'
  15630. },
  15631. 'throw\n': {
  15632. index: 5,
  15633. lineNumber: 1,
  15634. column: 6,
  15635. message: 'Error: Line 1: Illegal newline after throw'
  15636. },
  15637. 'for (var i, i2 in {});': {
  15638. index: 15,
  15639. lineNumber: 1,
  15640. column: 16,
  15641. message: 'Error: Line 1: Unexpected token in'
  15642. },
  15643. 'for ((i in {}));': {
  15644. index: 14,
  15645. lineNumber: 1,
  15646. column: 15,
  15647. message: 'Error: Line 1: Unexpected token )'
  15648. },
  15649. 'for (i + 1 in {});': {
  15650. index: 10,
  15651. lineNumber: 1,
  15652. column: 11,
  15653. message: 'Error: Line 1: Invalid left-hand side in for-in'
  15654. },
  15655. 'for (+i in {});': {
  15656. index: 7,
  15657. lineNumber: 1,
  15658. column: 8,
  15659. message: 'Error: Line 1: Invalid left-hand side in for-in'
  15660. },
  15661. 'if(false)': {
  15662. index: 9,
  15663. lineNumber: 1,
  15664. column: 10,
  15665. message: 'Error: Line 1: Unexpected end of input'
  15666. },
  15667. 'if(false) doThis(); else': {
  15668. index: 24,
  15669. lineNumber: 1,
  15670. column: 25,
  15671. message: 'Error: Line 1: Unexpected end of input'
  15672. },
  15673. 'do': {
  15674. index: 2,
  15675. lineNumber: 1,
  15676. column: 3,
  15677. message: 'Error: Line 1: Unexpected end of input'
  15678. },
  15679. 'while(false)': {
  15680. index: 12,
  15681. lineNumber: 1,
  15682. column: 13,
  15683. message: 'Error: Line 1: Unexpected end of input'
  15684. },
  15685. 'for(;;)': {
  15686. index: 7,
  15687. lineNumber: 1,
  15688. column: 8,
  15689. message: 'Error: Line 1: Unexpected end of input'
  15690. },
  15691. 'with(x)': {
  15692. index: 7,
  15693. lineNumber: 1,
  15694. column: 8,
  15695. message: 'Error: Line 1: Unexpected end of input'
  15696. },
  15697. 'try { }': {
  15698. index: 7,
  15699. lineNumber: 1,
  15700. column: 8,
  15701. message: 'Error: Line 1: Missing catch or finally after try'
  15702. },
  15703. 'try {} catch (42) {} ': {
  15704. index: 14,
  15705. lineNumber: 1,
  15706. column: 15,
  15707. message: 'Error: Line 1: Unexpected number'
  15708. },
  15709. 'try {} catch (answer()) {} ': {
  15710. index: 20,
  15711. lineNumber: 1,
  15712. column: 21,
  15713. message: 'Error: Line 1: Unexpected token ('
  15714. },
  15715. 'try {} catch (-x) {} ': {
  15716. index: 14,
  15717. lineNumber: 1,
  15718. column: 15,
  15719. message: 'Error: Line 1: Unexpected token -'
  15720. },
  15721. '\u203F = 10': {
  15722. index: 0,
  15723. lineNumber: 1,
  15724. column: 1,
  15725. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15726. },
  15727. 'const x = 12, y;': {
  15728. index: 15,
  15729. lineNumber: 1,
  15730. column: 16,
  15731. message: 'Error: Line 1: Unexpected token ;'
  15732. },
  15733. 'const x, y = 12;': {
  15734. index: 7,
  15735. lineNumber: 1,
  15736. column: 8,
  15737. message: 'Error: Line 1: Unexpected token ,'
  15738. },
  15739. 'const x;': {
  15740. index: 7,
  15741. lineNumber: 1,
  15742. column: 8,
  15743. message: 'Error: Line 1: Unexpected token ;'
  15744. },
  15745. 'if(true) let a = 1;': {
  15746. index: 9,
  15747. lineNumber: 1,
  15748. column: 10,
  15749. message: 'Error: Line 1: Unexpected token let'
  15750. },
  15751. 'if(true) const a = 1;': {
  15752. index: 9,
  15753. lineNumber: 1,
  15754. column: 10,
  15755. message: 'Error: Line 1: Unexpected token const'
  15756. },
  15757. 'switch (c) { default: default: }': {
  15758. index: 30,
  15759. lineNumber: 1,
  15760. column: 31,
  15761. message: 'Error: Line 1: More than one default clause in switch statement'
  15762. },
  15763. 'new X()."s"': {
  15764. index: 8,
  15765. lineNumber: 1,
  15766. column: 9,
  15767. message: 'Error: Line 1: Unexpected string'
  15768. },
  15769. '/*': {
  15770. index: 2,
  15771. lineNumber: 1,
  15772. column: 3,
  15773. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15774. },
  15775. '/*\n\n\n': {
  15776. index: 5,
  15777. lineNumber: 4,
  15778. column: 1,
  15779. message: 'Error: Line 4: Unexpected token ILLEGAL'
  15780. },
  15781. '/**': {
  15782. index: 3,
  15783. lineNumber: 1,
  15784. column: 4,
  15785. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15786. },
  15787. '/*\n\n*': {
  15788. index: 5,
  15789. lineNumber: 3,
  15790. column: 2,
  15791. message: 'Error: Line 3: Unexpected token ILLEGAL'
  15792. },
  15793. '/*hello': {
  15794. index: 7,
  15795. lineNumber: 1,
  15796. column: 8,
  15797. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15798. },
  15799. '/*hello *': {
  15800. index: 10,
  15801. lineNumber: 1,
  15802. column: 11,
  15803. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15804. },
  15805. '\n]': {
  15806. index: 1,
  15807. lineNumber: 2,
  15808. column: 1,
  15809. message: 'Error: Line 2: Unexpected token ]'
  15810. },
  15811. '\r]': {
  15812. index: 1,
  15813. lineNumber: 2,
  15814. column: 1,
  15815. message: 'Error: Line 2: Unexpected token ]'
  15816. },
  15817. '\r\n]': {
  15818. index: 2,
  15819. lineNumber: 2,
  15820. column: 1,
  15821. message: 'Error: Line 2: Unexpected token ]'
  15822. },
  15823. '\n\r]': {
  15824. index: 2,
  15825. lineNumber: 3,
  15826. column: 1,
  15827. message: 'Error: Line 3: Unexpected token ]'
  15828. },
  15829. '//\r\n]': {
  15830. index: 4,
  15831. lineNumber: 2,
  15832. column: 1,
  15833. message: 'Error: Line 2: Unexpected token ]'
  15834. },
  15835. '//\n\r]': {
  15836. index: 4,
  15837. lineNumber: 3,
  15838. column: 1,
  15839. message: 'Error: Line 3: Unexpected token ]'
  15840. },
  15841. '/a\\\n/': {
  15842. index: 4,
  15843. lineNumber: 1,
  15844. column: 5,
  15845. message: 'Error: Line 1: Invalid regular expression: missing /'
  15846. },
  15847. '//\r \n]': {
  15848. index: 5,
  15849. lineNumber: 3,
  15850. column: 1,
  15851. message: 'Error: Line 3: Unexpected token ]'
  15852. },
  15853. '/*\r\n*/]': {
  15854. index: 6,
  15855. lineNumber: 2,
  15856. column: 3,
  15857. message: 'Error: Line 2: Unexpected token ]'
  15858. },
  15859. '/*\n\r*/]': {
  15860. index: 6,
  15861. lineNumber: 3,
  15862. column: 3,
  15863. message: 'Error: Line 3: Unexpected token ]'
  15864. },
  15865. '/*\r \n*/]': {
  15866. index: 7,
  15867. lineNumber: 3,
  15868. column: 3,
  15869. message: 'Error: Line 3: Unexpected token ]'
  15870. },
  15871. '\\\\': {
  15872. index: 1,
  15873. lineNumber: 1,
  15874. column: 2,
  15875. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15876. },
  15877. '\\u005c': {
  15878. index: 6,
  15879. lineNumber: 1,
  15880. column: 7,
  15881. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15882. },
  15883. '\\x': {
  15884. index: 1,
  15885. lineNumber: 1,
  15886. column: 2,
  15887. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15888. },
  15889. '\\u0000': {
  15890. index: 6,
  15891. lineNumber: 1,
  15892. column: 7,
  15893. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15894. },
  15895. '\u200C = []': {
  15896. index: 0,
  15897. lineNumber: 1,
  15898. column: 1,
  15899. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15900. },
  15901. '\u200D = []': {
  15902. index: 0,
  15903. lineNumber: 1,
  15904. column: 1,
  15905. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15906. },
  15907. '"\\': {
  15908. index: 3,
  15909. lineNumber: 1,
  15910. column: 4,
  15911. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15912. },
  15913. '"\\u': {
  15914. index: 3,
  15915. lineNumber: 1,
  15916. column: 4,
  15917. message: 'Error: Line 1: Unexpected token ILLEGAL'
  15918. },
  15919. 'try { } catch() {}': {
  15920. index: 14,
  15921. lineNumber: 1,
  15922. column: 15,
  15923. message: 'Error: Line 1: Unexpected token )'
  15924. },
  15925. 'return': {
  15926. index: 6,
  15927. lineNumber: 1,
  15928. column: 7,
  15929. message: 'Error: Line 1: Illegal return statement'
  15930. },
  15931. 'break': {
  15932. index: 5,
  15933. lineNumber: 1,
  15934. column: 6,
  15935. message: 'Error: Line 1: Illegal break statement'
  15936. },
  15937. 'continue': {
  15938. index: 8,
  15939. lineNumber: 1,
  15940. column: 9,
  15941. message: 'Error: Line 1: Illegal continue statement'
  15942. },
  15943. 'switch (x) { default: continue; }': {
  15944. index: 31,
  15945. lineNumber: 1,
  15946. column: 32,
  15947. message: 'Error: Line 1: Illegal continue statement'
  15948. },
  15949. 'do { x } *': {
  15950. index: 9,
  15951. lineNumber: 1,
  15952. column: 10,
  15953. message: 'Error: Line 1: Unexpected token *'
  15954. },
  15955. 'while (true) { break x; }': {
  15956. index: 22,
  15957. lineNumber: 1,
  15958. column: 23,
  15959. message: 'Error: Line 1: Undefined label \'x\''
  15960. },
  15961. 'while (true) { continue x; }': {
  15962. index: 25,
  15963. lineNumber: 1,
  15964. column: 26,
  15965. message: 'Error: Line 1: Undefined label \'x\''
  15966. },
  15967. 'x: while (true) { (function () { break x; }); }': {
  15968. index: 40,
  15969. lineNumber: 1,
  15970. column: 41,
  15971. message: 'Error: Line 1: Undefined label \'x\''
  15972. },
  15973. 'x: while (true) { (function () { continue x; }); }': {
  15974. index: 43,
  15975. lineNumber: 1,
  15976. column: 44,
  15977. message: 'Error: Line 1: Undefined label \'x\''
  15978. },
  15979. 'x: while (true) { (function () { break; }); }': {
  15980. index: 39,
  15981. lineNumber: 1,
  15982. column: 40,
  15983. message: 'Error: Line 1: Illegal break statement'
  15984. },
  15985. 'x: while (true) { (function () { continue; }); }': {
  15986. index: 42,
  15987. lineNumber: 1,
  15988. column: 43,
  15989. message: 'Error: Line 1: Illegal continue statement'
  15990. },
  15991. 'x: while (true) { x: while (true) { } }': {
  15992. index: 20,
  15993. lineNumber: 1,
  15994. column: 21,
  15995. message: 'Error: Line 1: Label \'x\' has already been declared'
  15996. },
  15997. '(function () { \'use strict\'; delete i; }())': {
  15998. index: 37,
  15999. lineNumber: 1,
  16000. column: 38,
  16001. message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.'
  16002. },
  16003. '(function () { \'use strict\'; with (i); }())': {
  16004. index: 28,
  16005. lineNumber: 1,
  16006. column: 29,
  16007. message: 'Error: Line 1: Strict mode code may not include a with statement'
  16008. },
  16009. 'function hello() {\'use strict\'; ({ i: 42, i: 42 }) }': {
  16010. index: 47,
  16011. lineNumber: 1,
  16012. column: 48,
  16013. message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
  16014. },
  16015. 'function hello() {\'use strict\'; ({ hasOwnProperty: 42, hasOwnProperty: 42 }) }': {
  16016. index: 73,
  16017. lineNumber: 1,
  16018. column: 74,
  16019. message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
  16020. },
  16021. 'function hello() {\'use strict\'; var eval = 10; }': {
  16022. index: 40,
  16023. lineNumber: 1,
  16024. column: 41,
  16025. message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
  16026. },
  16027. 'function hello() {\'use strict\'; var arguments = 10; }': {
  16028. index: 45,
  16029. lineNumber: 1,
  16030. column: 46,
  16031. message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
  16032. },
  16033. 'function hello() {\'use strict\'; try { } catch (eval) { } }': {
  16034. index: 51,
  16035. lineNumber: 1,
  16036. column: 52,
  16037. message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
  16038. },
  16039. 'function hello() {\'use strict\'; try { } catch (arguments) { } }': {
  16040. index: 56,
  16041. lineNumber: 1,
  16042. column: 57,
  16043. message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
  16044. },
  16045. 'function hello() {\'use strict\'; eval = 10; }': {
  16046. index: 32,
  16047. lineNumber: 1,
  16048. column: 33,
  16049. message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
  16050. },
  16051. 'function hello() {\'use strict\'; arguments = 10; }': {
  16052. index: 32,
  16053. lineNumber: 1,
  16054. column: 33,
  16055. message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
  16056. },
  16057. 'function hello() {\'use strict\'; ++eval; }': {
  16058. index: 38,
  16059. lineNumber: 1,
  16060. column: 39,
  16061. message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
  16062. },
  16063. 'function hello() {\'use strict\'; --eval; }': {
  16064. index: 38,
  16065. lineNumber: 1,
  16066. column: 39,
  16067. message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
  16068. },
  16069. 'function hello() {\'use strict\'; ++arguments; }': {
  16070. index: 43,
  16071. lineNumber: 1,
  16072. column: 44,
  16073. message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
  16074. },
  16075. 'function hello() {\'use strict\'; --arguments; }': {
  16076. index: 43,
  16077. lineNumber: 1,
  16078. column: 44,
  16079. message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
  16080. },
  16081. 'function hello() {\'use strict\'; eval++; }': {
  16082. index: 36,
  16083. lineNumber: 1,
  16084. column: 37,
  16085. message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
  16086. },
  16087. 'function hello() {\'use strict\'; eval--; }': {
  16088. index: 36,
  16089. lineNumber: 1,
  16090. column: 37,
  16091. message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
  16092. },
  16093. 'function hello() {\'use strict\'; arguments++; }': {
  16094. index: 41,
  16095. lineNumber: 1,
  16096. column: 42,
  16097. message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
  16098. },
  16099. 'function hello() {\'use strict\'; arguments--; }': {
  16100. index: 41,
  16101. lineNumber: 1,
  16102. column: 42,
  16103. message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
  16104. },
  16105. 'function hello() {\'use strict\'; function eval() { } }': {
  16106. index: 41,
  16107. lineNumber: 1,
  16108. column: 42,
  16109. message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
  16110. },
  16111. 'function hello() {\'use strict\'; function arguments() { } }': {
  16112. index: 41,
  16113. lineNumber: 1,
  16114. column: 42,
  16115. message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
  16116. },
  16117. 'function eval() {\'use strict\'; }': {
  16118. index: 9,
  16119. lineNumber: 1,
  16120. column: 10,
  16121. message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
  16122. },
  16123. 'function arguments() {\'use strict\'; }': {
  16124. index: 9,
  16125. lineNumber: 1,
  16126. column: 10,
  16127. message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
  16128. },
  16129. 'function hello() {\'use strict\'; (function eval() { }()) }': {
  16130. index: 42,
  16131. lineNumber: 1,
  16132. column: 43,
  16133. message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
  16134. },
  16135. 'function hello() {\'use strict\'; (function arguments() { }()) }': {
  16136. index: 42,
  16137. lineNumber: 1,
  16138. column: 43,
  16139. message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
  16140. },
  16141. '(function eval() {\'use strict\'; })()': {
  16142. index: 10,
  16143. lineNumber: 1,
  16144. column: 11,
  16145. message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
  16146. },
  16147. '(function arguments() {\'use strict\'; })()': {
  16148. index: 10,
  16149. lineNumber: 1,
  16150. column: 11,
  16151. message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
  16152. },
  16153. 'function hello() {\'use strict\'; ({ s: function eval() { } }); }': {
  16154. index: 47,
  16155. lineNumber: 1,
  16156. column: 48,
  16157. message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
  16158. },
  16159. '(function package() {\'use strict\'; })()': {
  16160. index: 10,
  16161. lineNumber: 1,
  16162. column: 11,
  16163. message: 'Error: Line 1: Use of future reserved word in strict mode'
  16164. },
  16165. 'function hello() {\'use strict\'; ({ i: 10, set s(eval) { } }); }': {
  16166. index: 48,
  16167. lineNumber: 1,
  16168. column: 49,
  16169. message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
  16170. },
  16171. 'function hello() {\'use strict\'; ({ set s(eval) { } }); }': {
  16172. index: 41,
  16173. lineNumber: 1,
  16174. column: 42,
  16175. message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
  16176. },
  16177. 'function hello() {\'use strict\'; ({ s: function s(eval) { } }); }': {
  16178. index: 49,
  16179. lineNumber: 1,
  16180. column: 50,
  16181. message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
  16182. },
  16183. 'function hello(eval) {\'use strict\';}': {
  16184. index: 15,
  16185. lineNumber: 1,
  16186. column: 16,
  16187. message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
  16188. },
  16189. 'function hello(arguments) {\'use strict\';}': {
  16190. index: 15,
  16191. lineNumber: 1,
  16192. column: 16,
  16193. message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
  16194. },
  16195. 'function hello() { \'use strict\'; function inner(eval) {} }': {
  16196. index: 48,
  16197. lineNumber: 1,
  16198. column: 49,
  16199. message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
  16200. },
  16201. 'function hello() { \'use strict\'; function inner(arguments) {} }': {
  16202. index: 48,
  16203. lineNumber: 1,
  16204. column: 49,
  16205. message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
  16206. },
  16207. ' "\\1"; \'use strict\';': {
  16208. index: 1,
  16209. lineNumber: 1,
  16210. column: 2,
  16211. message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
  16212. },
  16213. 'function hello() { \'use strict\'; "\\1"; }': {
  16214. index: 33,
  16215. lineNumber: 1,
  16216. column: 34,
  16217. message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
  16218. },
  16219. 'function hello() { \'use strict\'; 021; }': {
  16220. index: 33,
  16221. lineNumber: 1,
  16222. column: 34,
  16223. message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
  16224. },
  16225. 'function hello() { \'use strict\'; ({ "\\1": 42 }); }': {
  16226. index: 36,
  16227. lineNumber: 1,
  16228. column: 37,
  16229. message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
  16230. },
  16231. 'function hello() { \'use strict\'; ({ 021: 42 }); }': {
  16232. index: 36,
  16233. lineNumber: 1,
  16234. column: 37,
  16235. message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
  16236. },
  16237. 'function hello() { "octal directive\\1"; "use strict"; }': {
  16238. index: 19,
  16239. lineNumber: 1,
  16240. column: 20,
  16241. message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
  16242. },
  16243. 'function hello() { "octal directive\\1"; "octal directive\\2"; "use strict"; }': {
  16244. index: 19,
  16245. lineNumber: 1,
  16246. column: 20,
  16247. message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
  16248. },
  16249. 'function hello() { "use strict"; function inner() { "octal directive\\1"; } }': {
  16250. index: 52,
  16251. lineNumber: 1,
  16252. column: 53,
  16253. message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
  16254. },
  16255. 'function hello() { "use strict"; var implements; }': {
  16256. index: 37,
  16257. lineNumber: 1,
  16258. column: 38,
  16259. message: 'Error: Line 1: Use of future reserved word in strict mode'
  16260. },
  16261. 'function hello() { "use strict"; var interface; }': {
  16262. index: 37,
  16263. lineNumber: 1,
  16264. column: 38,
  16265. message: 'Error: Line 1: Use of future reserved word in strict mode'
  16266. },
  16267. 'function hello() { "use strict"; var package; }': {
  16268. index: 37,
  16269. lineNumber: 1,
  16270. column: 38,
  16271. message: 'Error: Line 1: Use of future reserved word in strict mode'
  16272. },
  16273. 'function hello() { "use strict"; var private; }': {
  16274. index: 37,
  16275. lineNumber: 1,
  16276. column: 38,
  16277. message: 'Error: Line 1: Use of future reserved word in strict mode'
  16278. },
  16279. 'function hello() { "use strict"; var protected; }': {
  16280. index: 37,
  16281. lineNumber: 1,
  16282. column: 38,
  16283. message: 'Error: Line 1: Use of future reserved word in strict mode'
  16284. },
  16285. 'function hello() { "use strict"; var public; }': {
  16286. index: 37,
  16287. lineNumber: 1,
  16288. column: 38,
  16289. message: 'Error: Line 1: Use of future reserved word in strict mode'
  16290. },
  16291. 'function hello() { "use strict"; var static; }': {
  16292. index: 37,
  16293. lineNumber: 1,
  16294. column: 38,
  16295. message: 'Error: Line 1: Use of future reserved word in strict mode'
  16296. },
  16297. 'function hello() { "use strict"; var yield; }': {
  16298. index: 37,
  16299. lineNumber: 1,
  16300. column: 38,
  16301. message: 'Error: Line 1: Use of future reserved word in strict mode'
  16302. },
  16303. 'function hello() { "use strict"; var let; }': {
  16304. index: 37,
  16305. lineNumber: 1,
  16306. column: 38,
  16307. message: 'Error: Line 1: Use of future reserved word in strict mode'
  16308. },
  16309. 'function hello(static) { "use strict"; }': {
  16310. index: 15,
  16311. lineNumber: 1,
  16312. column: 16,
  16313. message: 'Error: Line 1: Use of future reserved word in strict mode'
  16314. },
  16315. 'function static() { "use strict"; }': {
  16316. index: 9,
  16317. lineNumber: 1,
  16318. column: 10,
  16319. message: 'Error: Line 1: Use of future reserved word in strict mode'
  16320. },
  16321. 'var yield': {
  16322. index: 4,
  16323. lineNumber: 1,
  16324. column: 5,
  16325. message: 'Error: Line 1: Unexpected token yield'
  16326. },
  16327. 'var let': {
  16328. index: 4,
  16329. lineNumber: 1,
  16330. column: 5,
  16331. message: 'Error: Line 1: Unexpected token let'
  16332. },
  16333. '"use strict"; function static() { }': {
  16334. index: 23,
  16335. lineNumber: 1,
  16336. column: 24,
  16337. message: 'Error: Line 1: Use of future reserved word in strict mode'
  16338. },
  16339. 'function a(t, t) { "use strict"; }': {
  16340. index: 14,
  16341. lineNumber: 1,
  16342. column: 15,
  16343. message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
  16344. },
  16345. 'function a(eval) { "use strict"; }': {
  16346. index: 11,
  16347. lineNumber: 1,
  16348. column: 12,
  16349. message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
  16350. },
  16351. 'function a(package) { "use strict"; }': {
  16352. index: 11,
  16353. lineNumber: 1,
  16354. column: 12,
  16355. message: 'Error: Line 1: Use of future reserved word in strict mode'
  16356. },
  16357. 'function a() { "use strict"; function b(t, t) { }; }': {
  16358. index: 43,
  16359. lineNumber: 1,
  16360. column: 44,
  16361. message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
  16362. },
  16363. '(function a(t, t) { "use strict"; })': {
  16364. index: 15,
  16365. lineNumber: 1,
  16366. column: 16,
  16367. message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
  16368. },
  16369. 'function a() { "use strict"; (function b(t, t) { }); }': {
  16370. index: 44,
  16371. lineNumber: 1,
  16372. column: 45,
  16373. message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
  16374. },
  16375. '(function a(eval) { "use strict"; })': {
  16376. index: 12,
  16377. lineNumber: 1,
  16378. column: 13,
  16379. message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
  16380. },
  16381. '(function a(package) { "use strict"; })': {
  16382. index: 12,
  16383. lineNumber: 1,
  16384. column: 13,
  16385. message: 'Error: Line 1: Use of future reserved word in strict mode'
  16386. },
  16387. 'var': {
  16388. index: 3,
  16389. lineNumber: 1,
  16390. column: 4,
  16391. message: 'Error: Line 1: Unexpected end of input'
  16392. },
  16393. 'let': {
  16394. index: 3,
  16395. lineNumber: 1,
  16396. column: 4,
  16397. message: 'Error: Line 1: Unexpected end of input'
  16398. },
  16399. 'const': {
  16400. index: 5,
  16401. lineNumber: 1,
  16402. column: 6,
  16403. message: 'Error: Line 1: Unexpected end of input'
  16404. }
  16405. },
  16406. 'API': {
  16407. 'parse()': {
  16408. call: 'parse',
  16409. args: [],
  16410. result: {
  16411. type: 'Program',
  16412. body: [{
  16413. type: 'ExpressionStatement',
  16414. expression: {
  16415. type: 'Identifier',
  16416. name: 'undefined'
  16417. }
  16418. }]
  16419. }
  16420. },
  16421. 'parse(null)': {
  16422. call: 'parse',
  16423. args: [null],
  16424. result: {
  16425. type: 'Program',
  16426. body: [{
  16427. type: 'ExpressionStatement',
  16428. expression: {
  16429. type: 'Literal',
  16430. value: null
  16431. }
  16432. }]
  16433. }
  16434. },
  16435. 'parse(42)': {
  16436. call: 'parse',
  16437. args: [42],
  16438. result: {
  16439. type: 'Program',
  16440. body: [{
  16441. type: 'ExpressionStatement',
  16442. expression: {
  16443. type: 'Literal',
  16444. value: 42
  16445. }
  16446. }]
  16447. }
  16448. },
  16449. 'parse(true)': {
  16450. call: 'parse',
  16451. args: [true],
  16452. result: {
  16453. type: 'Program',
  16454. body: [{
  16455. type: 'ExpressionStatement',
  16456. expression: {
  16457. type: 'Literal',
  16458. value: true
  16459. }
  16460. }]
  16461. }
  16462. },
  16463. 'parse(undefined)': {
  16464. call: 'parse',
  16465. args: [void 0],
  16466. result: {
  16467. type: 'Program',
  16468. body: [{
  16469. type: 'ExpressionStatement',
  16470. expression: {
  16471. type: 'Identifier',
  16472. name: 'undefined'
  16473. }
  16474. }]
  16475. }
  16476. },
  16477. 'parse(new String("test"))': {
  16478. call: 'parse',
  16479. args: [new String('test')],
  16480. result: {
  16481. type: 'Program',
  16482. body: [{
  16483. type: 'ExpressionStatement',
  16484. expression: {
  16485. type: 'Identifier',
  16486. name: 'test'
  16487. }
  16488. }]
  16489. }
  16490. },
  16491. 'parse(new Number(42))': {
  16492. call: 'parse',
  16493. args: [new Number(42)],
  16494. result: {
  16495. type: 'Program',
  16496. body: [{
  16497. type: 'ExpressionStatement',
  16498. expression: {
  16499. type: 'Literal',
  16500. value: 42
  16501. }
  16502. }]
  16503. }
  16504. },
  16505. 'parse(new Boolean(true))': {
  16506. call: 'parse',
  16507. args: [new Boolean(true)],
  16508. result: {
  16509. type: 'Program',
  16510. body: [{
  16511. type: 'ExpressionStatement',
  16512. expression: {
  16513. type: 'Literal',
  16514. value: true
  16515. }
  16516. }]
  16517. }
  16518. },
  16519. 'Syntax': {
  16520. property: 'Syntax',
  16521. result: {
  16522. AssignmentExpression: 'AssignmentExpression',
  16523. ArrayExpression: 'ArrayExpression',
  16524. BlockStatement: 'BlockStatement',
  16525. BinaryExpression: 'BinaryExpression',
  16526. BreakStatement: 'BreakStatement',
  16527. CallExpression: 'CallExpression',
  16528. CatchClause: 'CatchClause',
  16529. ConditionalExpression: 'ConditionalExpression',
  16530. ContinueStatement: 'ContinueStatement',
  16531. DoWhileStatement: 'DoWhileStatement',
  16532. DebuggerStatement: 'DebuggerStatement',
  16533. EmptyStatement: 'EmptyStatement',
  16534. ExpressionStatement: 'ExpressionStatement',
  16535. ForStatement: 'ForStatement',
  16536. ForInStatement: 'ForInStatement',
  16537. FunctionDeclaration: 'FunctionDeclaration',
  16538. FunctionExpression: 'FunctionExpression',
  16539. Identifier: 'Identifier',
  16540. IfStatement: 'IfStatement',
  16541. Literal: 'Literal',
  16542. LabeledStatement: 'LabeledStatement',
  16543. LogicalExpression: 'LogicalExpression',
  16544. MemberExpression: 'MemberExpression',
  16545. NewExpression: 'NewExpression',
  16546. ObjectExpression: 'ObjectExpression',
  16547. Program: 'Program',
  16548. Property: 'Property',
  16549. ReturnStatement: 'ReturnStatement',
  16550. SequenceExpression: 'SequenceExpression',
  16551. SwitchStatement: 'SwitchStatement',
  16552. SwitchCase: 'SwitchCase',
  16553. ThisExpression: 'ThisExpression',
  16554. ThrowStatement: 'ThrowStatement',
  16555. TryStatement: 'TryStatement',
  16556. UnaryExpression: 'UnaryExpression',
  16557. UpdateExpression: 'UpdateExpression',
  16558. VariableDeclaration: 'VariableDeclaration',
  16559. VariableDeclarator: 'VariableDeclarator',
  16560. WhileStatement: 'WhileStatement',
  16561. WithStatement: 'WithStatement'
  16562. }
  16563. }
  16564. },
  16565. 'Tolerant parse': {
  16566. 'return': {
  16567. type: 'Program',
  16568. body: [{
  16569. type: 'ReturnStatement',
  16570. 'argument': null,
  16571. range: [0, 6],
  16572. loc: {
  16573. start: { line: 1, column: 0 },
  16574. end: { line: 1, column: 6 }
  16575. }
  16576. }],
  16577. range: [0, 6],
  16578. loc: {
  16579. start: { line: 1, column: 0 },
  16580. end: { line: 1, column: 6 }
  16581. },
  16582. errors: [{
  16583. index: 6,
  16584. lineNumber: 1,
  16585. column: 7,
  16586. message: 'Error: Line 1: Illegal return statement'
  16587. }]
  16588. },
  16589. '(function () { \'use strict\'; with (i); }())': {
  16590. type: 'Program',
  16591. body: [{
  16592. type: 'ExpressionStatement',
  16593. expression: {
  16594. type: 'CallExpression',
  16595. callee: {
  16596. type: 'FunctionExpression',
  16597. id: null,
  16598. params: [],
  16599. defaults: [],
  16600. body: {
  16601. type: 'BlockStatement',
  16602. body: [{
  16603. type: 'ExpressionStatement',
  16604. expression: {
  16605. type: 'Literal',
  16606. value: 'use strict',
  16607. raw: '\'use strict\'',
  16608. range: [15, 27],
  16609. loc: {
  16610. start: { line: 1, column: 15 },
  16611. end: { line: 1, column: 27 }
  16612. }
  16613. },
  16614. range: [15, 28],
  16615. loc: {
  16616. start: { line: 1, column: 15 },
  16617. end: { line: 1, column: 28 }
  16618. }
  16619. }, {
  16620. type: 'WithStatement',
  16621. object: {
  16622. type: 'Identifier',
  16623. name: 'i',
  16624. range: [35, 36],
  16625. loc: {
  16626. start: { line: 1, column: 35 },
  16627. end: { line: 1, column: 36 }
  16628. }
  16629. },
  16630. body: {
  16631. type: 'EmptyStatement',
  16632. range: [37, 38],
  16633. loc: {
  16634. start: { line: 1, column: 37 },
  16635. end: { line: 1, column: 38 }
  16636. }
  16637. },
  16638. range: [29, 38],
  16639. loc: {
  16640. start: { line: 1, column: 29 },
  16641. end: { line: 1, column: 38 }
  16642. }
  16643. }],
  16644. range: [13, 40],
  16645. loc: {
  16646. start: { line: 1, column: 13 },
  16647. end: { line: 1, column: 40 }
  16648. }
  16649. },
  16650. rest: null,
  16651. generator: false,
  16652. expression: false,
  16653. range: [1, 40],
  16654. loc: {
  16655. start: { line: 1, column: 1 },
  16656. end: { line: 1, column: 40 }
  16657. }
  16658. },
  16659. 'arguments': [],
  16660. range: [1, 42],
  16661. loc: {
  16662. start: { line: 1, column: 1 },
  16663. end: { line: 1, column: 42 }
  16664. }
  16665. },
  16666. range: [0, 43],
  16667. loc: {
  16668. start: { line: 1, column: 0 },
  16669. end: { line: 1, column: 43 }
  16670. }
  16671. }],
  16672. range: [0, 43],
  16673. loc: {
  16674. start: { line: 1, column: 0 },
  16675. end: { line: 1, column: 43 }
  16676. },
  16677. errors: [{
  16678. index: 29,
  16679. lineNumber: 1,
  16680. column: 30,
  16681. message: 'Error: Line 1: Strict mode code may not include a with statement'
  16682. }]
  16683. },
  16684. '(function () { \'use strict\'; 021 }())': {
  16685. type: 'Program',
  16686. body: [{
  16687. type: 'ExpressionStatement',
  16688. expression: {
  16689. type: 'CallExpression',
  16690. callee: {
  16691. type: 'FunctionExpression',
  16692. id: null,
  16693. params: [],
  16694. defaults: [],
  16695. body: {
  16696. type: 'BlockStatement',
  16697. body: [{
  16698. type: 'ExpressionStatement',
  16699. expression: {
  16700. type: 'Literal',
  16701. value: 'use strict',
  16702. raw: '\'use strict\'',
  16703. range: [15, 27],
  16704. loc: {
  16705. start: { line: 1, column: 15 },
  16706. end: { line: 1, column: 27 }
  16707. }
  16708. },
  16709. range: [15, 28],
  16710. loc: {
  16711. start: { line: 1, column: 15 },
  16712. end: { line: 1, column: 28 }
  16713. }
  16714. }, {
  16715. type: 'ExpressionStatement',
  16716. expression: {
  16717. type: 'Literal',
  16718. value: 17,
  16719. raw: "021",
  16720. range: [29, 32],
  16721. loc: {
  16722. start: { line: 1, column: 29 },
  16723. end: { line: 1, column: 32 }
  16724. }
  16725. },
  16726. range: [29, 33],
  16727. loc: {
  16728. start: { line: 1, column: 29 },
  16729. end: { line: 1, column: 33 }
  16730. }
  16731. }],
  16732. range: [13, 34],
  16733. loc: {
  16734. start: { line: 1, column: 13 },
  16735. end: { line: 1, column: 34 }
  16736. }
  16737. },
  16738. rest: null,
  16739. generator: false,
  16740. expression: false,
  16741. range: [1, 34],
  16742. loc: {
  16743. start: { line: 1, column: 1 },
  16744. end: { line: 1, column: 34 }
  16745. }
  16746. },
  16747. 'arguments': [],
  16748. range: [1, 36],
  16749. loc: {
  16750. start: { line: 1, column: 1 },
  16751. end: { line: 1, column: 36 }
  16752. }
  16753. },
  16754. range: [0, 37],
  16755. loc: {
  16756. start: { line: 1, column: 0 },
  16757. end: { line: 1, column: 37 }
  16758. }
  16759. }],
  16760. range: [0, 37],
  16761. loc: {
  16762. start: { line: 1, column: 0 },
  16763. end: { line: 1, column: 37 }
  16764. },
  16765. errors: [{
  16766. index: 29,
  16767. lineNumber: 1,
  16768. column: 30,
  16769. message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
  16770. }]
  16771. },
  16772. '"use strict"; delete x': {
  16773. type: 'Program',
  16774. body: [{
  16775. type: 'ExpressionStatement',
  16776. expression: {
  16777. type: 'Literal',
  16778. value: 'use strict',
  16779. raw: '"use strict"',
  16780. range: [0, 12],
  16781. loc: {
  16782. start: { line: 1, column: 0 },
  16783. end: { line: 1, column: 12 }
  16784. }
  16785. },
  16786. range: [0, 13],
  16787. loc: {
  16788. start: { line: 1, column: 0 },
  16789. end: { line: 1, column: 13 }
  16790. }
  16791. }, {
  16792. type: 'ExpressionStatement',
  16793. expression: {
  16794. type: 'UnaryExpression',
  16795. operator: 'delete',
  16796. argument: {
  16797. type: 'Identifier',
  16798. name: 'x',
  16799. range: [21, 22],
  16800. loc: {
  16801. start: { line: 1, column: 21 },
  16802. end: { line: 1, column: 22 }
  16803. }
  16804. },
  16805. prefix: true,
  16806. range: [14, 22],
  16807. loc: {
  16808. start: { line: 1, column: 14 },
  16809. end: { line: 1, column: 22 }
  16810. }
  16811. },
  16812. range: [14, 22],
  16813. loc: {
  16814. start: { line: 1, column: 14 },
  16815. end: { line: 1, column: 22 }
  16816. }
  16817. }],
  16818. range: [0, 22],
  16819. loc: {
  16820. start: { line: 1, column: 0 },
  16821. end: { line: 1, column: 22 }
  16822. },
  16823. errors: [{
  16824. index: 22,
  16825. lineNumber: 1,
  16826. column: 23,
  16827. message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.'
  16828. }]
  16829. },
  16830. '"use strict"; try {} catch (eval) {}': {
  16831. type: 'Program',
  16832. body: [{
  16833. type: 'ExpressionStatement',
  16834. expression: {
  16835. type: 'Literal',
  16836. value: 'use strict',
  16837. raw: '"use strict"',
  16838. range: [0, 12],
  16839. loc: {
  16840. start: { line: 1, column: 0 },
  16841. end: { line: 1, column: 12 }
  16842. }
  16843. },
  16844. range: [0, 13],
  16845. loc: {
  16846. start: { line: 1, column: 0 },
  16847. end: { line: 1, column: 13 }
  16848. }
  16849. }, {
  16850. type: 'TryStatement',
  16851. block: {
  16852. type: 'BlockStatement',
  16853. body: [],
  16854. range: [18, 20],
  16855. loc: {
  16856. start: { line: 1, column: 18 },
  16857. end: { line: 1, column: 20 }
  16858. }
  16859. },
  16860. guardedHandlers: [],
  16861. handlers: [{
  16862. type: 'CatchClause',
  16863. param: {
  16864. type: 'Identifier',
  16865. name: 'eval',
  16866. range: [28, 32],
  16867. loc: {
  16868. start: { line: 1, column: 28 },
  16869. end: { line: 1, column: 32 }
  16870. }
  16871. },
  16872. body: {
  16873. type: 'BlockStatement',
  16874. body: [],
  16875. range: [34, 36],
  16876. loc: {
  16877. start: { line: 1, column: 34 },
  16878. end: { line: 1, column: 36 }
  16879. }
  16880. },
  16881. range: [21, 36],
  16882. loc: {
  16883. start: { line: 1, column: 21 },
  16884. end: { line: 1, column: 36 }
  16885. }
  16886. }],
  16887. finalizer: null,
  16888. range: [14, 36],
  16889. loc: {
  16890. start: { line: 1, column: 14 },
  16891. end: { line: 1, column: 36 }
  16892. }
  16893. }],
  16894. range: [0, 36],
  16895. loc: {
  16896. start: { line: 1, column: 0 },
  16897. end: { line: 1, column: 36 }
  16898. },
  16899. errors: [{
  16900. index: 32,
  16901. lineNumber: 1,
  16902. column: 33,
  16903. message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
  16904. }]
  16905. },
  16906. '"use strict"; try {} catch (arguments) {}': {
  16907. type: 'Program',
  16908. body: [{
  16909. type: 'ExpressionStatement',
  16910. expression: {
  16911. type: 'Literal',
  16912. value: 'use strict',
  16913. raw: '"use strict"',
  16914. range: [0, 12],
  16915. loc: {
  16916. start: { line: 1, column: 0 },
  16917. end: { line: 1, column: 12 }
  16918. }
  16919. },
  16920. range: [0, 13],
  16921. loc: {
  16922. start: { line: 1, column: 0 },
  16923. end: { line: 1, column: 13 }
  16924. }
  16925. }, {
  16926. type: 'TryStatement',
  16927. block: {
  16928. type: 'BlockStatement',
  16929. body: [],
  16930. range: [18, 20],
  16931. loc: {
  16932. start: { line: 1, column: 18 },
  16933. end: { line: 1, column: 20 }
  16934. }
  16935. },
  16936. guardedHandlers: [],
  16937. handlers: [{
  16938. type: 'CatchClause',
  16939. param: {
  16940. type: 'Identifier',
  16941. name: 'arguments',
  16942. range: [28, 37],
  16943. loc: {
  16944. start: { line: 1, column: 28 },
  16945. end: { line: 1, column: 37 }
  16946. }
  16947. },
  16948. body: {
  16949. type: 'BlockStatement',
  16950. body: [],
  16951. range: [39, 41],
  16952. loc: {
  16953. start: { line: 1, column: 39 },
  16954. end: { line: 1, column: 41 }
  16955. }
  16956. },
  16957. range: [21, 41],
  16958. loc: {
  16959. start: { line: 1, column: 21 },
  16960. end: { line: 1, column: 41 }
  16961. }
  16962. }],
  16963. finalizer: null,
  16964. range: [14, 41],
  16965. loc: {
  16966. start: { line: 1, column: 14 },
  16967. end: { line: 1, column: 41 }
  16968. }
  16969. }],
  16970. range: [0, 41],
  16971. loc: {
  16972. start: { line: 1, column: 0 },
  16973. end: { line: 1, column: 41 }
  16974. },
  16975. errors: [{
  16976. index: 37,
  16977. lineNumber: 1,
  16978. column: 38,
  16979. message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
  16980. }]
  16981. },
  16982. '"use strict"; var eval;': {
  16983. type: 'Program',
  16984. body: [{
  16985. type: 'ExpressionStatement',
  16986. expression: {
  16987. type: 'Literal',
  16988. value: 'use strict',
  16989. raw: '"use strict"',
  16990. range: [0, 12],
  16991. loc: {
  16992. start: { line: 1, column: 0 },
  16993. end: { line: 1, column: 12 }
  16994. }
  16995. },
  16996. range: [0, 13],
  16997. loc: {
  16998. start: { line: 1, column: 0 },
  16999. end: { line: 1, column: 13 }
  17000. }
  17001. }, {
  17002. type: 'VariableDeclaration',
  17003. declarations: [{
  17004. type: 'VariableDeclarator',
  17005. id: {
  17006. type: 'Identifier',
  17007. name: 'eval',
  17008. range: [18, 22],
  17009. loc: {
  17010. start: { line: 1, column: 18 },
  17011. end: { line: 1, column: 22 }
  17012. }
  17013. },
  17014. init: null,
  17015. range: [18, 22],
  17016. loc: {
  17017. start: { line: 1, column: 18 },
  17018. end: { line: 1, column: 22 }
  17019. }
  17020. }],
  17021. kind: 'var',
  17022. range: [14, 23],
  17023. loc: {
  17024. start: { line: 1, column: 14 },
  17025. end: { line: 1, column: 23 }
  17026. }
  17027. }],
  17028. range: [0, 23],
  17029. loc: {
  17030. start: { line: 1, column: 0 },
  17031. end: { line: 1, column: 23 }
  17032. },
  17033. errors: [{
  17034. index: 22,
  17035. lineNumber: 1,
  17036. column: 23,
  17037. message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
  17038. }]
  17039. },
  17040. '"use strict"; var arguments;': {
  17041. type: 'Program',
  17042. body: [{
  17043. type: 'ExpressionStatement',
  17044. expression: {
  17045. type: 'Literal',
  17046. value: 'use strict',
  17047. raw: '"use strict"',
  17048. range: [0, 12],
  17049. loc: {
  17050. start: { line: 1, column: 0 },
  17051. end: { line: 1, column: 12 }
  17052. }
  17053. },
  17054. range: [0, 13],
  17055. loc: {
  17056. start: { line: 1, column: 0 },
  17057. end: { line: 1, column: 13 }
  17058. }
  17059. }, {
  17060. type: 'VariableDeclaration',
  17061. declarations: [{
  17062. type: 'VariableDeclarator',
  17063. id: {
  17064. type: 'Identifier',
  17065. name: 'arguments',
  17066. range: [18, 27],
  17067. loc: {
  17068. start: { line: 1, column: 18 },
  17069. end: { line: 1, column: 27 }
  17070. }
  17071. },
  17072. init: null,
  17073. range: [18, 27],
  17074. loc: {
  17075. start: { line: 1, column: 18 },
  17076. end: { line: 1, column: 27 }
  17077. }
  17078. }],
  17079. kind: 'var',
  17080. range: [14, 28],
  17081. loc: {
  17082. start: { line: 1, column: 14 },
  17083. end: { line: 1, column: 28 }
  17084. }
  17085. }],
  17086. range: [0, 28],
  17087. loc: {
  17088. start: { line: 1, column: 0 },
  17089. end: { line: 1, column: 28 }
  17090. },
  17091. errors: [{
  17092. index: 27,
  17093. lineNumber: 1,
  17094. column: 28,
  17095. message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
  17096. }]
  17097. },
  17098. '"use strict"; eval = 0;': {
  17099. type: 'Program',
  17100. body: [{
  17101. type: 'ExpressionStatement',
  17102. expression: {
  17103. type: 'Literal',
  17104. value: 'use strict',
  17105. raw: '"use strict"',
  17106. range: [0, 12],
  17107. loc: {
  17108. start: { line: 1, column: 0 },
  17109. end: { line: 1, column: 12 }
  17110. }
  17111. },
  17112. range: [0, 13],
  17113. loc: {
  17114. start: { line: 1, column: 0 },
  17115. end: { line: 1, column: 13 }
  17116. }
  17117. }, {
  17118. type: 'ExpressionStatement',
  17119. expression: {
  17120. type: 'AssignmentExpression',
  17121. operator: '=',
  17122. left: {
  17123. type: 'Identifier',
  17124. name: 'eval',
  17125. range: [14, 18],
  17126. loc: {
  17127. start: { line: 1, column: 14 },
  17128. end: { line: 1, column: 18 }
  17129. }
  17130. },
  17131. right: {
  17132. type: 'Literal',
  17133. value: 0,
  17134. raw: '0',
  17135. range: [21, 22],
  17136. loc: {
  17137. start: { line: 1, column: 21 },
  17138. end: { line: 1, column: 22 }
  17139. }
  17140. },
  17141. range: [14, 22],
  17142. loc: {
  17143. start: { line: 1, column: 14 },
  17144. end: { line: 1, column: 22 }
  17145. }
  17146. },
  17147. range: [14, 23],
  17148. loc: {
  17149. start: { line: 1, column: 14 },
  17150. end: { line: 1, column: 23 }
  17151. }
  17152. }],
  17153. range: [0, 23],
  17154. loc: {
  17155. start: { line: 1, column: 0 },
  17156. end: { line: 1, column: 23 }
  17157. },
  17158. errors: [{
  17159. index: 14,
  17160. lineNumber: 1,
  17161. column: 15,
  17162. message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
  17163. }]
  17164. },
  17165. '"use strict"; eval++;': {
  17166. type: 'Program',
  17167. body: [{
  17168. type: 'ExpressionStatement',
  17169. expression: {
  17170. type: 'Literal',
  17171. value: 'use strict',
  17172. raw: '"use strict"',
  17173. range: [0, 12],
  17174. loc: {
  17175. start: { line: 1, column: 0 },
  17176. end: { line: 1, column: 12 }
  17177. }
  17178. },
  17179. range: [0, 13],
  17180. loc: {
  17181. start: { line: 1, column: 0 },
  17182. end: { line: 1, column: 13 }
  17183. }
  17184. }, {
  17185. type: 'ExpressionStatement',
  17186. expression: {
  17187. type: 'UpdateExpression',
  17188. operator: '++',
  17189. argument: {
  17190. type: 'Identifier',
  17191. name: 'eval',
  17192. range: [14, 18],
  17193. loc: {
  17194. start: { line: 1, column: 14 },
  17195. end: { line: 1, column: 18 }
  17196. }
  17197. },
  17198. prefix: false,
  17199. range: [14, 20],
  17200. loc: {
  17201. start: { line: 1, column: 14 },
  17202. end: { line: 1, column: 20 }
  17203. }
  17204. },
  17205. range: [14, 21],
  17206. loc: {
  17207. start: { line: 1, column: 14 },
  17208. end: { line: 1, column: 21 }
  17209. }
  17210. }],
  17211. range: [0, 21],
  17212. loc: {
  17213. start: { line: 1, column: 0 },
  17214. end: { line: 1, column: 21 }
  17215. },
  17216. errors: [{
  17217. index: 18,
  17218. lineNumber: 1,
  17219. column: 19,
  17220. message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
  17221. }]
  17222. },
  17223. '"use strict"; --eval;': {
  17224. type: 'Program',
  17225. body: [{
  17226. type: 'ExpressionStatement',
  17227. expression: {
  17228. type: 'Literal',
  17229. value: 'use strict',
  17230. raw: '"use strict"',
  17231. range: [0, 12],
  17232. loc: {
  17233. start: { line: 1, column: 0 },
  17234. end: { line: 1, column: 12 }
  17235. }
  17236. },
  17237. range: [0, 13],
  17238. loc: {
  17239. start: { line: 1, column: 0 },
  17240. end: { line: 1, column: 13 }
  17241. }
  17242. }, {
  17243. type: 'ExpressionStatement',
  17244. expression: {
  17245. type: 'UpdateExpression',
  17246. operator: '--',
  17247. argument: {
  17248. type: 'Identifier',
  17249. name: 'eval',
  17250. range: [16, 20],
  17251. loc: {
  17252. start: { line: 1, column: 16 },
  17253. end: { line: 1, column: 20 }
  17254. }
  17255. },
  17256. prefix: true,
  17257. range: [14, 20],
  17258. loc: {
  17259. start: { line: 1, column: 14 },
  17260. end: { line: 1, column: 20 }
  17261. }
  17262. },
  17263. range: [14, 21],
  17264. loc: {
  17265. start: { line: 1, column: 14 },
  17266. end: { line: 1, column: 21 }
  17267. }
  17268. }],
  17269. range: [0, 21],
  17270. loc: {
  17271. start: { line: 1, column: 0 },
  17272. end: { line: 1, column: 21 }
  17273. },
  17274. errors: [{
  17275. index: 20,
  17276. lineNumber: 1,
  17277. column: 21,
  17278. message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
  17279. }]
  17280. },
  17281. '"use strict"; arguments = 0;': {
  17282. type: 'Program',
  17283. body: [{
  17284. type: 'ExpressionStatement',
  17285. expression: {
  17286. type: 'Literal',
  17287. value: 'use strict',
  17288. raw: '"use strict"',
  17289. range: [0, 12],
  17290. loc: {
  17291. start: { line: 1, column: 0 },
  17292. end: { line: 1, column: 12 }
  17293. }
  17294. },
  17295. range: [0, 13],
  17296. loc: {
  17297. start: { line: 1, column: 0 },
  17298. end: { line: 1, column: 13 }
  17299. }
  17300. }, {
  17301. type: 'ExpressionStatement',
  17302. expression: {
  17303. type: 'AssignmentExpression',
  17304. operator: '=',
  17305. left: {
  17306. type: 'Identifier',
  17307. name: 'arguments',
  17308. range: [14, 23],
  17309. loc: {
  17310. start: { line: 1, column: 14 },
  17311. end: { line: 1, column: 23 }
  17312. }
  17313. },
  17314. right: {
  17315. type: 'Literal',
  17316. value: 0,
  17317. raw: '0',
  17318. range: [26, 27],
  17319. loc: {
  17320. start: { line: 1, column: 26 },
  17321. end: { line: 1, column: 27 }
  17322. }
  17323. },
  17324. range: [14, 27],
  17325. loc: {
  17326. start: { line: 1, column: 14 },
  17327. end: { line: 1, column: 27 }
  17328. }
  17329. },
  17330. range: [14, 28],
  17331. loc: {
  17332. start: { line: 1, column: 14 },
  17333. end: { line: 1, column: 28 }
  17334. }
  17335. }],
  17336. range: [0, 28],
  17337. loc: {
  17338. start: { line: 1, column: 0 },
  17339. end: { line: 1, column: 28 }
  17340. },
  17341. errors: [{
  17342. index: 14,
  17343. lineNumber: 1,
  17344. column: 15,
  17345. message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
  17346. }]
  17347. },
  17348. '"use strict"; arguments--;': {
  17349. type: 'Program',
  17350. body: [{
  17351. type: 'ExpressionStatement',
  17352. expression: {
  17353. type: 'Literal',
  17354. value: 'use strict',
  17355. raw: '"use strict"',
  17356. range: [0, 12],
  17357. loc: {
  17358. start: { line: 1, column: 0 },
  17359. end: { line: 1, column: 12 }
  17360. }
  17361. },
  17362. range: [0, 13],
  17363. loc: {
  17364. start: { line: 1, column: 0 },
  17365. end: { line: 1, column: 13 }
  17366. }
  17367. }, {
  17368. type: 'ExpressionStatement',
  17369. expression: {
  17370. type: 'UpdateExpression',
  17371. operator: '--',
  17372. argument: {
  17373. type: 'Identifier',
  17374. name: 'arguments',
  17375. range: [14, 23],
  17376. loc: {
  17377. start: { line: 1, column: 14 },
  17378. end: { line: 1, column: 23 }
  17379. }
  17380. },
  17381. prefix: false,
  17382. range: [14, 25],
  17383. loc: {
  17384. start: { line: 1, column: 14 },
  17385. end: { line: 1, column: 25 }
  17386. }
  17387. },
  17388. range: [14, 26],
  17389. loc: {
  17390. start: { line: 1, column: 14 },
  17391. end: { line: 1, column: 26 }
  17392. }
  17393. }],
  17394. range: [0, 26],
  17395. loc: {
  17396. start: { line: 1, column: 0 },
  17397. end: { line: 1, column: 26 }
  17398. },
  17399. errors: [{
  17400. index: 23,
  17401. lineNumber: 1,
  17402. column: 24,
  17403. message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
  17404. }]
  17405. },
  17406. '"use strict"; ++arguments;': {
  17407. type: 'Program',
  17408. body: [{
  17409. type: 'ExpressionStatement',
  17410. expression: {
  17411. type: 'Literal',
  17412. value: 'use strict',
  17413. raw: '"use strict"',
  17414. range: [0, 12],
  17415. loc: {
  17416. start: { line: 1, column: 0 },
  17417. end: { line: 1, column: 12 }
  17418. }
  17419. },
  17420. range: [0, 13],
  17421. loc: {
  17422. start: { line: 1, column: 0 },
  17423. end: { line: 1, column: 13 }
  17424. }
  17425. }, {
  17426. type: 'ExpressionStatement',
  17427. expression: {
  17428. type: 'UpdateExpression',
  17429. operator: '++',
  17430. argument: {
  17431. type: 'Identifier',
  17432. name: 'arguments',
  17433. range: [16, 25],
  17434. loc: {
  17435. start: { line: 1, column: 16 },
  17436. end: { line: 1, column: 25 }
  17437. }
  17438. },
  17439. prefix: true,
  17440. range: [14, 25],
  17441. loc: {
  17442. start: { line: 1, column: 14 },
  17443. end: { line: 1, column: 25 }
  17444. }
  17445. },
  17446. range: [14, 26],
  17447. loc: {
  17448. start: { line: 1, column: 14 },
  17449. end: { line: 1, column: 26 }
  17450. }
  17451. }],
  17452. range: [0, 26],
  17453. loc: {
  17454. start: { line: 1, column: 0 },
  17455. end: { line: 1, column: 26 }
  17456. },
  17457. errors: [{
  17458. index: 25,
  17459. lineNumber: 1,
  17460. column: 26,
  17461. message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
  17462. }]
  17463. },
  17464. '"use strict";x={y:1,y:1}': {
  17465. type: 'Program',
  17466. body: [{
  17467. type: 'ExpressionStatement',
  17468. expression: {
  17469. type: 'Literal',
  17470. value: 'use strict',
  17471. raw: '"use strict"',
  17472. range: [0, 12],
  17473. loc: {
  17474. start: { line: 1, column: 0 },
  17475. end: { line: 1, column: 12 }
  17476. }
  17477. },
  17478. range: [0, 13],
  17479. loc: {
  17480. start: { line: 1, column: 0 },
  17481. end: { line: 1, column: 13 }
  17482. }
  17483. }, {
  17484. type: 'ExpressionStatement',
  17485. expression: {
  17486. type: 'AssignmentExpression',
  17487. operator: '=',
  17488. left: {
  17489. type: 'Identifier',
  17490. name: 'x',
  17491. range: [13, 14],
  17492. loc: {
  17493. start: { line: 1, column: 13 },
  17494. end: { line: 1, column: 14 }
  17495. }
  17496. },
  17497. right: {
  17498. type: 'ObjectExpression',
  17499. properties: [{
  17500. type: 'Property',
  17501. key: {
  17502. type: 'Identifier',
  17503. name: 'y',
  17504. range: [16, 17],
  17505. loc: {
  17506. start: { line: 1, column: 16 },
  17507. end: { line: 1, column: 17 }
  17508. }
  17509. },
  17510. value: {
  17511. type: 'Literal',
  17512. value: 1,
  17513. raw: '1',
  17514. range: [18, 19],
  17515. loc: {
  17516. start: { line: 1, column: 18 },
  17517. end: { line: 1, column: 19 }
  17518. }
  17519. },
  17520. kind: 'init',
  17521. range: [16, 19],
  17522. loc: {
  17523. start: { line: 1, column: 16 },
  17524. end: { line: 1, column: 19 }
  17525. }
  17526. }, {
  17527. type: 'Property',
  17528. key: {
  17529. type: 'Identifier',
  17530. name: 'y',
  17531. range: [20, 21],
  17532. loc: {
  17533. start: { line: 1, column: 20 },
  17534. end: { line: 1, column: 21 }
  17535. }
  17536. },
  17537. value: {
  17538. type: 'Literal',
  17539. value: 1,
  17540. raw: '1',
  17541. range: [22, 23],
  17542. loc: {
  17543. start: { line: 1, column: 22 },
  17544. end: { line: 1, column: 23 }
  17545. }
  17546. },
  17547. kind: 'init',
  17548. range: [20, 23],
  17549. loc: {
  17550. start: { line: 1, column: 20 },
  17551. end: { line: 1, column: 23 }
  17552. }
  17553. }],
  17554. range: [15, 24],
  17555. loc: {
  17556. start: { line: 1, column: 15 },
  17557. end: { line: 1, column: 24 }
  17558. }
  17559. },
  17560. range: [13, 24],
  17561. loc: {
  17562. start: { line: 1, column: 13 },
  17563. end: { line: 1, column: 24 }
  17564. }
  17565. },
  17566. range: [13, 24],
  17567. loc: {
  17568. start: { line: 1, column: 13 },
  17569. end: { line: 1, column: 24 }
  17570. }
  17571. }],
  17572. range: [0, 24],
  17573. loc: {
  17574. start: { line: 1, column: 0 },
  17575. end: { line: 1, column: 24 }
  17576. },
  17577. errors: [{
  17578. index: 23,
  17579. lineNumber: 1,
  17580. column: 24,
  17581. message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
  17582. }]
  17583. },
  17584. '"use strict"; function eval() {};': {
  17585. type: 'Program',
  17586. body: [{
  17587. type: 'ExpressionStatement',
  17588. expression: {
  17589. type: 'Literal',
  17590. value: 'use strict',
  17591. raw: '"use strict"',
  17592. range: [0, 12],
  17593. loc: {
  17594. start: { line: 1, column: 0 },
  17595. end: { line: 1, column: 12 }
  17596. }
  17597. },
  17598. range: [0, 13],
  17599. loc: {
  17600. start: { line: 1, column: 0 },
  17601. end: { line: 1, column: 13 }
  17602. }
  17603. }, {
  17604. type: 'FunctionDeclaration',
  17605. id: {
  17606. type: 'Identifier',
  17607. name: 'eval',
  17608. range: [23, 27],
  17609. loc: {
  17610. start: { line: 1, column: 23 },
  17611. end: { line: 1, column: 27 }
  17612. }
  17613. },
  17614. params: [],
  17615. defaults: [],
  17616. body: {
  17617. type: 'BlockStatement',
  17618. body: [],
  17619. range: [30, 32],
  17620. loc: {
  17621. start: { line: 1, column: 30 },
  17622. end: { line: 1, column: 32 }
  17623. }
  17624. },
  17625. rest: null,
  17626. generator: false,
  17627. expression: false,
  17628. range: [14, 32],
  17629. loc: {
  17630. start: { line: 1, column: 14 },
  17631. end: { line: 1, column: 32 }
  17632. }
  17633. }, {
  17634. type: 'EmptyStatement',
  17635. range: [32, 33],
  17636. loc: {
  17637. start: { line: 1, column: 32 },
  17638. end: { line: 1, column: 33 }
  17639. }
  17640. }],
  17641. range: [0, 33],
  17642. loc: {
  17643. start: { line: 1, column: 0 },
  17644. end: { line: 1, column: 33 }
  17645. },
  17646. errors: [{
  17647. index: 23,
  17648. lineNumber: 1,
  17649. column: 24,
  17650. message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
  17651. }]
  17652. },
  17653. '"use strict"; function arguments() {};': {
  17654. type: 'Program',
  17655. body: [{
  17656. type: 'ExpressionStatement',
  17657. expression: {
  17658. type: 'Literal',
  17659. value: 'use strict',
  17660. raw: '"use strict"',
  17661. range: [0, 12],
  17662. loc: {
  17663. start: { line: 1, column: 0 },
  17664. end: { line: 1, column: 12 }
  17665. }
  17666. },
  17667. range: [0, 13],
  17668. loc: {
  17669. start: { line: 1, column: 0 },
  17670. end: { line: 1, column: 13 }
  17671. }
  17672. }, {
  17673. type: 'FunctionDeclaration',
  17674. id: {
  17675. type: 'Identifier',
  17676. name: 'arguments',
  17677. range: [23, 32],
  17678. loc: {
  17679. start: { line: 1, column: 23 },
  17680. end: { line: 1, column: 32 }
  17681. }
  17682. },
  17683. params: [],
  17684. defaults: [],
  17685. body: {
  17686. type: 'BlockStatement',
  17687. body: [],
  17688. range: [35, 37],
  17689. loc: {
  17690. start: { line: 1, column: 35 },
  17691. end: { line: 1, column: 37 }
  17692. }
  17693. },
  17694. rest: null,
  17695. generator: false,
  17696. expression: false,
  17697. range: [14, 37],
  17698. loc: {
  17699. start: { line: 1, column: 14 },
  17700. end: { line: 1, column: 37 }
  17701. }
  17702. }, {
  17703. type: 'EmptyStatement',
  17704. range: [37, 38],
  17705. loc: {
  17706. start: { line: 1, column: 37 },
  17707. end: { line: 1, column: 38 }
  17708. }
  17709. }],
  17710. range: [0, 38],
  17711. loc: {
  17712. start: { line: 1, column: 0 },
  17713. end: { line: 1, column: 38 }
  17714. },
  17715. errors: [{
  17716. index: 23,
  17717. lineNumber: 1,
  17718. column: 24,
  17719. message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
  17720. }]
  17721. },
  17722. '"use strict"; function interface() {};': {
  17723. type: 'Program',
  17724. body: [{
  17725. type: 'ExpressionStatement',
  17726. expression: {
  17727. type: 'Literal',
  17728. value: 'use strict',
  17729. raw: '"use strict"',
  17730. range: [0, 12],
  17731. loc: {
  17732. start: { line: 1, column: 0 },
  17733. end: { line: 1, column: 12 }
  17734. }
  17735. },
  17736. range: [0, 13],
  17737. loc: {
  17738. start: { line: 1, column: 0 },
  17739. end: { line: 1, column: 13 }
  17740. }
  17741. }, {
  17742. type: 'FunctionDeclaration',
  17743. id: {
  17744. type: 'Identifier',
  17745. name: 'interface',
  17746. range: [23, 32],
  17747. loc: {
  17748. start: { line: 1, column: 23 },
  17749. end: { line: 1, column: 32 }
  17750. }
  17751. },
  17752. params: [],
  17753. defaults: [],
  17754. body: {
  17755. type: 'BlockStatement',
  17756. body: [],
  17757. range: [35, 37],
  17758. loc: {
  17759. start: { line: 1, column: 35 },
  17760. end: { line: 1, column: 37 }
  17761. }
  17762. },
  17763. rest: null,
  17764. generator: false,
  17765. expression: false,
  17766. range: [14, 37],
  17767. loc: {
  17768. start: { line: 1, column: 14 },
  17769. end: { line: 1, column: 37 }
  17770. }
  17771. }, {
  17772. type: 'EmptyStatement',
  17773. range: [37, 38],
  17774. loc: {
  17775. start: { line: 1, column: 37 },
  17776. end: { line: 1, column: 38 }
  17777. }
  17778. }],
  17779. range: [0, 38],
  17780. loc: {
  17781. start: { line: 1, column: 0 },
  17782. end: { line: 1, column: 38 }
  17783. },
  17784. errors: [{
  17785. index: 23,
  17786. lineNumber: 1,
  17787. column: 24,
  17788. message: 'Error: Line 1: Use of future reserved word in strict mode'
  17789. }]
  17790. },
  17791. '"use strict"; (function eval() {});': {
  17792. type: 'Program',
  17793. body: [{
  17794. type: 'ExpressionStatement',
  17795. expression: {
  17796. type: 'Literal',
  17797. value: 'use strict',
  17798. raw: '"use strict"',
  17799. range: [0, 12],
  17800. loc: {
  17801. start: { line: 1, column: 0 },
  17802. end: { line: 1, column: 12 }
  17803. }
  17804. },
  17805. range: [0, 13],
  17806. loc: {
  17807. start: { line: 1, column: 0 },
  17808. end: { line: 1, column: 13 }
  17809. }
  17810. }, {
  17811. type: 'ExpressionStatement',
  17812. expression: {
  17813. type: 'FunctionExpression',
  17814. id: {
  17815. type: 'Identifier',
  17816. name: 'eval',
  17817. range: [24, 28],
  17818. loc: {
  17819. start: { line: 1, column: 24 },
  17820. end: { line: 1, column: 28 }
  17821. }
  17822. },
  17823. params: [],
  17824. defaults: [],
  17825. body: {
  17826. type: 'BlockStatement',
  17827. body: [],
  17828. range: [31, 33],
  17829. loc: {
  17830. start: { line: 1, column: 31 },
  17831. end: { line: 1, column: 33 }
  17832. }
  17833. },
  17834. rest: null,
  17835. generator: false,
  17836. expression: false,
  17837. range: [15, 33],
  17838. loc: {
  17839. start: { line: 1, column: 15 },
  17840. end: { line: 1, column: 33 }
  17841. }
  17842. },
  17843. range: [14, 35],
  17844. loc: {
  17845. start: { line: 1, column: 14 },
  17846. end: { line: 1, column: 35 }
  17847. }
  17848. }],
  17849. range: [0, 35],
  17850. loc: {
  17851. start: { line: 1, column: 0 },
  17852. end: { line: 1, column: 35 }
  17853. },
  17854. errors: [{
  17855. index: 24,
  17856. lineNumber: 1,
  17857. column: 25,
  17858. message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
  17859. }]
  17860. },
  17861. '"use strict"; (function arguments() {});': {
  17862. type: 'Program',
  17863. body: [{
  17864. type: 'ExpressionStatement',
  17865. expression: {
  17866. type: 'Literal',
  17867. value: 'use strict',
  17868. raw: '"use strict"',
  17869. range: [0, 12],
  17870. loc: {
  17871. start: { line: 1, column: 0 },
  17872. end: { line: 1, column: 12 }
  17873. }
  17874. },
  17875. range: [0, 13],
  17876. loc: {
  17877. start: { line: 1, column: 0 },
  17878. end: { line: 1, column: 13 }
  17879. }
  17880. }, {
  17881. type: 'ExpressionStatement',
  17882. expression: {
  17883. type: 'FunctionExpression',
  17884. id: {
  17885. type: 'Identifier',
  17886. name: 'arguments',
  17887. range: [24, 33],
  17888. loc: {
  17889. start: { line: 1, column: 24 },
  17890. end: { line: 1, column: 33 }
  17891. }
  17892. },
  17893. params: [],
  17894. defaults: [],
  17895. body: {
  17896. type: 'BlockStatement',
  17897. body: [],
  17898. range: [36, 38],
  17899. loc: {
  17900. start: { line: 1, column: 36 },
  17901. end: { line: 1, column: 38 }
  17902. }
  17903. },
  17904. rest: null,
  17905. generator: false,
  17906. expression: false,
  17907. range: [15, 38],
  17908. loc: {
  17909. start: { line: 1, column: 15 },
  17910. end: { line: 1, column: 38 }
  17911. }
  17912. },
  17913. range: [14, 40],
  17914. loc: {
  17915. start: { line: 1, column: 14 },
  17916. end: { line: 1, column: 40 }
  17917. }
  17918. }],
  17919. range: [0, 40],
  17920. loc: {
  17921. start: { line: 1, column: 0 },
  17922. end: { line: 1, column: 40 }
  17923. },
  17924. errors: [{
  17925. index: 24,
  17926. lineNumber: 1,
  17927. column: 25,
  17928. message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
  17929. }]
  17930. },
  17931. '"use strict"; (function interface() {});': {
  17932. type: 'Program',
  17933. body: [{
  17934. type: 'ExpressionStatement',
  17935. expression: {
  17936. type: 'Literal',
  17937. value: 'use strict',
  17938. raw: '"use strict"',
  17939. range: [0, 12],
  17940. loc: {
  17941. start: { line: 1, column: 0 },
  17942. end: { line: 1, column: 12 }
  17943. }
  17944. },
  17945. range: [0, 13],
  17946. loc: {
  17947. start: { line: 1, column: 0 },
  17948. end: { line: 1, column: 13 }
  17949. }
  17950. }, {
  17951. type: 'ExpressionStatement',
  17952. expression: {
  17953. type: 'FunctionExpression',
  17954. id: {
  17955. type: 'Identifier',
  17956. name: 'interface',
  17957. range: [24, 33],
  17958. loc: {
  17959. start: { line: 1, column: 24 },
  17960. end: { line: 1, column: 33 }
  17961. }
  17962. },
  17963. params: [],
  17964. defaults: [],
  17965. body: {
  17966. type: 'BlockStatement',
  17967. body: [],
  17968. range: [36, 38],
  17969. loc: {
  17970. start: { line: 1, column: 36 },
  17971. end: { line: 1, column: 38 }
  17972. }
  17973. },
  17974. rest: null,
  17975. generator: false,
  17976. expression: false,
  17977. range: [15, 38],
  17978. loc: {
  17979. start: { line: 1, column: 15 },
  17980. end: { line: 1, column: 38 }
  17981. }
  17982. },
  17983. range: [14, 40],
  17984. loc: {
  17985. start: { line: 1, column: 14 },
  17986. end: { line: 1, column: 40 }
  17987. }
  17988. }],
  17989. range: [0, 40],
  17990. loc: {
  17991. start: { line: 1, column: 0 },
  17992. end: { line: 1, column: 40 }
  17993. },
  17994. errors: [{
  17995. index: 24,
  17996. lineNumber: 1,
  17997. column: 25,
  17998. message: 'Error: Line 1: Use of future reserved word in strict mode'
  17999. }]
  18000. },
  18001. '"use strict"; function f(eval) {};': {
  18002. type: 'Program',
  18003. body: [{
  18004. type: 'ExpressionStatement',
  18005. expression: {
  18006. type: 'Literal',
  18007. value: 'use strict',
  18008. raw: '"use strict"',
  18009. range: [0, 12],
  18010. loc: {
  18011. start: { line: 1, column: 0 },
  18012. end: { line: 1, column: 12 }
  18013. }
  18014. },
  18015. range: [0, 13],
  18016. loc: {
  18017. start: { line: 1, column: 0 },
  18018. end: { line: 1, column: 13 }
  18019. }
  18020. }, {
  18021. type: 'FunctionDeclaration',
  18022. id: {
  18023. type: 'Identifier',
  18024. name: 'f',
  18025. range: [23, 24],
  18026. loc: {
  18027. start: { line: 1, column: 23 },
  18028. end: { line: 1, column: 24 }
  18029. }
  18030. },
  18031. params: [{
  18032. type: 'Identifier',
  18033. name: 'eval',
  18034. range: [25, 29],
  18035. loc: {
  18036. start: { line: 1, column: 25 },
  18037. end: { line: 1, column: 29 }
  18038. }
  18039. }],
  18040. defaults: [],
  18041. body: {
  18042. type: 'BlockStatement',
  18043. body: [],
  18044. range: [31, 33],
  18045. loc: {
  18046. start: { line: 1, column: 31 },
  18047. end: { line: 1, column: 33 }
  18048. }
  18049. },
  18050. rest: null,
  18051. generator: false,
  18052. expression: false,
  18053. range: [14, 33],
  18054. loc: {
  18055. start: { line: 1, column: 14 },
  18056. end: { line: 1, column: 33 }
  18057. }
  18058. }, {
  18059. type: 'EmptyStatement',
  18060. range: [33, 34],
  18061. loc: {
  18062. start: { line: 1, column: 33 },
  18063. end: { line: 1, column: 34 }
  18064. }
  18065. }],
  18066. range: [0, 34],
  18067. loc: {
  18068. start: { line: 1, column: 0 },
  18069. end: { line: 1, column: 34 }
  18070. },
  18071. errors: [{
  18072. index: 25,
  18073. lineNumber: 1,
  18074. column: 26,
  18075. message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
  18076. }]
  18077. },
  18078. '"use strict"; function f(arguments) {};': {
  18079. type: 'Program',
  18080. body: [{
  18081. type: 'ExpressionStatement',
  18082. expression: {
  18083. type: 'Literal',
  18084. value: 'use strict',
  18085. raw: '"use strict"',
  18086. range: [0, 12],
  18087. loc: {
  18088. start: { line: 1, column: 0 },
  18089. end: { line: 1, column: 12 }
  18090. }
  18091. },
  18092. range: [0, 13],
  18093. loc: {
  18094. start: { line: 1, column: 0 },
  18095. end: { line: 1, column: 13 }
  18096. }
  18097. }, {
  18098. type: 'FunctionDeclaration',
  18099. id: {
  18100. type: 'Identifier',
  18101. name: 'f',
  18102. range: [23, 24],
  18103. loc: {
  18104. start: { line: 1, column: 23 },
  18105. end: { line: 1, column: 24 }
  18106. }
  18107. },
  18108. params: [{
  18109. type: 'Identifier',
  18110. name: 'arguments',
  18111. range: [25, 34],
  18112. loc: {
  18113. start: { line: 1, column: 25 },
  18114. end: { line: 1, column: 34 }
  18115. }
  18116. }],
  18117. defaults: [],
  18118. body: {
  18119. type: 'BlockStatement',
  18120. body: [],
  18121. range: [36, 38],
  18122. loc: {
  18123. start: { line: 1, column: 36 },
  18124. end: { line: 1, column: 38 }
  18125. }
  18126. },
  18127. rest: null,
  18128. generator: false,
  18129. expression: false,
  18130. range: [14, 38],
  18131. loc: {
  18132. start: { line: 1, column: 14 },
  18133. end: { line: 1, column: 38 }
  18134. }
  18135. }, {
  18136. type: 'EmptyStatement',
  18137. range: [38, 39],
  18138. loc: {
  18139. start: { line: 1, column: 38 },
  18140. end: { line: 1, column: 39 }
  18141. }
  18142. }],
  18143. range: [0, 39],
  18144. loc: {
  18145. start: { line: 1, column: 0 },
  18146. end: { line: 1, column: 39 }
  18147. },
  18148. errors: [{
  18149. index: 25,
  18150. lineNumber: 1,
  18151. column: 26,
  18152. message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
  18153. }]
  18154. },
  18155. '"use strict"; function f(foo, foo) {};': {
  18156. type: 'Program',
  18157. body: [{
  18158. type: 'ExpressionStatement',
  18159. expression: {
  18160. type: 'Literal',
  18161. value: 'use strict',
  18162. raw: '"use strict"',
  18163. range: [0, 12],
  18164. loc: {
  18165. start: { line: 1, column: 0 },
  18166. end: { line: 1, column: 12 }
  18167. }
  18168. },
  18169. range: [0, 13],
  18170. loc: {
  18171. start: { line: 1, column: 0 },
  18172. end: { line: 1, column: 13 }
  18173. }
  18174. }, {
  18175. type: 'FunctionDeclaration',
  18176. id: {
  18177. type: 'Identifier',
  18178. name: 'f',
  18179. range: [23, 24],
  18180. loc: {
  18181. start: { line: 1, column: 23 },
  18182. end: { line: 1, column: 24 }
  18183. }
  18184. },
  18185. params: [{
  18186. type: 'Identifier',
  18187. name: 'foo',
  18188. range: [25, 28],
  18189. loc: {
  18190. start: { line: 1, column: 25 },
  18191. end: { line: 1, column: 28 }
  18192. }
  18193. }, {
  18194. type: 'Identifier',
  18195. name: 'foo',
  18196. range: [31, 34],
  18197. loc: {
  18198. start: { line: 1, column: 31 },
  18199. end: { line: 1, column: 34 }
  18200. }
  18201. }],
  18202. defaults: [],
  18203. body: {
  18204. type: 'BlockStatement',
  18205. body: [],
  18206. range: [36, 38],
  18207. loc: {
  18208. start: { line: 1, column: 36 },
  18209. end: { line: 1, column: 38 }
  18210. }
  18211. },
  18212. rest: null,
  18213. generator: false,
  18214. expression: false,
  18215. range: [14, 38],
  18216. loc: {
  18217. start: { line: 1, column: 14 },
  18218. end: { line: 1, column: 38 }
  18219. }
  18220. }, {
  18221. type: 'EmptyStatement',
  18222. range: [38, 39],
  18223. loc: {
  18224. start: { line: 1, column: 38 },
  18225. end: { line: 1, column: 39 }
  18226. }
  18227. }],
  18228. range: [0, 39],
  18229. loc: {
  18230. start: { line: 1, column: 0 },
  18231. end: { line: 1, column: 39 }
  18232. },
  18233. errors: [{
  18234. index: 31,
  18235. lineNumber: 1,
  18236. column: 32,
  18237. message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
  18238. }]
  18239. },
  18240. '"use strict"; (function f(eval) {});': {
  18241. type: 'Program',
  18242. body: [{
  18243. type: 'ExpressionStatement',
  18244. expression: {
  18245. type: 'Literal',
  18246. value: 'use strict',
  18247. raw: '"use strict"',
  18248. range: [0, 12],
  18249. loc: {
  18250. start: { line: 1, column: 0 },
  18251. end: { line: 1, column: 12 }
  18252. }
  18253. },
  18254. range: [0, 13],
  18255. loc: {
  18256. start: { line: 1, column: 0 },
  18257. end: { line: 1, column: 13 }
  18258. }
  18259. }, {
  18260. type: 'ExpressionStatement',
  18261. expression: {
  18262. type: 'FunctionExpression',
  18263. id: {
  18264. type: 'Identifier',
  18265. name: 'f',
  18266. range: [24, 25],
  18267. loc: {
  18268. start: { line: 1, column: 24 },
  18269. end: { line: 1, column: 25 }
  18270. }
  18271. },
  18272. params: [{
  18273. type: 'Identifier',
  18274. name: 'eval',
  18275. range: [26, 30],
  18276. loc: {
  18277. start: { line: 1, column: 26 },
  18278. end: { line: 1, column: 30 }
  18279. }
  18280. }],
  18281. defaults: [],
  18282. body: {
  18283. type: 'BlockStatement',
  18284. body: [],
  18285. range: [32, 34],
  18286. loc: {
  18287. start: { line: 1, column: 32 },
  18288. end: { line: 1, column: 34 }
  18289. }
  18290. },
  18291. rest: null,
  18292. generator: false,
  18293. expression: false,
  18294. range: [15, 34],
  18295. loc: {
  18296. start: { line: 1, column: 15 },
  18297. end: { line: 1, column: 34 }
  18298. }
  18299. },
  18300. range: [14, 36],
  18301. loc: {
  18302. start: { line: 1, column: 14 },
  18303. end: { line: 1, column: 36 }
  18304. }
  18305. }],
  18306. range: [0, 36],
  18307. loc: {
  18308. start: { line: 1, column: 0 },
  18309. end: { line: 1, column: 36 }
  18310. },
  18311. errors: [{
  18312. index: 26,
  18313. lineNumber: 1,
  18314. column: 27,
  18315. message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
  18316. }]
  18317. },
  18318. '"use strict"; (function f(arguments) {});': {
  18319. type: 'Program',
  18320. body: [{
  18321. type: 'ExpressionStatement',
  18322. expression: {
  18323. type: 'Literal',
  18324. value: 'use strict',
  18325. raw: '"use strict"',
  18326. range: [0, 12],
  18327. loc: {
  18328. start: { line: 1, column: 0 },
  18329. end: { line: 1, column: 12 }
  18330. }
  18331. },
  18332. range: [0, 13],
  18333. loc: {
  18334. start: { line: 1, column: 0 },
  18335. end: { line: 1, column: 13 }
  18336. }
  18337. }, {
  18338. type: 'ExpressionStatement',
  18339. expression: {
  18340. type: 'FunctionExpression',
  18341. id: {
  18342. type: 'Identifier',
  18343. name: 'f',
  18344. range: [24, 25],
  18345. loc: {
  18346. start: { line: 1, column: 24 },
  18347. end: { line: 1, column: 25 }
  18348. }
  18349. },
  18350. params: [{
  18351. type: 'Identifier',
  18352. name: 'arguments',
  18353. range: [26, 35],
  18354. loc: {
  18355. start: { line: 1, column: 26 },
  18356. end: { line: 1, column: 35 }
  18357. }
  18358. }],
  18359. defaults: [],
  18360. body: {
  18361. type: 'BlockStatement',
  18362. body: [],
  18363. range: [37, 39],
  18364. loc: {
  18365. start: { line: 1, column: 37 },
  18366. end: { line: 1, column: 39 }
  18367. }
  18368. },
  18369. rest: null,
  18370. generator: false,
  18371. expression: false,
  18372. range: [15, 39],
  18373. loc: {
  18374. start: { line: 1, column: 15 },
  18375. end: { line: 1, column: 39 }
  18376. }
  18377. },
  18378. range: [14, 41],
  18379. loc: {
  18380. start: { line: 1, column: 14 },
  18381. end: { line: 1, column: 41 }
  18382. }
  18383. }],
  18384. range: [0, 41],
  18385. loc: {
  18386. start: { line: 1, column: 0 },
  18387. end: { line: 1, column: 41 }
  18388. },
  18389. errors: [{
  18390. index: 26,
  18391. lineNumber: 1,
  18392. column: 27,
  18393. message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
  18394. }]
  18395. },
  18396. '"use strict"; (function f(foo, foo) {});': {
  18397. type: 'Program',
  18398. body: [{
  18399. type: 'ExpressionStatement',
  18400. expression: {
  18401. type: 'Literal',
  18402. value: 'use strict',
  18403. raw: '"use strict"',
  18404. range: [0, 12],
  18405. loc: {
  18406. start: { line: 1, column: 0 },
  18407. end: { line: 1, column: 12 }
  18408. }
  18409. },
  18410. range: [0, 13],
  18411. loc: {
  18412. start: { line: 1, column: 0 },
  18413. end: { line: 1, column: 13 }
  18414. }
  18415. }, {
  18416. type: 'ExpressionStatement',
  18417. expression: {
  18418. type: 'FunctionExpression',
  18419. id: {
  18420. type: 'Identifier',
  18421. name: 'f',
  18422. range: [24, 25],
  18423. loc: {
  18424. start: { line: 1, column: 24 },
  18425. end: { line: 1, column: 25 }
  18426. }
  18427. },
  18428. params: [{
  18429. type: 'Identifier',
  18430. name: 'foo',
  18431. range: [26, 29],
  18432. loc: {
  18433. start: { line: 1, column: 26 },
  18434. end: { line: 1, column: 29 }
  18435. }
  18436. }, {
  18437. type: 'Identifier',
  18438. name: 'foo',
  18439. range: [32, 35],
  18440. loc: {
  18441. start: { line: 1, column: 32 },
  18442. end: { line: 1, column: 35 }
  18443. }
  18444. }],
  18445. defaults: [],
  18446. body: {
  18447. type: 'BlockStatement',
  18448. body: [],
  18449. range: [37, 39],
  18450. loc: {
  18451. start: { line: 1, column: 37 },
  18452. end: { line: 1, column: 39 }
  18453. }
  18454. },
  18455. rest: null,
  18456. generator: false,
  18457. expression: false,
  18458. range: [15, 39],
  18459. loc: {
  18460. start: { line: 1, column: 15 },
  18461. end: { line: 1, column: 39 }
  18462. }
  18463. },
  18464. range: [14, 41],
  18465. loc: {
  18466. start: { line: 1, column: 14 },
  18467. end: { line: 1, column: 41 }
  18468. }
  18469. }],
  18470. range: [0, 41],
  18471. loc: {
  18472. start: { line: 1, column: 0 },
  18473. end: { line: 1, column: 41 }
  18474. },
  18475. errors: [{
  18476. index: 32,
  18477. lineNumber: 1,
  18478. column: 33,
  18479. message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
  18480. }]
  18481. },
  18482. '"use strict"; x = { set f(eval) {} }' : {
  18483. type: 'Program',
  18484. body: [{
  18485. type: 'ExpressionStatement',
  18486. expression: {
  18487. type: 'Literal',
  18488. value: 'use strict',
  18489. raw: '"use strict"',
  18490. range: [0, 12],
  18491. loc: {
  18492. start: { line: 1, column: 0 },
  18493. end: { line: 1, column: 12 }
  18494. }
  18495. },
  18496. range: [0, 13],
  18497. loc: {
  18498. start: { line: 1, column: 0 },
  18499. end: { line: 1, column: 13 }
  18500. }
  18501. }, {
  18502. type: 'ExpressionStatement',
  18503. expression: {
  18504. type: 'AssignmentExpression',
  18505. operator: '=',
  18506. left: {
  18507. type: 'Identifier',
  18508. name: 'x',
  18509. range: [14, 15],
  18510. loc: {
  18511. start: { line: 1, column: 14 },
  18512. end: { line: 1, column: 15 }
  18513. }
  18514. },
  18515. right: {
  18516. type: 'ObjectExpression',
  18517. properties: [{
  18518. type: 'Property',
  18519. key: {
  18520. type: 'Identifier',
  18521. name: 'f',
  18522. range: [24, 25],
  18523. loc: {
  18524. start: { line: 1, column: 24 },
  18525. end: { line: 1, column: 25 }
  18526. }
  18527. },
  18528. value : {
  18529. type: 'FunctionExpression',
  18530. id: null,
  18531. params: [{
  18532. type: 'Identifier',
  18533. name: 'eval',
  18534. range: [26, 30],
  18535. loc: {
  18536. start: { line: 1, column: 26 },
  18537. end: { line: 1, column: 30 }
  18538. }
  18539. }],
  18540. defaults: [],
  18541. body: {
  18542. type: 'BlockStatement',
  18543. body: [],
  18544. range: [32, 34],
  18545. loc: {
  18546. start: { line: 1, column: 32 },
  18547. end: { line: 1, column: 34 }
  18548. }
  18549. },
  18550. rest: null,
  18551. generator: false,
  18552. expression: false,
  18553. range: [32, 34],
  18554. loc: {
  18555. start: { line: 1, column: 32 },
  18556. end: { line: 1, column: 34 }
  18557. }
  18558. },
  18559. kind: 'set',
  18560. range: [20, 34],
  18561. loc: {
  18562. start: { line: 1, column: 20 },
  18563. end: { line: 1, column: 34 }
  18564. }
  18565. }],
  18566. range: [18, 36],
  18567. loc: {
  18568. start: { line: 1, column: 18 },
  18569. end: { line: 1, column: 36 }
  18570. }
  18571. },
  18572. range: [14, 36],
  18573. loc: {
  18574. start: { line: 1, column: 14 },
  18575. end: { line: 1, column: 36 }
  18576. }
  18577. },
  18578. range: [14, 36],
  18579. loc: {
  18580. start: { line: 1, column: 14 },
  18581. end: { line: 1, column: 36 }
  18582. }
  18583. }],
  18584. range: [0, 36],
  18585. loc: {
  18586. start: { line: 1, column: 0 },
  18587. end: { line: 1, column: 36 }
  18588. },
  18589. errors: [{
  18590. index: 26,
  18591. lineNumber: 1,
  18592. column: 27,
  18593. message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
  18594. }]
  18595. },
  18596. 'function hello() { "octal directive\\1"; "use strict"; }': {
  18597. type: 'Program',
  18598. body: [{
  18599. type: 'FunctionDeclaration',
  18600. id: {
  18601. type: 'Identifier',
  18602. name: 'hello',
  18603. range: [9, 14],
  18604. loc: {
  18605. start: { line: 1, column: 9 },
  18606. end: { line: 1, column: 14 }
  18607. }
  18608. },
  18609. params: [],
  18610. defaults: [],
  18611. body: {
  18612. type: 'BlockStatement',
  18613. body: [{
  18614. type: 'ExpressionStatement',
  18615. expression: {
  18616. type: 'Literal',
  18617. value: 'octal directive\u0001',
  18618. raw: '"octal directive\\1"',
  18619. range: [19, 38],
  18620. loc: {
  18621. start: { line: 1, column: 19 },
  18622. end: { line: 1, column: 38 }
  18623. }
  18624. },
  18625. range: [19, 39],
  18626. loc: {
  18627. start: { line: 1, column: 19 },
  18628. end: { line: 1, column: 39 }
  18629. }
  18630. }, {
  18631. type: 'ExpressionStatement',
  18632. expression: {
  18633. type: 'Literal',
  18634. value: 'use strict',
  18635. raw: '"use strict"',
  18636. range: [40, 52],
  18637. loc: {
  18638. start: { line: 1, column: 40 },
  18639. end: { line: 1, column: 52 }
  18640. }
  18641. },
  18642. range: [40, 53],
  18643. loc: {
  18644. start: { line: 1, column: 40 },
  18645. end: { line: 1, column: 53 }
  18646. }
  18647. }],
  18648. range: [17, 55],
  18649. loc: {
  18650. start: { line: 1, column: 17 },
  18651. end: { line: 1, column: 55 }
  18652. }
  18653. },
  18654. rest: null,
  18655. generator: false,
  18656. expression: false,
  18657. range: [0, 55],
  18658. loc: {
  18659. start: { line: 1, column: 0 },
  18660. end: { line: 1, column: 55 }
  18661. }
  18662. }],
  18663. range: [0, 55],
  18664. loc: {
  18665. start: { line: 1, column: 0 },
  18666. end: { line: 1, column: 55 }
  18667. },
  18668. errors: [{
  18669. index: 19,
  18670. lineNumber: 1,
  18671. column: 20,
  18672. message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
  18673. }]
  18674. },
  18675. '"\\1"; \'use strict\';': {
  18676. type: 'Program',
  18677. body: [{
  18678. type: 'ExpressionStatement',
  18679. expression: {
  18680. type: 'Literal',
  18681. value: '\u0001',
  18682. raw: '"\\1"',
  18683. range: [0, 4],
  18684. loc: {
  18685. start: { line: 1, column: 0 },
  18686. end: { line: 1, column: 4 }
  18687. }
  18688. },
  18689. range: [0, 5],
  18690. loc: {
  18691. start: { line: 1, column: 0 },
  18692. end: { line: 1, column: 5 }
  18693. }
  18694. }, {
  18695. type: 'ExpressionStatement',
  18696. expression: {
  18697. type: 'Literal',
  18698. value: 'use strict',
  18699. raw: '\'use strict\'',
  18700. range: [6, 18],
  18701. loc: {
  18702. start: { line: 1, column: 6 },
  18703. end: { line: 1, column: 18 }
  18704. }
  18705. },
  18706. range: [6, 19],
  18707. loc: {
  18708. start: { line: 1, column: 6 },
  18709. end: { line: 1, column: 19 }
  18710. }
  18711. }],
  18712. range: [0, 19],
  18713. loc: {
  18714. start: { line: 1, column: 0 },
  18715. end: { line: 1, column: 19 }
  18716. },
  18717. errors: [{
  18718. index: 0,
  18719. lineNumber: 1,
  18720. column: 1,
  18721. message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
  18722. }]
  18723. },
  18724. '"use strict"; var x = { 014: 3}': {
  18725. type: 'Program',
  18726. body: [{
  18727. type: 'ExpressionStatement',
  18728. expression: {
  18729. type: 'Literal',
  18730. value: 'use strict',
  18731. raw: '"use strict"',
  18732. range: [0, 12],
  18733. loc: {
  18734. start: { line: 1, column: 0 },
  18735. end: { line: 1, column: 12 }
  18736. }
  18737. },
  18738. range: [0, 13],
  18739. loc: {
  18740. start: { line: 1, column: 0 },
  18741. end: { line: 1, column: 13 }
  18742. }
  18743. }, {
  18744. type: 'VariableDeclaration',
  18745. declarations: [{
  18746. type: 'VariableDeclarator',
  18747. id: {
  18748. type: 'Identifier',
  18749. name: 'x',
  18750. range: [18, 19],
  18751. loc: {
  18752. start: { line: 1, column: 18 },
  18753. end: { line: 1, column: 19 }
  18754. }
  18755. },
  18756. init: {
  18757. type: 'ObjectExpression',
  18758. properties: [{
  18759. type: 'Property',
  18760. key: {
  18761. type: 'Literal',
  18762. value: 12,
  18763. raw: '014',
  18764. range: [24, 27],
  18765. loc: {
  18766. start: { line: 1, column: 24 },
  18767. end: { line: 1, column: 27 }
  18768. }
  18769. },
  18770. value: {
  18771. type: 'Literal',
  18772. value: 3,
  18773. raw: '3',
  18774. range: [29, 30],
  18775. loc: {
  18776. start: { line: 1, column: 29 },
  18777. end: { line: 1, column: 30 }
  18778. }
  18779. },
  18780. kind: 'init',
  18781. range: [24, 30],
  18782. loc: {
  18783. start: { line: 1, column: 24 },
  18784. end: { line: 1, column: 30 }
  18785. }
  18786. }],
  18787. range: [22, 31],
  18788. loc: {
  18789. start: { line: 1, column: 22 },
  18790. end: { line: 1, column: 31 }
  18791. }
  18792. },
  18793. range: [18, 31],
  18794. loc: {
  18795. start: { line: 1, column: 18 },
  18796. end: { line: 1, column: 31 }
  18797. }
  18798. }],
  18799. kind: 'var',
  18800. range: [14, 31],
  18801. loc: {
  18802. start: { line: 1, column: 14 },
  18803. end: { line: 1, column: 31 }
  18804. }
  18805. }],
  18806. range: [0, 31],
  18807. loc: {
  18808. start: { line: 1, column: 0 },
  18809. end: { line: 1, column: 31 }
  18810. },
  18811. errors: [{
  18812. index: 24,
  18813. lineNumber: 1,
  18814. column: 25,
  18815. message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
  18816. }]
  18817. },
  18818. '"use strict"; var x = { get i() {}, get i() {} }': {
  18819. type: 'Program',
  18820. body: [{
  18821. type: 'ExpressionStatement',
  18822. expression: {
  18823. type: 'Literal',
  18824. value: 'use strict',
  18825. raw: '"use strict"',
  18826. range: [0, 12],
  18827. loc: {
  18828. start: { line: 1, column: 0 },
  18829. end: { line: 1, column: 12 }
  18830. }
  18831. },
  18832. range: [0, 13],
  18833. loc: {
  18834. start: { line: 1, column: 0 },
  18835. end: { line: 1, column: 13 }
  18836. }
  18837. }, {
  18838. type: 'VariableDeclaration',
  18839. declarations: [{
  18840. type: 'VariableDeclarator',
  18841. id: {
  18842. type: 'Identifier',
  18843. name: 'x',
  18844. range: [18, 19],
  18845. loc: {
  18846. start: { line: 1, column: 18 },
  18847. end: { line: 1, column: 19 }
  18848. }
  18849. },
  18850. init: {
  18851. type: 'ObjectExpression',
  18852. properties: [{
  18853. type: 'Property',
  18854. key: {
  18855. type: 'Identifier',
  18856. name: 'i',
  18857. range: [28, 29],
  18858. loc: {
  18859. start: { line: 1, column: 28 },
  18860. end: { line: 1, column: 29 }
  18861. }
  18862. },
  18863. value: {
  18864. type: 'FunctionExpression',
  18865. id: null,
  18866. params: [],
  18867. defaults: [],
  18868. body: {
  18869. type: 'BlockStatement',
  18870. body: [],
  18871. range: [32, 34],
  18872. loc: {
  18873. start: { line: 1, column: 32 },
  18874. end: { line: 1, column: 34 }
  18875. }
  18876. },
  18877. rest: null,
  18878. generator: false,
  18879. expression: false,
  18880. range: [32, 34],
  18881. loc: {
  18882. start: { line: 1, column: 32 },
  18883. end: { line: 1, column: 34 }
  18884. }
  18885. },
  18886. kind: 'get',
  18887. range: [24, 34],
  18888. loc: {
  18889. start: { line: 1, column: 24 },
  18890. end: { line: 1, column: 34 }
  18891. }
  18892. }, {
  18893. type: 'Property',
  18894. key: {
  18895. type: 'Identifier',
  18896. name: 'i',
  18897. range: [40, 41],
  18898. loc: {
  18899. start: { line: 1, column: 40 },
  18900. end: { line: 1, column: 41 }
  18901. }
  18902. },
  18903. value: {
  18904. type: 'FunctionExpression',
  18905. id: null,
  18906. params: [],
  18907. defaults: [],
  18908. body: {
  18909. type: 'BlockStatement',
  18910. body: [],
  18911. range: [44, 46],
  18912. loc: {
  18913. start: { line: 1, column: 44 },
  18914. end: { line: 1, column: 46 }
  18915. }
  18916. },
  18917. rest: null,
  18918. generator: false,
  18919. expression: false,
  18920. range: [44, 46],
  18921. loc: {
  18922. start: { line: 1, column: 44 },
  18923. end: { line: 1, column: 46 }
  18924. }
  18925. },
  18926. kind: 'get',
  18927. range: [36, 46],
  18928. loc: {
  18929. start: { line: 1, column: 36 },
  18930. end: { line: 1, column: 46 }
  18931. }
  18932. }],
  18933. range: [22, 48],
  18934. loc: {
  18935. start: { line: 1, column: 22 },
  18936. end: { line: 1, column: 48 }
  18937. }
  18938. },
  18939. range: [18, 48],
  18940. loc: {
  18941. start: { line: 1, column: 18 },
  18942. end: { line: 1, column: 48 }
  18943. }
  18944. }],
  18945. kind: 'var',
  18946. range: [14, 48],
  18947. loc: {
  18948. start: { line: 1, column: 14 },
  18949. end: { line: 1, column: 48 }
  18950. }
  18951. }],
  18952. range: [0, 48],
  18953. loc: {
  18954. start: { line: 1, column: 0 },
  18955. end: { line: 1, column: 48 }
  18956. },
  18957. errors: [{
  18958. index: 46,
  18959. lineNumber: 1,
  18960. column: 47,
  18961. message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
  18962. }]
  18963. },
  18964. '"use strict"; var x = { i: 42, get i() {} }': {
  18965. type: 'Program',
  18966. body: [{
  18967. type: 'ExpressionStatement',
  18968. expression: {
  18969. type: 'Literal',
  18970. value: 'use strict',
  18971. raw: '"use strict"',
  18972. range: [0, 12],
  18973. loc: {
  18974. start: { line: 1, column: 0 },
  18975. end: { line: 1, column: 12 }
  18976. }
  18977. },
  18978. range: [0, 13],
  18979. loc: {
  18980. start: { line: 1, column: 0 },
  18981. end: { line: 1, column: 13 }
  18982. }
  18983. }, {
  18984. type: 'VariableDeclaration',
  18985. declarations: [{
  18986. type: 'VariableDeclarator',
  18987. id: {
  18988. type: 'Identifier',
  18989. name: 'x',
  18990. range: [18, 19],
  18991. loc: {
  18992. start: { line: 1, column: 18 },
  18993. end: { line: 1, column: 19 }
  18994. }
  18995. },
  18996. init: {
  18997. type: 'ObjectExpression',
  18998. properties: [{
  18999. type: 'Property',
  19000. key: {
  19001. type: 'Identifier',
  19002. name: 'i',
  19003. range: [24, 25],
  19004. loc: {
  19005. start: { line: 1, column: 24 },
  19006. end: { line: 1, column: 25 }
  19007. }
  19008. },
  19009. value: {
  19010. type: 'Literal',
  19011. value: 42,
  19012. raw: '42',
  19013. range: [27, 29],
  19014. loc: {
  19015. start: { line: 1, column: 27 },
  19016. end: { line: 1, column: 29 }
  19017. }
  19018. },
  19019. kind: 'init',
  19020. range: [24, 29],
  19021. loc: {
  19022. start: { line: 1, column: 24 },
  19023. end: { line: 1, column: 29 }
  19024. }
  19025. }, {
  19026. type: 'Property',
  19027. key: {
  19028. type: 'Identifier',
  19029. name: 'i',
  19030. range: [35, 36],
  19031. loc: {
  19032. start: { line: 1, column: 35 },
  19033. end: { line: 1, column: 36 }
  19034. }
  19035. },
  19036. value: {
  19037. type: 'FunctionExpression',
  19038. id: null,
  19039. params: [],
  19040. defaults: [],
  19041. body: {
  19042. type: 'BlockStatement',
  19043. body: [],
  19044. range: [39, 41],
  19045. loc: {
  19046. start: { line: 1, column: 39 },
  19047. end: { line: 1, column: 41 }
  19048. }
  19049. },
  19050. rest: null,
  19051. generator: false,
  19052. expression: false,
  19053. range: [39, 41],
  19054. loc: {
  19055. start: { line: 1, column: 39 },
  19056. end: { line: 1, column: 41 }
  19057. }
  19058. },
  19059. kind: 'get',
  19060. range: [31, 41],
  19061. loc: {
  19062. start: { line: 1, column: 31 },
  19063. end: { line: 1, column: 41 }
  19064. }
  19065. }],
  19066. range: [22, 43],
  19067. loc: {
  19068. start: { line: 1, column: 22 },
  19069. end: { line: 1, column: 43 }
  19070. }
  19071. },
  19072. range: [18, 43],
  19073. loc: {
  19074. start: { line: 1, column: 18 },
  19075. end: { line: 1, column: 43 }
  19076. }
  19077. }],
  19078. kind: 'var',
  19079. range: [14, 43],
  19080. loc: {
  19081. start: { line: 1, column: 14 },
  19082. end: { line: 1, column: 43 }
  19083. }
  19084. }],
  19085. range: [0, 43],
  19086. loc: {
  19087. start: { line: 1, column: 0 },
  19088. end: { line: 1, column: 43 }
  19089. },
  19090. errors: [{
  19091. index: 41,
  19092. lineNumber: 1,
  19093. column: 42,
  19094. message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
  19095. }]
  19096. },
  19097. '"use strict"; var x = { set i(x) {}, i: 42 }': {
  19098. type: 'Program',
  19099. body: [{
  19100. type: 'ExpressionStatement',
  19101. expression: {
  19102. type: 'Literal',
  19103. value: 'use strict',
  19104. raw: '"use strict"',
  19105. range: [0, 12],
  19106. loc: {
  19107. start: { line: 1, column: 0 },
  19108. end: { line: 1, column: 12 }
  19109. }
  19110. },
  19111. range: [0, 13],
  19112. loc: {
  19113. start: { line: 1, column: 0 },
  19114. end: { line: 1, column: 13 }
  19115. }
  19116. }, {
  19117. type: 'VariableDeclaration',
  19118. declarations: [{
  19119. type: 'VariableDeclarator',
  19120. id: {
  19121. type: 'Identifier',
  19122. name: 'x',
  19123. range: [18, 19],
  19124. loc: {
  19125. start: { line: 1, column: 18 },
  19126. end: { line: 1, column: 19 }
  19127. }
  19128. },
  19129. init: {
  19130. type: 'ObjectExpression',
  19131. properties: [{
  19132. type: 'Property',
  19133. key: {
  19134. type: 'Identifier',
  19135. name: 'i',
  19136. range: [28, 29],
  19137. loc: {
  19138. start: { line: 1, column: 28 },
  19139. end: { line: 1, column: 29 }
  19140. }
  19141. },
  19142. value: {
  19143. type: 'FunctionExpression',
  19144. id: null,
  19145. params: [{
  19146. type: 'Identifier',
  19147. name: 'x',
  19148. range: [30, 31],
  19149. loc: {
  19150. start: { line: 1, column: 30 },
  19151. end: { line: 1, column: 31 }
  19152. }
  19153. }],
  19154. defaults: [],
  19155. body: {
  19156. type: 'BlockStatement',
  19157. body: [],
  19158. range: [33, 35],
  19159. loc: {
  19160. start: { line: 1, column: 33 },
  19161. end: { line: 1, column: 35 }
  19162. }
  19163. },
  19164. rest: null,
  19165. generator: false,
  19166. expression: false,
  19167. range: [33, 35],
  19168. loc: {
  19169. start: { line: 1, column: 33 },
  19170. end: { line: 1, column: 35 }
  19171. }
  19172. },
  19173. kind: 'set',
  19174. range: [24, 35],
  19175. loc: {
  19176. start: { line: 1, column: 24 },
  19177. end: { line: 1, column: 35 }
  19178. }
  19179. }, {
  19180. type: 'Property',
  19181. key: {
  19182. type: 'Identifier',
  19183. name: 'i',
  19184. range: [37, 38],
  19185. loc: {
  19186. start: { line: 1, column: 37 },
  19187. end: { line: 1, column: 38 }
  19188. }
  19189. },
  19190. value: {
  19191. type: 'Literal',
  19192. value: 42,
  19193. raw: '42',
  19194. range: [40, 42],
  19195. loc: {
  19196. start: { line: 1, column: 40 },
  19197. end: { line: 1, column: 42 }
  19198. }
  19199. },
  19200. kind: 'init',
  19201. range: [37, 42],
  19202. loc: {
  19203. start: { line: 1, column: 37 },
  19204. end: { line: 1, column: 42 }
  19205. }
  19206. }],
  19207. range: [22, 44],
  19208. loc: {
  19209. start: { line: 1, column: 22 },
  19210. end: { line: 1, column: 44 }
  19211. }
  19212. },
  19213. range: [18, 44],
  19214. loc: {
  19215. start: { line: 1, column: 18 },
  19216. end: { line: 1, column: 44 }
  19217. }
  19218. }],
  19219. kind: 'var',
  19220. range: [14, 44],
  19221. loc: {
  19222. start: { line: 1, column: 14 },
  19223. end: { line: 1, column: 44 }
  19224. }
  19225. }],
  19226. range: [0, 44],
  19227. loc: {
  19228. start: { line: 1, column: 0 },
  19229. end: { line: 1, column: 44 }
  19230. },
  19231. errors: [{
  19232. index: 42,
  19233. lineNumber: 1,
  19234. column: 43,
  19235. message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
  19236. }]
  19237. },
  19238. '({ set s() { } })': {
  19239. type: 'Program',
  19240. body: [{
  19241. type: 'ExpressionStatement',
  19242. expression: {
  19243. type: 'ObjectExpression',
  19244. properties: [{
  19245. type: 'Property',
  19246. key: {
  19247. type: 'Identifier',
  19248. name: 's',
  19249. range: [7, 8],
  19250. loc: {
  19251. start: { line: 1, column: 7 },
  19252. end: { line: 1, column: 8 }
  19253. }
  19254. },
  19255. value: {
  19256. type: 'FunctionExpression',
  19257. id: null,
  19258. params: [],
  19259. defaults: [],
  19260. body: {
  19261. type: 'BlockStatement',
  19262. body: [],
  19263. range: [11, 14],
  19264. loc: {
  19265. start: { line: 1, column: 11 },
  19266. end: { line: 1, column: 14 }
  19267. }
  19268. },
  19269. rest: null,
  19270. generator: false,
  19271. expression: false,
  19272. range: [11, 14],
  19273. loc: {
  19274. start: { line: 1, column: 11 },
  19275. end: { line: 1, column: 14 }
  19276. }
  19277. },
  19278. kind: 'set',
  19279. range: [3, 14],
  19280. loc: {
  19281. start: { line: 1, column: 3 },
  19282. end: { line: 1, column: 14 }
  19283. }
  19284. }],
  19285. range: [1, 16],
  19286. loc: {
  19287. start: { line: 1, column: 1 },
  19288. end: { line: 1, column: 16 }
  19289. }
  19290. },
  19291. range: [0, 17],
  19292. loc: {
  19293. start: { line: 1, column: 0 },
  19294. end: { line: 1, column: 17 }
  19295. }
  19296. }],
  19297. range: [0, 17],
  19298. loc: {
  19299. start: { line: 1, column: 0 },
  19300. end: { line: 1, column: 17 }
  19301. },
  19302. errors: [{
  19303. index: 9,
  19304. lineNumber: 1,
  19305. column: 10,
  19306. message: 'Error: Line 1: Unexpected token )'
  19307. }]
  19308. },
  19309. 'foo("bar") = baz': {
  19310. type: 'Program',
  19311. body: [{
  19312. type: 'ExpressionStatement',
  19313. expression: {
  19314. type: 'AssignmentExpression',
  19315. operator: '=',
  19316. left: {
  19317. type: 'CallExpression',
  19318. callee: {
  19319. type: 'Identifier',
  19320. name: 'foo',
  19321. range: [0, 3],
  19322. loc: {
  19323. start: { line: 1, column: 0 },
  19324. end: { line: 1, column: 3 }
  19325. }
  19326. },
  19327. 'arguments': [{
  19328. type: 'Literal',
  19329. value: 'bar',
  19330. raw: '"bar"',
  19331. range: [4, 9],
  19332. loc: {
  19333. start: { line: 1, column: 4 },
  19334. end: { line: 1, column: 9 }
  19335. }
  19336. }],
  19337. range: [0, 10],
  19338. loc: {
  19339. start: { line: 1, column: 0 },
  19340. end: { line: 1, column: 10 }
  19341. }
  19342. },
  19343. right: {
  19344. type: 'Identifier',
  19345. name: 'baz',
  19346. range: [13, 16],
  19347. loc: {
  19348. start: { line: 1, column: 13 },
  19349. end: { line: 1, column: 16 }
  19350. }
  19351. },
  19352. range: [0, 16],
  19353. loc: {
  19354. start: { line: 1, column: 0 },
  19355. end: { line: 1, column: 16 }
  19356. }
  19357. },
  19358. range: [0, 16],
  19359. loc: {
  19360. start: { line: 1, column: 0 },
  19361. end: { line: 1, column: 16 }
  19362. }
  19363. }],
  19364. range: [0, 16],
  19365. loc: {
  19366. start: { line: 1, column: 0 },
  19367. end: { line: 1, column: 16 }
  19368. },
  19369. errors: [{
  19370. index: 10,
  19371. lineNumber: 1,
  19372. column: 11,
  19373. message: 'Error: Line 1: Invalid left-hand side in assignment'
  19374. }]
  19375. },
  19376. '1 = 2': {
  19377. type: 'Program',
  19378. body: [{
  19379. type: 'ExpressionStatement',
  19380. expression: {
  19381. type: 'AssignmentExpression',
  19382. operator: '=',
  19383. left: {
  19384. type: 'Literal',
  19385. value: 1,
  19386. raw: '1',
  19387. range: [0, 1],
  19388. loc: {
  19389. start: { line: 1, column: 0 },
  19390. end: { line: 1, column: 1 }
  19391. }
  19392. },
  19393. right: {
  19394. type: 'Literal',
  19395. value: 2,
  19396. raw: '2',
  19397. range: [4, 5],
  19398. loc: {
  19399. start: { line: 1, column: 4 },
  19400. end: { line: 1, column: 5 }
  19401. }
  19402. },
  19403. range: [0, 5],
  19404. loc: {
  19405. start: { line: 1, column: 0 },
  19406. end: { line: 1, column: 5 }
  19407. }
  19408. },
  19409. range: [0, 5],
  19410. loc: {
  19411. start: { line: 1, column: 0 },
  19412. end: { line: 1, column: 5 }
  19413. }
  19414. }],
  19415. range: [0, 5],
  19416. loc: {
  19417. start: { line: 1, column: 0 },
  19418. end: { line: 1, column: 5 }
  19419. },
  19420. errors: [{
  19421. index: 1,
  19422. lineNumber: 1,
  19423. column: 2,
  19424. message: 'Error: Line 1: Invalid left-hand side in assignment'
  19425. }]
  19426. },
  19427. '3++': {
  19428. type: 'Program',
  19429. body: [{
  19430. type: 'ExpressionStatement',
  19431. expression: {
  19432. type: 'UpdateExpression',
  19433. operator: '++',
  19434. argument: {
  19435. type: 'Literal',
  19436. value: 3,
  19437. raw: '3',
  19438. range: [0, 1],
  19439. loc: {
  19440. start: { line: 1, column: 0 },
  19441. end: { line: 1, column: 1 }
  19442. }
  19443. },
  19444. prefix: false,
  19445. range: [0, 3],
  19446. loc: {
  19447. start: { line: 1, column: 0 },
  19448. end: { line: 1, column: 3 }
  19449. }
  19450. },
  19451. range: [0, 3],
  19452. loc: {
  19453. start: { line: 1, column: 0 },
  19454. end: { line: 1, column: 3 }
  19455. }
  19456. }],
  19457. range: [0, 3],
  19458. loc: {
  19459. start: { line: 1, column: 0 },
  19460. end: { line: 1, column: 3 }
  19461. },
  19462. errors: [{
  19463. index: 1,
  19464. lineNumber: 1,
  19465. column: 2,
  19466. message: 'Error: Line 1: Invalid left-hand side in assignment'
  19467. }]
  19468. },
  19469. '--4': {
  19470. type: 'Program',
  19471. body: [{
  19472. type: 'ExpressionStatement',
  19473. expression: {
  19474. type: 'UpdateExpression',
  19475. operator: '--',
  19476. argument: {
  19477. type: 'Literal',
  19478. value: 4,
  19479. raw: '4',
  19480. range: [2, 3],
  19481. loc: {
  19482. start: { line: 1, column: 2 },
  19483. end: { line: 1, column: 3 }
  19484. }
  19485. },
  19486. prefix: true,
  19487. range: [0, 3],
  19488. loc: {
  19489. start: { line: 1, column: 0 },
  19490. end: { line: 1, column: 3 }
  19491. }
  19492. },
  19493. range: [0, 3],
  19494. loc: {
  19495. start: { line: 1, column: 0 },
  19496. end: { line: 1, column: 3 }
  19497. }
  19498. }],
  19499. range: [0, 3],
  19500. loc: {
  19501. start: { line: 1, column: 0 },
  19502. end: { line: 1, column: 3 }
  19503. },
  19504. errors: [{
  19505. index: 3,
  19506. lineNumber: 1,
  19507. column: 4,
  19508. message: 'Error: Line 1: Invalid left-hand side in assignment'
  19509. }]
  19510. },
  19511. 'for (5 in []) {}': {
  19512. type: 'Program',
  19513. body: [{
  19514. type: 'ForInStatement',
  19515. left: {
  19516. type: 'Literal',
  19517. value: 5,
  19518. raw: '5',
  19519. range: [5, 6],
  19520. loc: {
  19521. start: { line: 1, column: 5 },
  19522. end: { line: 1, column: 6 }
  19523. }
  19524. },
  19525. right: {
  19526. type: 'ArrayExpression',
  19527. elements: [],
  19528. range: [10, 12],
  19529. loc: {
  19530. start: { line: 1, column: 10 },
  19531. end: { line: 1, column: 12 }
  19532. }
  19533. },
  19534. body: {
  19535. type: 'BlockStatement',
  19536. body: [],
  19537. range: [14, 16],
  19538. loc: {
  19539. start: { line: 1, column: 14 },
  19540. end: { line: 1, column: 16 }
  19541. }
  19542. },
  19543. each: false,
  19544. range: [0, 16],
  19545. loc: {
  19546. start: { line: 1, column: 0 },
  19547. end: { line: 1, column: 16 }
  19548. }
  19549. }],
  19550. range: [0, 16],
  19551. loc: {
  19552. start: { line: 1, column: 0 },
  19553. end: { line: 1, column: 16 }
  19554. },
  19555. errors: [{
  19556. index: 6,
  19557. lineNumber: 1,
  19558. column: 7,
  19559. message: 'Error: Line 1: Invalid left-hand side in for-in'
  19560. }]
  19561. }
  19562. }
  19563. };