/* Ċ Ġ* Ġ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 Ċ Ċ import Ġorg . jetbrains . kotlin . test . Target Backend Ċ import Ġorg . jetbrains . kotlin . test . directives . Code gen Test Directives Ċ import Ġorg . jetbrains . kotlin . test . directives . Code gen Test Directives . IGNORE _ BACKEND Ċ import Ġorg . jetbrains . kotlin . test . directives . Code gen Test Directives . IGNORE _ BACKEND _ FI R Ċ import Ġorg . jetbrains . kotlin . test . directives . model . Directives Container Ċ import Ġorg . jetbrains . kotlin . test . directives . model . Value Directive Ċ import Ġorg . jetbrains . kotlin . test . model . After Analysis Checker Ċ import Ġorg . jetbrains . kotlin . test . model . Frontend Kinds Ċ import Ġorg . jetbrains . kotlin . test . services . Test Module Structure Ċ import Ġorg . jetbrains . kotlin . test . services . Test Services Ċ import Ġorg . jetbrains . kotlin . test . services . module Structure Ċ import Ġorg . jetbrains . kotlin . test . util . join ToArray String Ċ Ċ class ĠBlack Box Code gen Suppress or ( test Services : ĠTest Services ) Ġ: ĠAfter Analysis Checker ( test Services ) Ġ{ ĊĠĠĠ Ġoverride Ġval Ġdirectives : ĠList < Directives Container > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠlistOf ( Code gen Test Directives ) ĊĊĠĠĠ Ġoverride Ġfun Ġsuppress IfNeeded ( failed Assertions : ĠList < AssertionError >): ĠList < AssertionError > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmodule Structure Ġ= Ġtest Services . module Structure ĊĠĠĠĠĠĠĠ Ġval Ġtarget Back ends Ġ= Ġmodule Structure . modules . map NotNull Ġ{ Ġit . target Backend Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( module Structure . modules . map Ġ{ Ġit . frontend Kind Ġ}. first ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFrontend Kinds . Classic Frontend Ġ-> Ġprocess Ignore Backend ( module Structure , ĠIG NORE _ BACKEND , Ġtarget Back ends , Ġfailed Assertions ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFrontend Kinds . FI R Ġ-> Ġprocess Ignore Backend ( module Structure , ĠIG NORE _ BACKEND _ FI R , Ġtarget Back ends , Ġfailed Assertions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfailed Assertions ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess Ignore Backend ( ĊĠĠĠĠĠĠĠ Ġmodule Structure : ĠTest Module Structure , ĊĠĠĠĠĠĠĠ Ġdirective : ĠValue Directive < Target Backend >, ĊĠĠĠĠĠĠĠ Ġtarget Back ends : ĠList < Target Backend >, ĊĠĠĠĠĠĠĠ Ġfailed Assertions : ĠList < AssertionError > ĊĠĠĠ Ġ): ĠList < AssertionError > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġignored Back ends Ġ= Ġmodule Structure . all Directives [ directive ] ĊĠĠĠĠĠĠĠ Ġif Ġ( ignored Back ends . isEmpty ()) Ġreturn Ġfailed Assertions ĊĠĠĠĠĠĠĠ Ġval Ġmatched Backend Ġ= Ġignored Back ends . intersect ( target Back ends ) ĊĠĠĠĠĠĠĠ Ġif Ġ( ignored Back ends . contains ( Target Backend . ANY )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġprocess Assertions ( failed Assertions , Ġdirective ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( matched Backend . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġprocess Assertions ( failed Assertions , Ġdirective , Ġ" for Ġ${ matched Backend . join ToArray String () }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfailed Assertions ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġprocess Assertions ( ĊĠĠĠĠĠĠĠ Ġfailed Assertions : ĠList < AssertionError >, ĊĠĠĠĠĠĠĠ Ġdirective : ĠValue Directive < Target Backend >, ĊĠĠĠĠĠĠĠ Ġadditional Message : ĠString Ġ= Ġ"" ĊĠĠĠ Ġ): ĠList < AssertionError > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( failed Assertions . isNotEmpty ()) Ġempty List () ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" L ooks Ġlike Ġthis Ġtest Ġcan Ġbe Ġun muted . ĠRemove Ġ${ directive . name } Ġdirective ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( additional Message . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( additional Message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( AssertionError ( message )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ