/* Ċ Ġ* ĠPost fix Expression . kt Ċ Ġ* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 Ġapache ju ice Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof ĠP ret zel Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġ< http :// www . apache . org / licenses / LICENSE - 2 . 0 > Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . pret zel . core . ast . expr Ċ Ċ import Ġcom . pret zel . core . analysis . Analysis Context Ċ import Ġcom . pret zel . core . ast . visit . Node Visitor Ċ import Ġcom . pret zel . core . lexer . Span Ċ import Ġcom . pret zel . core . errors . ErrorCode Ċ Ċ class ĠPost fix Expression ( operator : ĠOperator , Ġinner : ĠExpression , Ġspan : ĠSpan ) Ġ: ĠUnary Expression ( operator , Ġinner , Ġspan ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( operator Ġ! in ĠlistOf ( Operator . NOT NULL , ĠOperator . INC , ĠOperator . DEC )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( operator . name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Post fix Expression [$ inner Ġ$ meta Ġ${ operator . op }] " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< T > Ġaccept ( visitor : ĠNode Visitor < T >): ĠT Ġ= Ġvisitor . visit Post fix Expression ( this ) ĊĊĠĠĠ Ġoverride Ġfun Ġcheck ( ctx : ĠAnalysis Context ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . checked Ġ= Ġif Ġ( this . checked ) Ġreturn Ġthis . passed Ġelse Ġtrue ĊĠĠĠĠĠĠĠ Ġthis . passed Ġ= Ġinner . check ( ctx ) ĊĠĠĠĠĠĠĠ Ġif Ġ( inner . is Constant Ġ&& Ġ! operator . pure ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġctx . reporter . error ( ErrorCode . EXPECTED _ MUT ABLE _ VALUE , Ġinner . span , Ġ"' ++ ' Ġand Ġ'-- ' Ġmutate Ġthe Ġvalue ; Ġperhaps Ġyou Ġmeant Ġ'+' Ġor Ġ'-' ?") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . passed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis . passed ĊĠĠĠ Ġ} Ċ }