1 /* 2 * Copyright 2022 Google LLC 3 * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 // TEST PROCESSOR: GetSymbolsFromAnnotationProcessor 19 // EXPECTED: 20 // ==== Anno superficial==== 21 // Foo:KSClassDeclaration 22 // <init>:KSFunctionDeclaration 23 // constructorParameterFoo:KSValueParameter 24 // param:KSValueParameter 25 // constructorParameterFoo:KSPropertyDeclaration 26 // propertyFoo:KSPropertyDeclaration 27 // functionFoo:KSFunctionDeclaration 28 // p1:KSValueParameter 29 // Bar:KSClassDeclaration 30 // Baz:KSClassDeclaration 31 // Burp:KSClassDeclaration 32 // Flux:KSTypeAlias 33 // ==== Anno in depth ==== 34 // Foo:KSClassDeclaration 35 // <init>:KSFunctionDeclaration 36 // constructorParameterFoo:KSValueParameter 37 // param:KSValueParameter 38 // constructorParameterFoo:KSPropertyDeclaration 39 // propertyFoo:KSPropertyDeclaration 40 // functionFoo:KSFunctionDeclaration 41 // p1:KSValueParameter 42 // local:KSPropertyDeclaration 43 // Bar:KSClassDeclaration 44 // Baz:KSClassDeclaration 45 // Burp:KSClassDeclaration 46 // Flux:KSTypeAlias 47 // ==== Bnno superficial==== 48 // File: Foo.kt:KSFile 49 // <init>:KSFunctionDeclaration 50 // propertyFoo.getter():KSPropertyAccessorImpl 51 // p2:KSValueParameter 52 // ==== Bnno in depth ==== 53 // File: Foo.kt:KSFile 54 // <init>:KSFunctionDeclaration 55 // propertyFoo.getter():KSPropertyAccessorImpl 56 // p2:KSValueParameter 57 // ==== A1 superficial==== 58 // Foo:KSClassDeclaration 59 // <init>:KSFunctionDeclaration 60 // constructorParameterFoo:KSValueParameter 61 // param:KSValueParameter 62 // constructorParameterFoo:KSPropertyDeclaration 63 // propertyFoo:KSPropertyDeclaration 64 // functionFoo:KSFunctionDeclaration 65 // p1:KSValueParameter 66 // Bar:KSClassDeclaration 67 // Baz:KSClassDeclaration 68 // Burp:KSClassDeclaration 69 // Flux:KSTypeAlias 70 // ==== A1 in depth ==== 71 // Foo:KSClassDeclaration 72 // <init>:KSFunctionDeclaration 73 // constructorParameterFoo:KSValueParameter 74 // param:KSValueParameter 75 // constructorParameterFoo:KSPropertyDeclaration 76 // propertyFoo:KSPropertyDeclaration 77 // functionFoo:KSFunctionDeclaration 78 // p1:KSValueParameter 79 // local:KSPropertyDeclaration 80 // Bar:KSClassDeclaration 81 // Baz:KSClassDeclaration 82 // Burp:KSClassDeclaration 83 // Flux:KSTypeAlias 84 // ==== A2 superficial==== 85 // Foo:KSClassDeclaration 86 // <init>:KSFunctionDeclaration 87 // constructorParameterFoo:KSValueParameter 88 // param:KSValueParameter 89 // constructorParameterFoo:KSPropertyDeclaration 90 // propertyFoo:KSPropertyDeclaration 91 // functionFoo:KSFunctionDeclaration 92 // p1:KSValueParameter 93 // Bar:KSClassDeclaration 94 // Baz:KSClassDeclaration 95 // Burp:KSClassDeclaration 96 // Flux:KSTypeAlias 97 // ==== A2 in depth ==== 98 // Foo:KSClassDeclaration 99 // <init>:KSFunctionDeclaration 100 // constructorParameterFoo:KSValueParameter 101 // param:KSValueParameter 102 // constructorParameterFoo:KSPropertyDeclaration 103 // propertyFoo:KSPropertyDeclaration 104 // functionFoo:KSFunctionDeclaration 105 // p1:KSValueParameter 106 // local:KSPropertyDeclaration 107 // Bar:KSClassDeclaration 108 // Baz:KSClassDeclaration 109 // Burp:KSClassDeclaration 110 // Flux:KSTypeAlias 111 // ==== Cnno in depth ==== 112 // constructorParameterFoo:KSValueParameter 113 // <set-?>:KSValueParameter 114 // x:KSValueParameter 115 // x:KSPropertyDeclaration 116 // END 117 //FILE: annotations.kt 118 annotation class Anno 119 annotation class Bnno 120 annotation class Cnno 121 typealias A1 = Anno 122 typealias A2 = A1 123 124 //FILE: Foo.kt 125 @file:Bnno 126 127 import Anno 128 import Anno as A3 129 130 @Anno 131 class Foo @Anno constructor(@Anno @param:Cnno val constructorParameterFoo: Int, @Anno param: Int){ 132 @Bnno constructor() { 133 134 } 135 136 @Anno 137 val propertyFoo: String 138 @Bnno get() = TODO() 139 140 @Anno functionFoonull141 fun functionFoo(@Anno p1: Int, @Bnno p2: Int) { 142 @Anno val local = 1 143 } 144 145 @setparam:Cnno 146 var a = 1 147 } 148 149 class C(@Cnno val x: Int) 150 151 @A1 152 class Bar 153 154 @A2 155 class Baz 156 157 @A3 158 class Burp 159 160 @Anno 161 typealias Flux = String 162