/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 Ġ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 . gradle . tasks Ċ Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . plugins . Extra Properties Extension Ċ import Ġorg . gradle . api . provider . Property Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . Kotlin Compilation Ċ import Ġorg . jetbrains . kotlin . gradle . plugin . mpp . Abstract Kotlin Compilation Ċ import Ġorg . jetbrains . kotlin . gradle . utils . getValue Ċ import Ġjava . io . File Ċ Ċ internal Ġopen Ġclass ĠKotlin Compile Task Data ( ĊĠĠĠ Ġval Ġtask Name : ĠString , ĊĠĠĠ Ġ@ field : Transient Ġ// Ġcannot Ġbe Ġserialized Ġfor ĠGradle ĠInstant ĠExecution , Ġbut Ġactually Ġis Ġnot Ġneeded Ġwhen Ġa Ġtask Ġis Ġdeserialized ĊĠĠĠ Ġval Ġcompilation : ĠKotlin Compilation <* >, ĊĠĠĠ Ġval Ġdestination Dir : ĠProperty < File >, ĊĠĠĠ Ġval Ġuse Module Detection : ĠProperty < Boolean > Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġproject : ĠProject ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcompilation . target . project ĊĊĠĠĠ Ġprivate Ġval Ġtask Build Directory : ĠFile Ġby Ġproject . provider Ġ{ ĊĠĠĠĠĠĠĠ ĠFile ( File ( compilation . target . project . build Dir , ĠK OT LIN _ BUILD _ DIR _ NAME ), Ġtask Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġbuild History File : ĠFile Ġby Ġproject . provider Ġ{ ĊĠĠĠĠĠĠĠ ĠFile ( task Build Directory , Ġ" build - history . bin ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġjava Output Dir : ĠFile ? Ġ= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġget ( project : ĠProject , Ġtask Name : ĠString ): ĠKotlin Compile Task Data Ġ= Ġproject . get Task DataMap (). getValue ( task Name ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Task Data Container ( project : ĠProject ): ĠIterable < Kotlin Compile Task Data > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . get Task DataMap (). values . toSet () ĊĊĠĠĠĠĠĠĠ Ġfun Ġregister ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompilation : ĠKotlin Compilation < *> ĊĠĠĠĠĠĠĠ Ġ): ĠKotlin Compile Task Data Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject Ġ= Ġcompilation . target . project ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontainer Ġ= Ġproject . get Task DataMap () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Un stable Api Usage ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠKotlin Compile Task Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompilation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . objects . property ( File :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset ( project . provider Ġ{ Ġerror (" destination Dir Ġwas Ġnot Ġset Ġfor Ġtask Ġ${ project . path }$ task Name ") Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . objects . property ( Boolean :: class . java ObjectType ). apply Ġ{ Ġset ( false ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer [ task Name ] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠProject . get Task DataMap (): ĠMutable Map </ * Ġtask Name : Ġ*/ ĠString , ĠKotlin Compile Task Data > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġext Ġ= Ġproject . extensions . getBy Type ( Extra Properties Extension :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! ext . has ( EXT _ NAME )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġext . set ( EXT _ NAME , Ġmutable Map Of < String , ĠKotlin Compile Task Data >()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġext . get ( EXT _ NAME ) Ġas ĠMutable Map < String , ĠKotlin Compile Task Data > ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠEXT _ NAME Ġ= Ġ" kotlin . incremental . task data " ĊĠĠĠ Ġ} Ċ }