package Ġgod ot . compiler . plugin Ċ Ċ import Ġcom . intellij . mock . Mock Project Ċ import Ġde . j ens k ling en berg . mp apt . common . Mp A pt Project Ċ import Ġgod ot . annotation . processor . God ot Annotation Processor Ċ import Ġorg . jetbrains . kotlin . backend . common . extensions . Ir Generation Extension Ċ import Ġorg . jetbrains . kotlin . backend . common . extensions . Ir Plugin Context Ċ import Ġorg . jetbrains . kotlin . compiler . plugin .* Ċ import Ġorg . jetbrains . kotlin . config . Compiler Configuration Ċ import Ġorg . jetbrains . kotlin . extensions . Storage Component Container Contributor Ċ import Ġorg . jetbrains . kotlin . ir . declarations . Ir Module Fragment Ċ Ċ class ĠNative Component Registrar Ġ: ĠComponent Registrar Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġregister Project Components ( project : ĠMock Project , Ġconfiguration : ĠCompiler Configuration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġenabled Ġ= ĠcheckNotNull ( configuration . get ( Compiler Plugin Const . Command line Arguments . ENABLED )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" enabled Ġparameter Ġmissing " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprocessor Ġ= ĠGod ot Annotation Processor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcheckNotNull ( configuration . get ( Compiler Plugin Const . Command line Arguments . ENTRY _ DIR _ PATH )) Ġ{ Ġ" No Ġpath Ġfor Ġgenerated Ġentry Ġfile Ġspecified " Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcheckNotNull ( configuration . get ( Compiler Plugin Const . Command line Arguments . GD NS _ DIR _ PATH )) Ġ{ Ġ" No Ġpath Ġfor Ġgenerated Ġg dns Ġfiles Ġspecified " Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcheckNotNull ( configuration . get ( Compiler Plugin Const . Command line Arguments . G DN LIB _ FILE _ PATH )) Ġ{ Ġ" No Ġpath Ġfor Ġgenerated Ġg dn lib Ġfile Ġspecified " Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠcheckNotNull ( configuration . get ( Compiler Plugin Const . Command line Arguments . CLEAN _ GENERATED _ GD NS _ FILES )) Ġ{ Ġ" No Ġclean Ġgenerated Ġg dns Ġfiles Ġoption Ġspecified " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmp apt Ġ= ĠM p A pt Project ( processor , Ġconfiguration ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠStorage Component Container Contributor . register Extension ( project , Ġmp apt ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIr Generation Extension . register Extension ( project , Ġobject Ġ: ĠIr Generation Extension Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġgenerate ( module Fragment : ĠIr Module Fragment , Ġplugin Context : ĠIr Plugin Context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocessor . binding Context Ġ= Ġplugin Context . binding Context ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmp apt . generate ( module Fragment , Ġplugin Context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠNative God ot Kotlin Compiler Plugin CommandLine Processor Ġ: ĠCommandLine Processor Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠG DNS _ DIR _ PATH _ OPTION Ġ= ĠCli Option ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Plugin Const . CommandLine Option Names . gd ns DirPath Option , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Absolute ĠPath Ġas ĠString ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Plugin Const . Command line Arguments . GD NS _ DIR _ PATH . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow Multiple Occ urrences Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval ĠG DN LIB _ FILE _ PATH _ OPTION Ġ= ĠCli Option ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Plugin Const . CommandLine Option Names . g dn lib File Option , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Absolute ĠPath Ġas ĠString ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Plugin Const . Command line Arguments . G DN LIB _ FILE _ PATH . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow Multiple Occ urrences Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval ĠEN TRY _ DIR _ PATH _ OPTION Ġ= ĠCli Option ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Plugin Const . CommandLine Option Names . entry DirPath Option , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Absolute ĠPath Ġas ĠString ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Plugin Const . Command line Arguments . ENTRY _ DIR _ PATH . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow Multiple Occ urrences Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval ĠENABLE D Ġ= ĠCli Option ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Plugin Const . CommandLine Option Names . enabled Option , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Flag Ġto Ġenable Ġentry Ġgeneration ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Plugin Const . Command line Arguments . ENABLED . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow Multiple Occ urrences Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval ĠC LEAN _ GENERATED _ GD NS _ FILES Ġ= ĠCli Option ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Plugin Const . CommandLine Option Names . clean Generated G dns Files , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Flag Ġto Ġenable Ġentry Ġgeneration ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Plugin Const . Command line Arguments . CLEAN _ GENERATED _ GD NS _ FILES . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequired Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġallow Multiple Occ urrences Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠP LU GIN _ ID Ġ= ĠCompiler Plugin Const . compiler Plugin Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġplugin Id Ġ= ĠP LU GIN _ ID ĊĠĠĠ Ġoverride Ġval Ġplugin Options Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠG DNS _ DIR _ PATH _ OPTION , ĊĠĠĠĠĠĠĠ ĠG DN LIB _ FILE _ PATH _ OPTION , ĊĠĠĠĠĠĠĠ ĠEN TRY _ DIR _ PATH _ OPTION , ĊĠĠĠĠĠĠĠ ĠENABLE D , ĊĠĠĠĠĠĠĠ ĠC LEAN _ GENERATED _ GD NS _ FILES ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġprocess Option ( option : ĠAbstract Cli Option , Ġvalue : ĠString , Ġconfiguration : ĠCompiler Configuration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( option ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG DNS _ DIR _ PATH _ OPTION Ġ-> Ġconfiguration . put ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Plugin Const . Command line Arguments . GD NS _ DIR _ PATH , Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG DN LIB _ FILE _ PATH _ OPTION Ġ-> Ġconfiguration . put ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Plugin Const . Command line Arguments . G DN LIB _ FILE _ PATH , Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEN TRY _ DIR _ PATH _ OPTION Ġ-> Ġconfiguration . put ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Plugin Const . Command line Arguments . ENTRY _ DIR _ PATH , Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠENABLE D Ġ-> Ġconfiguration . put ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Plugin Const . Command line Arguments . ENABLED , Ġvalue . to Boolean () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC LEAN _ GENERATED _ GD NS _ FILES Ġ-> Ġconfiguration . put ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCompiler Plugin Const . Command line Arguments . CLEAN _ GENERATED _ GD NS _ FILES , Ġvalue . to Boolean () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠCli Option Processing Exception (" Unknown Ġoption : Ġ${ option . option Name }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ