/* Ċ Ġ* Ġ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 . descriptors . Class Kind Ċ import Ġorg . jetbrains . kotlin . fir . analysis . check ers . context . Checker Context Ċ import Ġorg . jetbrains . kotlin . fir . analysis . check ers . to Regular Class Symbol Ċ import Ġorg . jetbrains . kotlin . fir . analysis . diagnostics . Diagnostic Reporter Ċ import Ġorg . jetbrains . kotlin . fir . analysis . diagnostics . F ir Errors Ċ import Ġorg . jetbrains . kotlin . fir . analysis . diagnostics . report On Ċ import Ġorg . jetbrains . kotlin . fir . declarations . F ir Regular Class Ċ import Ġorg . jetbrains . kotlin . fir . declarations . utils . is Abstract Ċ import Ġorg . jetbrains . kotlin . fir . expressions . F ir Annotation Call Ċ import Ġorg . jetbrains . kotlin . fir . expressions . F ir Function Call Ċ import Ġorg . jetbrains . kotlin . fir . references . F ir Resolved Named Reference Ċ import Ġorg . jetbrains . kotlin . fir . symbols . impl . F ir Constructor Symbol Ċ import Ġorg . jetbrains . kotlin . fir . types . cone Type Ċ Ċ object ĠF ir Constructor Call Checker Ġ: ĠF ir Function Call Checker () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcheck ( expression : ĠF ir Function Call , Ġcontext : ĠCheck er Context , Ġreporter : ĠDiagnostic Reporter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconstructor Symbol Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( expression . callee Reference Ġas ? ĠF ir Resolved Named Reference )?. resolved Symbol Ġas ? ĠF ir Constructor Symbol Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġdeclaration Class Ġ= Ġconstructor Symbol . resolved ReturnType Ref . cone Type . to Regular Class Symbol ( context . session ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( declaration Class Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( declaration Class . is Abstract Ġ&& Ġdeclaration Class . class Kind Ġ== ĠClass Kind . CLASS ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreporter . report On ( expression . source , ĠF ir Errors . CRE ATING _ AN _ INSTANCE _ OF _ AB STR ACT _ CLASS , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( declaration Class . class Kind Ġ== ĠClass Kind . AN NOT ATION _ CLASS Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . qualified Access Or Annotation Calls . all Ġ{ Ġcall Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Ġ! is ĠF ir Annotation Call ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . containing Declarations . all Ġ{ Ġklass Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġklass Ġ! is ĠF ir Regular Class Ġ|| Ġklass . class Kind Ġ!= ĠClass Kind . AN NOT ATION _ CLASS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreporter . report On ( expression . source , ĠF ir Errors . AN NOT ATION _ CLASS _ CON STRUCTOR _ CALL , Ġcontext ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ