/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠGoogle ĠLLC Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ // ĠWITH _ RUNTIME Ċ // ĠTEST ĠPROCESS OR : ĠAn notations In Dependencies Processor Ċ // ĠEXPECT ED : Ċ // Ġmain . Kotlin Class Ġ-> Ċ // Ġmain . Kotlin Class Ġ: Ġannotations . Class Target { [ value Ġ= Ġon Class ]} Ċ // Ġmain . Kotlin Class Ġ: Ġannotations . No Target Annotation { [ value Ġ= Ġon Class ]} Ċ // Ġmy Fun Ġ: Ġannotations . Function Target { [ value Ġ= Ġon My Fun ]} Ċ // Ġmy Fun Ġ: Ġannotations . No Target Annotation { [ value Ġ= Ġon My Fun ]} Ċ // Ġparam 1 Ġ: Ġannotations . No Target Annotation { [ value Ġ= Ġon Param 1 ]} Ċ // Ġparam 1 Ġ: Ġannotations . Value Parameter Target { [ value Ġ= Ġon Param 1 ]} Ċ // Ġparam 2 Ġ: Ġannotations . No Target Annotation { [ value Ġ= Ġon Param 2 ]} Ċ // Ġparam 2 Ġ: Ġannotations . Value Parameter Target { [ value Ġ= Ġon Param 2 ]} Ċ // Ġprop Ġ: Ġannotations . Field Target 2 { [ value Ġ= Ġfield : ]} Ċ // Ġprop Ġ: Ġannotations . Field Target { [ value Ġ= Ġon Prop ]} Ċ // Ġprop Ġ: Ġannotations . No Target Annotation { [ value Ġ= Ġon Prop ]} Ċ // Ġprop Ġ: Ġannotations . Property Getter Target { [ value Ġ= Ġget : ]} Ċ // Ġprop Ġ: Ġannotations . Property Setter Target { [ value Ġ= Ġset : ]} Ċ // Ġprop Ġ: Ġannotations . Property Target { [ value Ġ= Ġon Prop ]} Ċ // Ġlib . Kotlin Class Ġ-> Ċ // Ġlib . Kotlin Class Ġ: Ġannotations . Class Target { [ value Ġ= Ġon Class ]} Ċ // Ġlib . Kotlin Class Ġ: Ġannotations . No Target Annotation { [ value Ġ= Ġon Class ]} Ċ // Ġmy Fun Ġ: Ġannotations . Function Target { [ value Ġ= Ġon My Fun ]} Ċ // Ġmy Fun Ġ: Ġannotations . No Target Annotation { [ value Ġ= Ġon My Fun ]} Ċ // Ġparam 1 Ġ: Ġannotations . No Target Annotation { [ value Ġ= Ġon Param 1 ]} Ċ // Ġparam 1 Ġ: Ġannotations . Value Parameter Target { [ value Ġ= Ġon Param 1 ]} Ċ // Ġparam 2 Ġ: Ġannotations . No Target Annotation { [ value Ġ= Ġon Param 2 ]} Ċ // Ġparam 2 Ġ: Ġannotations . Value Parameter Target { [ value Ġ= Ġon Param 2 ]} Ċ // Ġprop Ġ: Ġannotations . Field Target 2 { [ value Ġ= Ġfield : ]} Ċ // Ġprop Ġ: Ġannotations . Field Target { [ value Ġ= Ġon Prop ]} Ċ // Ġprop Ġ: Ġannotations . No Target Annotation { [ value Ġ= Ġon Prop ]} Ċ // Ġprop Ġ: Ġannotations . Property Getter Target { [ value Ġ= Ġget : ]} Ċ // Ġprop Ġ: Ġannotations . Property Setter Target { [ value Ġ= Ġset : ]} Ċ // Ġprop Ġ: Ġannotations . Property Target { [ value Ġ= Ġon Prop ]} Ċ // Ġmain . Data Class Ġ-> Ċ // Ġconstructor Param Ġ: Ġannotations . Field Target 2 { [ value Ġ= Ġfield : ]} Ċ // Ġconstructor Param Ġ: Ġannotations . Field Target { [ value Ġ= Ġon Constructor Param ]} Ċ // Ġconstructor Param Ġ: Ġannotations . No Target Annotation { [ value Ġ= Ġon Constructor Param ]} Ċ // Ġconstructor Param Ġ: Ġannotations . Property Getter Target { [ value Ġ= Ġget : ]} Ċ // Ġconstructor Param Ġ: Ġannotations . Property Setter Target { [ value Ġ= Ġset : ]} Ċ // Ġconstructor Param Ġ: Ġannotations . Property Target { [ value Ġ= Ġon Constructor Param ]} Ċ // Ġmain . Data Class Ġ: Ġannotations . Class Target { [ value Ġ= Ġon Data Class ]} Ċ // Ġmain . Data Class Ġ: Ġannotations . No Target Annotation { [ value Ġ= Ġon Data Class ]} Ċ // Ġlib . Data Class Ġ-> Ċ // Ġconstructor Param Ġ: Ġannotations . Field Target 2 { [ value Ġ= Ġfield : ]} Ċ // Ġconstructor Param Ġ: Ġannotations . Field Target { [ value Ġ= Ġon Constructor Param ]} Ċ // Ġconstructor Param Ġ: Ġannotations . Property Getter Target { [ value Ġ= Ġget : ]} Ċ // Ġconstructor Param Ġ: Ġannotations . Property Setter Target { [ value Ġ= Ġset : ]} Ċ // Ġconstructor Param Ġ: Ġannotations . Property Target { [ value Ġ= Ġon Constructor Param ]} Ċ // Ġlib . Data Class Ġ: Ġannotations . Class Target { [ value Ġ= Ġon Data Class ]} Ċ // Ġlib . Data Class Ġ: Ġannotations . No Target Annotation { [ value Ġ= Ġon Data Class ]} Ċ // ĠEND Ċ // ĠMODULE : Ġannotations Ċ // ĠFILE : ĠAn notations . kt Ċ package Ġannotations ; Ċ annotation Ġclass ĠNo Target Annotation ( val Ġvalue : String ) Ċ Ċ @ Target ( Annotation Target . FIELD ) Ċ annotation Ġclass ĠField Target ( val Ġvalue : String ) Ċ Ċ @ Target ( Annotation Target . FIELD ) Ċ annotation Ġclass ĠField Target 2 ( val Ġvalue : String ) Ċ Ċ @ Target ( Annotation Target . PROPERTY ) Ċ annotation Ġclass ĠProperty Target ( val Ġvalue : String ) Ċ Ċ @ Target ( Annotation Target . PROPERTY _ SET TER ) Ċ annotation Ġclass ĠProperty Setter Target ( val Ġvalue : String ) Ċ Ċ @ Target ( Annotation Target . PROPERTY _ GET TER ) Ċ annotation Ġclass ĠProperty Getter Target ( val Ġvalue : String ) Ċ Ċ @ Target ( Annotation Target . CLASS ) Ċ annotation Ġclass ĠClass Target ( val Ġvalue : String ) Ċ Ċ @ Target ( Annotation Target . FUNCTION ) Ċ annotation Ġclass ĠFunction Target ( val Ġvalue : String ) Ċ Ċ @ Target ( Annotation Target . VALUE _ PARAMETER ) Ċ annotation Ġclass ĠValue Parameter Target ( val Ġvalue : String ) Ċ // ĠMODULE : Ġlib ( annotations ) Ċ // ĠFILE : ĠClass In Lib . kt Ċ package Ġlib ; Ċ import Ġannotations .*; Ċ @ No Target Annotation (" on Class ") Ċ @ Class Target (" on Class ") Ċ class ĠKotlin Class Ġ{ ĊĠĠĠ Ġ@ No Target Annotation (" on Prop ") ĊĠĠĠ Ġ@ Field Target (" on Prop ") ĊĠĠĠ Ġ@ Property Target (" on Prop ") ĊĠĠĠ Ġ@ set : Property Setter Target (" set :") ĊĠĠĠ Ġ@ get : Property Getter Target (" get :") ĊĠĠĠ Ġ@ field : Field Target 2 (" field :") ĊĠĠĠ Ġvar Ġprop Ġ: ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġ@ No Target Annotation (" on My Fun ") ĊĠĠĠ Ġ@ Function Target (" on My Fun ") ĊĠĠĠ Ġfun Ġmy Fun ( ĊĠĠĠĠĠĠĠ Ġ@ No Target Annotation (" on Param 1 ") ĊĠĠĠĠĠĠĠ Ġ@ Value Parameter Target (" on Param 1 ") ĊĠĠĠĠĠĠĠ Ġparam 1 : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ No Target Annotation (" on Param 2 ") ĊĠĠĠĠĠĠĠ Ġ@ Value Parameter Target (" on Param 2 ") ĊĠĠĠĠĠĠĠ Ġparam 2 : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ No Target Annotation (" on Data Class ") Ċ @ Class Target (" on Data Class ") Ċ class ĠData Class ( ĊĠĠĠ Ġ@ No Target Annotation (" on Constructor Param ") ĊĠĠĠ Ġ@ Field Target (" on Constructor Param ") ĊĠĠĠ Ġ@ Property Target (" on Constructor Param ") ĊĠĠĠ Ġ@ set : Property Setter Target (" set :") ĊĠĠĠ Ġ@ get : Property Getter Target (" get :") ĊĠĠĠ Ġ@ field : Field Target 2 (" field :") ĊĠĠĠ Ġvar Ġconstructor Param Ġ: ĠString Ġ= Ġ"" Ċ ) Ċ // ĠFILE : Ġlib / Java Class . java Ċ package Ġlib ; Ċ import Ġannotations .*; Ċ public Ġclass ĠJava Class Ġ{} Ċ // ĠMODULE : Ġmain ( lib , Ġannotations ) Ċ // ĠFILE : ĠClass In Module 2 . kt Ċ package Ġmain ; Ċ import Ġannotations .*; Ċ @ No Target Annotation (" on Class ") Ċ @ Class Target (" on Class ") Ċ class ĠKotlin Class Ġ{ ĊĠĠĠ Ġ@ No Target Annotation (" on Prop ") ĊĠĠĠ Ġ@ Field Target (" on Prop ") ĊĠĠĠ Ġ@ Property Target (" on Prop ") ĊĠĠĠ Ġ@ set : Property Setter Target (" set :") ĊĠĠĠ Ġ@ get : Property Getter Target (" get :") ĊĠĠĠ Ġ@ field : Field Target 2 (" field :") ĊĠĠĠ Ġvar Ġprop Ġ: ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġ@ No Target Annotation (" on My Fun ") ĊĠĠĠ Ġ@ Function Target (" on My Fun ") ĊĠĠĠ Ġfun Ġmy Fun ( ĊĠĠĠĠĠĠĠ Ġ@ No Target Annotation (" on Param 1 ") ĊĠĠĠĠĠĠĠ Ġ@ Value Parameter Target (" on Param 1 ") ĊĠĠĠĠĠĠĠ Ġparam 1 : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ No Target Annotation (" on Param 2 ") ĊĠĠĠĠĠĠĠ Ġ@ Value Parameter Target (" on Param 2 ") ĊĠĠĠĠĠĠĠ Ġparam 2 : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ No Target Annotation (" on Data Class ") Ċ @ Class Target (" on Data Class ") Ċ class ĠData Class ( ĊĠĠĠ Ġ@ No Target Annotation (" on Constructor Param ") ĊĠĠĠ Ġ@ Field Target (" on Constructor Param ") ĊĠĠĠ Ġ@ Property Target (" on Constructor Param ") ĊĠĠĠ Ġ@ set : Property Setter Target (" set :") ĊĠĠĠ Ġ@ get : Property Getter Target (" get :") ĊĠĠĠ Ġ@ field : Field Target 2 (" field :") ĊĠĠĠ Ġvar Ġconstructor Param Ġ: ĠString Ġ= Ġ"" Ċ ) Ċ // ĠFILE : Ġmain / Java Class In Module 2 . java Ċ pak age Ġmain ; Ċ import Ġannotations .*; Ċ @ No Target Annotation Ċ class ĠJava Class In Main Ġ{ Ċ } Ċ