/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . test . backend . handlers Ċ Ċ import Ġorg . jetbrains . kotlin . diagnostics . Psi Diagnostic Utils Ċ import Ġorg . jetbrains . kotlin . diagnostics . Severity Ċ import Ġorg . jetbrains . kotlin . diagnostics . rendering . Default Error Messages Ċ import Ġorg . jetbrains . kotlin . fir . F ir Source Element Ċ import Ġorg . jetbrains . kotlin . fir . analysis . diagnostics . F ir Default Error Messages Ċ import Ġorg . jetbrains . kotlin . fir . analysis . diagnostics . F ir Diagnostic Ċ import Ġorg . jetbrains . kotlin . fir . analysis . diagnostics . F ir Diagnostic Renderer Ċ import Ġorg . jetbrains . kotlin . fir . psi Ċ import Ġorg . jetbrains . kotlin . test . directives . Code gen Test Directives Ċ import Ġorg . jetbrains . kotlin . test . directives . Code gen Test Directives . IGNORE _ FI R _ DIAG NO ST ICS Ċ import Ġorg . jetbrains . kotlin . test . directives . model . Directives Container Ċ import Ġorg . jetbrains . kotlin . test . frontend . fir . F ir Output Artifact Ċ import Ġorg . jetbrains . kotlin . test . frontend . fir . handlers . F ir Analysis Handler Ċ import Ġorg . jetbrains . kotlin . test . model . Test Module Ċ import Ġorg . jetbrains . kotlin . test . services . Test Services Ċ Ċ class ĠNo F ir Compilation Errors Handler ( test Services : ĠTest Services ) Ġ: ĠF ir Analysis Handler ( test Services ) Ġ{ ĊĠĠĠ Ġoverride Ġval Ġdirectives Containers : ĠList < Directives Container > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠlistOf ( Code gen Test Directives ) ĊĊĠĠĠ Ġoverride Ġfun Ġprocess Module ( module : ĠTest Module , Ġinfo : ĠF ir Output Artifact ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠhasError Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġignore Errors Ġ= ĠIG NORE _ FI R _ DIAG NO ST ICS Ġin Ġmodule . directives ĊĠĠĠĠĠĠĠ Ġfor Ġ(( fir File , Ġdiagnostics ) Ġin Ġinfo . fir Analyzer Facade . run Check ers ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( diagnostic Ġin Ġdiagnostics ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( diagnostic . severity Ġ== ĠSeverity . ERROR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠhasError Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! ignore Errors ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdiagnostic Text Ġ= ĠF ir Default Error Messages . get Renderer For Diagnostic ( diagnostic ). hack y Render ( diagnostic ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrange Ġ= Ġdiagnostic . text Ranges . first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Text Ġ= Ġfir File . source ?. psi ?. containing File ?. let Ġ{ Ġpsi File Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPsi Diagnostic Utils . at Location ( psi File , Ġrange ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġ"${ fir File . name }: $ range " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException ("${ diagnostic . factory . name }: Ġ$ diagnostic Text Ġat Ġ$ location Text ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! has Error Ġ&& Ġignore Errors ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassertions . fail Ġ{ Ġ" Test Ġcontains Ġ$ IGNORE _ FI R _ DIAG NO ST ICS Ġdirective Ġbut Ġno Ġerrors Ġwas Ġreported . ĠPlease Ġremove Ġdirective " Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠF ir Diagnostic Renderer <* >. hack y Render ( diagnostic : ĠF ir Diagnostic < *> ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġval Ġrenderer Ġ= Ġthis Ġas ĠF ir Diagnostic Renderer < F ir Diagnostic < F ir Source Element >> ĊĠĠĠĠĠĠĠ Ġval Ġcast ed Diagnostic Ġ= Ġdiagnostic Ġas ĠF ir Diagnostic < F ir Source Element > ĊĠĠĠĠĠĠĠ Ġreturn Ġrenderer . render ( cast ed Diagnostic ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprocess After All Modules ( some Assertion Was Failed : ĠBoolean ) Ġ{} Ċ } Ċ