/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . Ġ ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "). Ċ Ġ* Ġ ĠYou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠA Ġcopy Ġof Ġthe ĠLicense Ġis Ġlocated Ġat : Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// aws . amazon . com / apache 2 . 0 / Ċ Ġ* Ċ Ġ* Ġ Ġor Ġin Ġthe Ġ" license " Ġfile Ġaccompanying Ġthis Ġfile . ĠThis Ġfile Ġ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 Ġorg . part i ql . lang . eval Ċ Ċ import Ġorg . part i ql . lang .* Ċ import Ġorg . part i ql . lang . ast .* Ċ import Ġorg . part i ql . lang . errors .* Ċ import Ġorg . part i ql . lang . util .* Ċ Ċ /** ĠError Ġfor Ġevaluation Ġproblems . Ġ*/ Ċ open Ġclass ĠEvaluation Exception ( message : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode : ĠErrorCode ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Context : ĠProperty Value Map ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcause : ĠThrowable ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinternal : ĠBoolean ) Ġ: ĠSql Exception ( message , ĠerrorCode , Ġerror Context , Ġcause ) Ġ{ ĊĊĠĠĠ Ġ// Ġnot Ġadding Ġas Ġa Ġdefault Ġvalue Ġfor Ġ` internal ` Ġso Ġit 's Ġbackward Ġcompatible Ġwith ĠJava Ġclients ĊĠĠĠ Ġconstructor ( message : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode : ĠErrorCode ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Context : ĠProperty Value Map ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcause : ĠThrowable ? Ġ= Ġnull ) Ġ: Ġthis ( message Ġ= Ġmessage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode Ġ= ĠerrorCode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Context Ġ= Ġerror Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcause Ġ= Ġcause ) ĊĊĠĠĠ Ġconstructor ( cause : ĠThrowable , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode : ĠErrorCode ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Context : ĠProperty Value Map ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal : ĠBoolean Ġ= Ġtrue ) Ġ: Ġthis ( message Ġ= Ġcause . message Ġ?: Ġ"< NO ĠMESSAGE >", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode Ġ= ĠerrorCode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Context Ġ= Ġerror Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġ= Ġinternal , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcause Ġ= Ġcause ) Ċ } Ċ Ċ /** Ċ Ġ* ĠSh orthand Ġfor Ġthrowing Ġfunction Ġevaluation . ĠSepar ated Ġfrom Ġ[ err ] Ġto Ġavoid Ġlo osing Ġthe Ġcontext Ġun int ention ally Ċ Ġ*/ Ċ internal Ġfun Ġerr No Context ( message : ĠString , Ġinternal : ĠBoolean ): ĠNothing Ġ= Ġerr ( message , Ġnull , Ġinternal ) Ċ Ċ /** ĠSh orthand Ġfor Ġthrowing Ġevaluation Ġwith Ġcontext . Ġ*/ Ċ internal Ġfun Ġerr ( message : ĠString , Ġerror Context : ĠProperty Value Map ?, Ġinternal : ĠBoolean ): ĠNothing Ġ= ĊĠĠĠ Ġthrow ĠEvaluation Exception ( message , Ġerror Context Ġ= Ġerror Context , Ġinternal Ġ= Ġinternal ) Ċ Ċ /** ĠSh orthand Ġfor Ġthrowing Ġevaluation Ġwith Ġcontext Ġwith Ġan Ġerror Ġcode .. Ġ*/ Ċ internal Ġfun Ġerr ( message : ĠString , ĠerrorCode : ĠErrorCode , Ġerror Context : ĠProperty Value Map ?, Ġinternal : ĠBoolean ): ĠNothing Ġ= ĊĠĠĠ Ġthrow ĠEvaluation Exception ( message , ĠerrorCode , Ġerror Context , Ġinternal Ġ= Ġinternal ) Ċ Ċ internal Ġfun Ġerr IntOverflow ( error Context : ĠProperty Value Map ? Ġ= Ġnull ): ĠNothing Ġ{ ĊĠĠĠ Ġthrow ĠEvaluation Exception ( message Ġ= Ġ" Int Ġoverflow Ġor Ġunder flow ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode Ġ= ĠErrorCode . EVAL U ATOR _ INTEGER _ OVER FLOW , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Context Ġ= Ġerror Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġ= Ġfalse ) Ċ } Ċ Ċ fun Ġerror Context From ( location : ĠSource Location Meta ?): ĠProperty Value Map Ġ{ ĊĠĠĠ Ġval Ġerror Context Ġ= ĠProperty Value Map () ĊĠĠĠ Ġif ( location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfill Error Context ( error Context , Ġlocation ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġerror Context Ċ } Ċ Ċ fun Ġfill Error Context ( error Context : ĠProperty Value Map , Ġlocation : ĠSource Location Meta ?) Ġ{ ĊĠĠĠ Ġif ( location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġerror Context [ Property . LINE _ NUMBER ] Ġ= Ġlocation . lineNum ĊĠĠĠĠĠĠĠ Ġerror Context [ Property . COLUMN _ NUMBER ] Ġ= Ġlocation . char Offset ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġfill Error Context ( error Context : ĠProperty Value Map , Ġmeta Container : ĠMeta Container ) Ġ{ ĊĠĠĠ Ġval Ġlocation Ġ= Ġmeta Container . find ( Source Location Meta . TAG ) Ġas ? ĠSource Location Meta ĊĠĠĠ Ġif ( location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfill Error Context ( error Context , Ġlocation ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġerror Context From ( meta Container : ĠMeta Container ?): ĠProperty Value Map Ġ{ ĊĠĠĠ Ġif ( meta Container Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠProperty Value Map () ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġlocation Ġ= Ġmeta Container . find ( Source Location Meta . TAG ) Ġas ? ĠSource Location Meta ĊĠĠĠ Ġreturn Ġif ( location Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġerror Context From ( location ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠProperty Value Map () ĊĠĠĠ Ġ} Ċ }