/* Ċ Ġ* Ġ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 . fir . analysis . check ers . expression Ċ Ċ import Ġorg . jetbrains . kotlin . Kt Node Types . CLASS Ċ import Ġorg . jetbrains . kotlin . Kt Node Types . OBJECT _ LITERAL Ċ import Ġorg . jetbrains . kotlin . fir . F ir Source Element Ċ import Ġorg . jetbrains . kotlin . fir . analysis . check ers . context . Checker Context Ċ import Ġorg . jetbrains . kotlin . fir . analysis . diagnostics . Diagnostic Reporter Ċ import Ġorg . jetbrains . kotlin . fir . analysis . diagnostics . F ir Errors Ċ import Ġorg . jetbrains . kotlin . fir . expressions . F ir Qualified Access Expression Ċ import Ġorg . jetbrains . kotlin . fir . references . F ir Super Reference Ċ import Ġorg . jetbrains . kotlin . utils . addTo Std lib . safe As Ċ Ċ object ĠF ir Super Not Available Checker Ġ: ĠF ir Qualified Access Checker () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcheck ( function Call : ĠF ir Qualified Access Expression , Ġcontext : ĠCheck er Context , Ġreporter : ĠDiagnostic Reporter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( function Call . callee Reference . safe As < F ir Super Reference >() ?. had Explicit Type In Source () Ġ!= Ġtrue ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġis Inside Class Ġ= Ġcontext . containing Declarations . any Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . source ?. elementType Ġ== ĠCLASS Ġ|| Ġit . source ?. elementType Ġ== ĠOBJECT _ LITERAL ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! is Inside Class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreporter . report ( function Call . source ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠDiagnostic Reporter . report ( source : ĠF ir Source Element ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport ( F ir Errors . SUPER _ NOT _ AVAILABLE . on ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ