package Ġcom . ap ol log raph ql . apollo . compiler . parser Ċ Ċ import Ġcom . ap ol log raph ql . apollo . compiler . ir . Source Location Ċ import Ġorg . antlr . v 4 . runtime . Token Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ Ċ internal Ġclass ĠParseException ( message : ĠString , Ġval Ġsource Location : ĠSource Location ) Ġ: ĠRuntimeException ( message ) Ġ{ ĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġoperator Ġfun Ġinvoke ( message : ĠString , Ġtoken : ĠToken ) Ġ= ĠParseException ( ĊĠĠĠĠĠĠĠ Ġmessage Ġ= Ġmessage , ĊĠĠĠĠĠĠĠ Ġsource Location Ġ= ĠSource Location ( token ) ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠGraphQL ParseException ( message : ĠString ) Ġ: ĠRuntimeException ( message ) Ġ{ ĊĠ Ġoverride Ġfun Ġfill In StackTrace (): ĠThrowable Ġ= Ġthis Ċ } Ċ Ċ internal Ġclass ĠGraphQL Document ParseException ( ĊĠĠĠ Ġmessage : ĠString , ĊĠĠĠ Ġsource Location : ĠSource Location , ĊĠĠĠ Ġgraph QL FilePath : ĠString Ċ ) Ġ: ĠRuntimeException ( preview ( ĊĠĠĠ Ġmessage Ġ= Ġmessage , ĊĠĠĠ Ġsource Location Ġ= Ġsource Location , ĊĠĠĠ Ġgraph QL FilePath Ġ= Ġgraph QL FilePath Ċ )) Ġ{ ĊĊĠ Ġoverride Ġfun Ġfill In StackTrace (): ĠThrowable Ġ= Ġthis ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġoperator Ġfun Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġmessage : ĠString , ĊĠĠĠĠĠĠĠ Ġtoken : ĠToken , ĊĠĠĠĠĠĠĠ Ġgraph QL FilePath : ĠString ĊĠĠĠ Ġ) Ġ= ĠGraphQL Document ParseException ( ĊĠĠĠĠĠĠĠ Ġmessage Ġ= Ġmessage , ĊĠĠĠĠĠĠĠ Ġsource Location Ġ= ĠSource Location ( token ), ĊĠĠĠĠĠĠĠ Ġgraph QL FilePath Ġ= Ġgraph QL FilePath ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoperator Ġfun Ġinvoke ( ĊĠĠĠĠĠĠĠ Ġparse Exception : ĠParseException , ĊĠĠĠĠĠĠĠ Ġgraph QL FilePath : ĠString ĊĠĠĠ Ġ) Ġ= ĠGraphQL Document ParseException ( ĊĠĠĠĠĠĠĠ Ġmessage Ġ= Ġparse Exception . message !! , ĊĠĠĠĠĠĠĠ Ġsource Location Ġ= Ġparse Exception . source Location , ĊĠĠĠĠĠĠĠ Ġgraph QL FilePath Ġ= Ġgraph QL FilePath ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġpreview ( message : ĠString , Ġsource Location : ĠSource Location , Ġgraph QL FilePath : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠ Ġval Ġdocument Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠFile ( graph QL FilePath ). read Text () ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Failed Ġto Ġread ĠGraphQL Ġfile Ġ`$ this `", Ġe ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġif Ġ( source Location Ġ== ĠSource Location . UNKNOWN ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"\ n Failed Ġto Ġparse ĠGraphQL Ġfile Ġ$ graph QL FilePath :\ n $ message " ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġval Ġdocument Lines Ġ= Ġdocument . lines () ĊĠĠĠĠĠ Ġreturn Ġ"\ n Failed Ġto Ġparse ĠGraphQL Ġfile Ġ$ graph QL FilePath Ġ${ source Location }\ n $ message " Ġ+ ĊĠĠĠĠĠĠĠĠĠ Ġ"\ n ------------------------------------------------ ---- \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠ Ġkotlin . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= Ġif Ġ( source Location . line Ġ- Ġ 2 Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ ${ source Location . line Ġ- Ġ 1 }] :" Ġ+ Ġdocument Lines [ source Location . line Ġ- Ġ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġif Ġ( source Location . line Ġ- Ġ 1 Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n [ ${ source Location . line } ]: ${ document Lines [ source Location . line Ġ- Ġ 1 ] }\ n " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpostfix Ġ= Ġif Ġ( source Location . line Ġ< Ġdocument Lines . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ ${ source Location . line Ġ+ Ġ 1 }] :" Ġ+ Ġdocument Lines [ source Location . line ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ prefix $ body $ postfix " ĊĠĠĠĠĠĠĠĠĠ Ġ} Ġ+ ĊĠĠĠĠĠĠĠĠĠ Ġ"\ n ------------------------------------------------ ---- " ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ