/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 1 Ġ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 . fir . analysis . check ers . expression Ċ Ċ import Ġorg . jetbrains . kotlin . fir . analysis . check ers . context . Checker Context Ċ import Ġorg . jetbrains . kotlin . diagnostics . Diagnostic Reporter Ċ import Ġorg . jetbrains . kotlin . fir . analysis . diagnostics . F ir Errors Ċ import Ġorg . jetbrains . kotlin . diagnostics . report On Ċ import Ġorg . jetbrains . kotlin . fir . expressions . F ir Const Expression Ċ import Ġorg . jetbrains . kotlin . fir . expressions . F ir Function Call Ċ import Ġorg . jetbrains . kotlin . fir . expressions . arguments Ċ import Ġorg . jetbrains . kotlin . fir . references . F ir Resolved Named Reference Ċ import Ġorg . jetbrains . kotlin . fir . symbols . impl . F ir Named Function Symbol Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Ċ import Ġorg . jetbrains . kotlin . name . Name Ċ Ċ object ĠF ir Division By Zero Checker Ġ: ĠF ir Function Call Checker () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġdefault PackageName Ġ= ĠF q Name (" kotlin ") ĊĠĠĠ Ġprivate Ġval Ġdefault Div Name Ġ= ĠName . identifier (" div ") ĊĊĠĠĠ Ġoverride Ġfun Ġcheck ( expression : ĠF ir Function Call , Ġcontext : ĠCheck er Context , Ġreporter : ĠDiagnostic Reporter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Value Ġ= Ġ( expression . arguments . single OrNull () Ġas ? ĠF ir Const Expression <* >) ?. value ĊĠĠĠĠĠĠĠ Ġif Ġ( first Value Ġ!= Ġnull Ġ&& Ġ( first Value Ġ== Ġ 0 L Ġ|| Ġfirst Value Ġ== Ġ 0 . 0 f Ġ|| Ġfirst Value Ġ== Ġ 0 . 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcallable Id Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ(( expression . callee Reference Ġas ? ĠF ir Resolved Named Reference )?. resolved Symbol Ġas ? ĠF ir Named Function Symbol )?. callable Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( callable Id Ġ!= Ġnull Ġ&& Ġcallable Id . packageName Ġ== Ġdefault PackageName Ġ&& Ġcallable Id . callable Name Ġ== Ġdefault Div Name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreporter . report On ( expression . source , ĠF ir Errors . DIV ISION _ BY _ ZERO , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }