/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 ĠR ick ĠBus ar ow Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġt angle . inject . compiler . components Ċ Ċ import Ġcom . squareup . an vil . compiler . internal . as ClassName Ċ import Ġcom . squareup . an vil . compiler . internal . require Fq Name Ċ import Ġcom . squareup . an vil . compiler . internal . safe Package String Ċ import Ġcom . squareup . kotlin po et . Annotation Spec Ċ import Ġcom . squareup . kotlin po et . ClassName Ċ import Ġorg . jetbrains . kotlin . descriptors . Module Descriptor Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Ċ import Ġorg . jetbrains . kotlin . psi . Kt Class Or Object Ċ import Ġt angle . inject . compiler . Annotation Spec Ċ import Ġt angle . inject . compiler . ClassNames Ċ import Ġt angle . inject . compiler . generate Simple Name String Ċ Ċ data Ġclass ĠMerge Component Params ( ĊĠ Ġval Ġmodule : ĠModule Descriptor , ĊĠ Ġval ĠpackageName : ĠString , ĊĠ Ġval Ġscope Fq Name : ĠF q Name , ĊĠ Ġval Ġscope ClassName : ĠClass Name , ĊĠ Ġval Ġcomponent Class : ĠK t Class Or Object , ĊĠ Ġval Ġcomponent ClassName : ĠClass Name , ĊĠ Ġval Ġprovider Component ClassName : ĠClass Name , ĊĠ Ġval Ġmember Inject To Scope Map Provider Sub component ClassName : ĠClass Name , ĊĠ Ġval Ġmerge Component T angle Injector Module ClassName : ĠClass Name , ĊĠ Ġval Ġscope To Component Module ClassName : ĠClass Name , ĊĠ Ġval Ġoriginal Component ClassName : ĠClass Name , ĊĠ Ġval Ġscope Qualifier : ĠAnnotation Spec , ĊĠ Ġval Ġfor Sub component : ĠBoolean Ċ ) Ġ{ ĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġfun Ġcreate ( ĊĠĠĠĠĠ Ġmodule : ĠModule Descriptor , ĊĠĠĠĠĠ Ġscope Fq Name : ĠF q Name , ĊĠĠĠĠĠ Ġclazz : ĠK t Class Or Object , ĊĠĠĠĠĠ Ġfor Sub component : ĠBoolean ĊĠĠĠ Ġ): ĠMerge Component Params Ġ{ ĊĊĠĠĠĠĠ Ġval ĠpackageName Ġ= Ġclazz . containing Kt File . package Fq Name . safe Package String () ĊĊĠĠĠĠĠ Ġval Ġscope ClassName Ġ= Ġscope Fq Name . as ClassName ( module ) ĊĊĠĠĠĠĠ Ġval Ġlocal Scope Ġ= Ġscope ClassName . generate Simple Name String () ĊĊĠĠĠĠĠ Ġval Ġcomponent ClassName Ġ= ĊĠĠĠĠĠĠĠ ĠClass Name ( packageName , Ġ"${ local Scope }_ T angle Injector Component ") ĊĠĠĠĠĠ Ġval Ġprovider Component ClassName Ġ= ĊĠĠĠĠĠĠĠ ĠClass Name ( packageName , Ġ"${ local Scope }_ T angle Scope Map Provider Component ") ĊĊĠĠĠĠĠ Ġval Ġscope Qualifier Ġ= ĠAnnotation Spec ( ClassNames . named ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Member ("% S ", Ġ"${ clazz . require Fq Name (). asString ()} -- ${ scope ClassName . canonical Name }") ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġval Ġt angle App Scope Ġ= ĠClass Names . t angle App Scope . generate Simple Name String () ĊĊĠĠĠĠĠ Ġval Ġmember Inject To Scope Map Provider ClassName Ġ= ĠClass Name ( ĊĠĠĠĠĠĠĠ ĠpackageName , Ġ"${ t angle App Scope }_ T angle Scope Map Provider _ Sub component " ĊĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠ Ġval Ġmerge Component T angle Injector Module ClassName Ġ= ĠClass Name ( ĊĠĠĠĠĠĠĠ ĠpackageName , Ġ"${ local Scope }_ T angle _ T angle Injector _ Module " ĊĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠ Ġval Ġoriginal Component Name Ġ= Ġclazz . require Fq Name () ĊĠĠĠĠĠ Ġval Ġoriginal Component ClassName Ġ= Ġoriginal Component Name . as ClassName ( module ) ĊĊĠĠĠĠĠ Ġval Ġscope To Component ModuleName Ġ= Ġ"${ local Scope }_ to _ Component _ Module " ĊĠĠĠĠĠ Ġval Ġscope To Component Module ClassName Ġ= ĠClass Name ( packageName , Ġscope To Component ModuleName ) ĊĊĠĠĠĠĠ Ġreturn ĠMerge Component Params ( ĊĠĠĠĠĠĠĠ Ġmodule Ġ= Ġmodule , ĊĠĠĠĠĠĠĠ ĠpackageName Ġ= ĠpackageName , ĊĠĠĠĠĠĠĠ Ġscope Fq Name Ġ= Ġscope Fq Name , ĊĠĠĠĠĠĠĠ Ġscope ClassName Ġ= Ġscope ClassName , ĊĠĠĠĠĠĠĠ Ġcomponent Class Ġ= Ġclazz , ĊĠĠĠĠĠĠĠ Ġcomponent ClassName Ġ= Ġcomponent ClassName , ĊĠĠĠĠĠĠĠ Ġprovider Component ClassName Ġ= Ġprovider Component ClassName , ĊĠĠĠĠĠĠĠ Ġmember Inject To Scope Map Provider Sub component ClassName Ġ= Ġmember Inject To Scope Map Provider ClassName , ĊĠĠĠĠĠĠĠ Ġmerge Component T angle Injector Module ClassName Ġ= Ġmerge Component T angle Injector Module ClassName , ĊĠĠĠĠĠĠĠ Ġscope To Component Module ClassName Ġ= Ġscope To Component Module ClassName , ĊĠĠĠĠĠĠĠ Ġoriginal Component ClassName Ġ= Ġoriginal Component ClassName , ĊĠĠĠĠĠĠĠ Ġscope Qualifier Ġ= Ġscope Qualifier , ĊĠĠĠĠĠĠĠ Ġfor Sub component Ġ= Ġfor Sub component ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ