• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2019 Square, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * https://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 @file:Suppress("unused")
17 
18 package com.squareup.kotlinpoet.metadata
19 
20 import kotlinx.metadata.Flag
21 import kotlinx.metadata.Flags
22 import kotlinx.metadata.KmClass
23 import kotlinx.metadata.KmConstructor
24 import kotlinx.metadata.KmFunction
25 import kotlinx.metadata.KmProperty
26 import kotlinx.metadata.KmType
27 import kotlinx.metadata.KmTypeParameter
28 import kotlinx.metadata.KmValueParameter
29 
30 // Common flags for any element with flags.
31 @KotlinPoetMetadataPreview
32 public val Flags.hasAnnotations: Boolean get() = Flag.HAS_ANNOTATIONS(this)
33 
34 @KotlinPoetMetadataPreview
35 public val Flags.isAbstract: Boolean get() = Flag.IS_ABSTRACT(this)
36 
37 @KotlinPoetMetadataPreview
38 public val Flags.isFinal: Boolean get() = Flag.IS_FINAL(this)
39 
40 @KotlinPoetMetadataPreview
41 public val Flags.isInternal: Boolean get() = Flag.IS_INTERNAL(this)
42 
43 @KotlinPoetMetadataPreview
44 public val Flags.isLocal: Boolean get() = Flag.IS_LOCAL(this)
45 
46 @KotlinPoetMetadataPreview
47 public val Flags.isOpen: Boolean get() = Flag.IS_OPEN(this)
48 
49 @KotlinPoetMetadataPreview
50 public val Flags.isPrivate: Boolean get() = Flag.IS_PRIVATE(this)
51 
52 @KotlinPoetMetadataPreview
53 public val Flags.isPrivate_to_this: Boolean get() = Flag.IS_PRIVATE_TO_THIS(this)
54 
55 @KotlinPoetMetadataPreview
56 public val Flags.isProtected: Boolean get() = Flag.IS_PROTECTED(this)
57 
58 @KotlinPoetMetadataPreview
59 public val Flags.isPublic: Boolean get() = Flag.IS_PUBLIC(this)
60 
61 @KotlinPoetMetadataPreview
62 public val Flags.isSealed: Boolean get() = Flag.IS_SEALED(this)
63 
64 // Type flags.
65 @KotlinPoetMetadataPreview
66 public val Flags.isNullableType: Boolean get() = Flag.Type.IS_NULLABLE(this)
67 
68 @KotlinPoetMetadataPreview
69 public val Flags.isSuspendType: Boolean get() = Flag.Type.IS_SUSPEND(this)
70 
71 // Class flags.
72 @KotlinPoetMetadataPreview
73 public val Flags.isAnnotationClass: Boolean get() = Flag.Class.IS_ANNOTATION_CLASS(this)
74 
75 @KotlinPoetMetadataPreview
76 public val Flags.isClass: Boolean get() = Flag.Class.IS_CLASS(this)
77 
78 @KotlinPoetMetadataPreview
79 public val Flags.isCompanionObjectClass: Boolean get() = Flag.Class.IS_COMPANION_OBJECT(this)
80 
81 @KotlinPoetMetadataPreview
82 public val Flags.isDataClass: Boolean get() = Flag.Class.IS_DATA(this)
83 
84 @KotlinPoetMetadataPreview
85 public val Flags.isEnumClass: Boolean get() = Flag.Class.IS_ENUM_CLASS(this)
86 
87 @KotlinPoetMetadataPreview
88 public val Flags.isEnumEntryClass: Boolean get() = Flag.Class.IS_ENUM_ENTRY(this)
89 
90 @KotlinPoetMetadataPreview
91 public val Flags.isExpectClass: Boolean get() = Flag.Class.IS_EXPECT(this)
92 
93 @KotlinPoetMetadataPreview
94 public val Flags.isExternalClass: Boolean get() = Flag.Class.IS_EXTERNAL(this)
95 
96 @KotlinPoetMetadataPreview
97 public val Flags.isValueClass: Boolean get() = Flag.Class.IS_VALUE(this)
98 
99 @KotlinPoetMetadataPreview
100 public val Flags.isInnerClass: Boolean get() = Flag.Class.IS_INNER(this)
101 
102 @KotlinPoetMetadataPreview
103 public val Flags.isObjectClass: Boolean get() = Flag.Class.IS_OBJECT(this)
104 
105 @KotlinPoetMetadataPreview
106 public val Flags.isInterface: Boolean get() = Flag.Class.IS_INTERFACE(this)
107 
108 @KotlinPoetMetadataPreview
109 public val Flags.isFun: Boolean get() = Flag.Class.IS_FUN(this)
110 
111 @KotlinPoetMetadataPreview
112 public val KmClass.isAnnotation: Boolean get() = flags.isAnnotationClass
113 
114 @KotlinPoetMetadataPreview
115 public val KmClass.isClass: Boolean get() = flags.isClass
116 
117 @KotlinPoetMetadataPreview
118 public val KmClass.isCompanionObject: Boolean get() = flags.isCompanionObjectClass
119 
120 @KotlinPoetMetadataPreview
121 public val KmClass.isData: Boolean get() = flags.isDataClass
122 
123 @KotlinPoetMetadataPreview
124 public val KmClass.isEnum: Boolean get() = flags.isEnumClass
125 
126 @KotlinPoetMetadataPreview
127 public val KmClass.isEnumEntry: Boolean get() = flags.isEnumEntryClass
128 
129 @KotlinPoetMetadataPreview
130 public val KmClass.isExpect: Boolean get() = flags.isExpectClass
131 
132 @KotlinPoetMetadataPreview
133 public val KmClass.isExternal: Boolean get() = flags.isExternalClass
134 
135 @KotlinPoetMetadataPreview
136 public val KmClass.isValue: Boolean get() = flags.isValueClass
137 
138 @KotlinPoetMetadataPreview
139 public val KmClass.isInner: Boolean get() = flags.isInnerClass
140 
141 @KotlinPoetMetadataPreview
142 public val KmClass.isObject: Boolean get() = flags.isObjectClass
143 
144 @KotlinPoetMetadataPreview
145 public val KmClass.isInterface: Boolean get() = flags.isInterface
146 
147 @KotlinPoetMetadataPreview
148 public val KmClass.isFun: Boolean get() = flags.isFun
149 
150 @KotlinPoetMetadataPreview
151 public val KmType.isSuspend: Boolean get() = flags.isSuspendType
152 
153 @KotlinPoetMetadataPreview
154 public val KmType.isNullable: Boolean get() = flags.isNullableType
155 
156 // Constructor flags.
157 @KotlinPoetMetadataPreview
158 public val Flags.isPrimaryConstructor: Boolean get() = !Flag.Constructor.IS_SECONDARY(this)
159 
160 @KotlinPoetMetadataPreview
161 public val KmConstructor.isPrimary: Boolean get() = flags.isPrimaryConstructor
162 
163 @KotlinPoetMetadataPreview
164 public val KmConstructor.isSecondary: Boolean get() = !isPrimary
165 
166 // Function flags.
167 @KotlinPoetMetadataPreview
168 public val Flags.isDeclarationFunction: Boolean get() = Flag.Function.IS_DECLARATION(this)
169 
170 @KotlinPoetMetadataPreview
171 public val Flags.isFakeOverrideFunction: Boolean get() = Flag.Function.IS_FAKE_OVERRIDE(this)
172 
173 @KotlinPoetMetadataPreview
174 public val Flags.isDelegationFunction: Boolean get() = Flag.Function.IS_DELEGATION(this)
175 
176 @KotlinPoetMetadataPreview
177 public val Flags.isSynthesizedFunction: Boolean get() = Flag.Function.IS_SYNTHESIZED(this)
178 
179 @KotlinPoetMetadataPreview
180 public val Flags.isOperatorFunction: Boolean get() = Flag.Function.IS_OPERATOR(this)
181 
182 @KotlinPoetMetadataPreview
183 public val Flags.isInfixFunction: Boolean get() = Flag.Function.IS_INFIX(this)
184 
185 @KotlinPoetMetadataPreview
186 public val Flags.isInlineFunction: Boolean get() = Flag.Function.IS_INLINE(this)
187 
188 @KotlinPoetMetadataPreview
189 public val Flags.isTailRecFunction: Boolean get() = Flag.Function.IS_TAILREC(this)
190 
191 @KotlinPoetMetadataPreview
192 public val Flags.isExternalFunction: Boolean get() = Flag.Function.IS_EXTERNAL(this)
193 
194 @KotlinPoetMetadataPreview
195 public val Flags.isSuspendFunction: Boolean get() = Flag.Function.IS_SUSPEND(this)
196 
197 @KotlinPoetMetadataPreview
198 public val Flags.isExpectFunction: Boolean get() = Flag.Function.IS_EXPECT(this)
199 
200 @KotlinPoetMetadataPreview
201 public val KmFunction.isDeclaration: Boolean get() = flags.isDeclarationFunction
202 
203 @KotlinPoetMetadataPreview
204 public val KmFunction.isFakeOverride: Boolean get() = flags.isFakeOverrideFunction
205 
206 @KotlinPoetMetadataPreview
207 public val KmFunction.isDelegation: Boolean get() = flags.isDelegationFunction
208 
209 @KotlinPoetMetadataPreview
210 public val KmFunction.isSynthesized: Boolean get() = flags.isSynthesizedFunction
211 
212 @KotlinPoetMetadataPreview
213 public val KmFunction.isOperator: Boolean get() = flags.isOperatorFunction
214 
215 @KotlinPoetMetadataPreview
216 public val KmFunction.isInfix: Boolean get() = flags.isInfixFunction
217 
218 @KotlinPoetMetadataPreview
219 public val KmFunction.isInline: Boolean get() = flags.isInlineFunction
220 
221 @KotlinPoetMetadataPreview
222 public val KmFunction.isTailRec: Boolean get() = flags.isTailRecFunction
223 
224 @KotlinPoetMetadataPreview
225 public val KmFunction.isExternal: Boolean get() = flags.isExternalFunction
226 
227 @KotlinPoetMetadataPreview
228 public val KmFunction.isSuspend: Boolean get() = flags.isSuspendFunction
229 
230 @KotlinPoetMetadataPreview
231 public val KmFunction.isExpect: Boolean get() = flags.isExpectFunction
232 
233 // Parameter flags.
234 @KotlinPoetMetadataPreview
235 public val KmValueParameter.declaresDefaultValue: Boolean get() =
236   Flag.ValueParameter.DECLARES_DEFAULT_VALUE(flags)
237 
238 @KotlinPoetMetadataPreview
239 public val KmValueParameter.isCrossInline: Boolean get() = Flag.ValueParameter.IS_CROSSINLINE(flags)
240 
241 @KotlinPoetMetadataPreview
242 public val KmValueParameter.isNoInline: Boolean get() = Flag.ValueParameter.IS_NOINLINE(flags)
243 
244 // Property flags.
245 @KotlinPoetMetadataPreview
246 public val Flags.isFakeOverrideProperty: Boolean get() = Flag.Property.IS_FAKE_OVERRIDE(this)
247 
248 @KotlinPoetMetadataPreview
249 public val KmProperty.hasConstant: Boolean get() = Flag.Property.HAS_CONSTANT(flags)
250 
251 @KotlinPoetMetadataPreview
252 public val KmProperty.hasGetter: Boolean get() = Flag.Property.HAS_GETTER(flags)
253 
254 @KotlinPoetMetadataPreview
255 public val KmProperty.hasSetter: Boolean get() = Flag.Property.HAS_SETTER(flags)
256 
257 @KotlinPoetMetadataPreview
258 public val KmProperty.isConst: Boolean get() = Flag.Property.IS_CONST(flags)
259 
260 @KotlinPoetMetadataPreview
261 public val KmProperty.isDeclaration: Boolean get() = Flag.Property.IS_DECLARATION(flags)
262 
263 @KotlinPoetMetadataPreview
264 public val KmProperty.isDelegated: Boolean get() = Flag.Property.IS_DELEGATED(flags)
265 
266 @KotlinPoetMetadataPreview
267 public val KmProperty.isDelegation: Boolean get() = Flag.Property.IS_DELEGATION(flags)
268 
269 @KotlinPoetMetadataPreview
270 public val KmProperty.isExpect: Boolean get() = Flag.Property.IS_EXPECT(flags)
271 
272 @KotlinPoetMetadataPreview
273 public val KmProperty.isExternal: Boolean get() = Flag.Property.IS_EXTERNAL(flags)
274 
275 @KotlinPoetMetadataPreview
276 public val KmProperty.isFakeOverride: Boolean get() = flags.isFakeOverrideProperty
277 
278 @KotlinPoetMetadataPreview
279 public val KmProperty.isLateinit: Boolean get() = Flag.Property.IS_LATEINIT(flags)
280 
281 @KotlinPoetMetadataPreview
282 public val KmProperty.isSynthesized: Boolean get() = Flag.Property.IS_SYNTHESIZED(flags)
283 
284 @KotlinPoetMetadataPreview
285 public val KmProperty.isVar: Boolean get() = Flag.Property.IS_VAR(flags)
286 
287 @KotlinPoetMetadataPreview
288 public val KmProperty.isVal: Boolean get() = !isVar
289 
290 // Property Accessor Flags
291 @KotlinPoetMetadataPreview
292 public val Flags.isPropertyAccessorExternal: Boolean
293   get() = Flag.PropertyAccessor.IS_EXTERNAL(this)
294 
295 @KotlinPoetMetadataPreview
296 public val Flags.isPropertyAccessorInline: Boolean
297   get() = Flag.PropertyAccessor.IS_INLINE(this)
298 
299 @KotlinPoetMetadataPreview
300 public val Flags.isPropertyAccessorNotDefault: Boolean
301   get() = Flag.PropertyAccessor.IS_NOT_DEFAULT(this)
302 
303 // TypeParameter flags.
304 @KotlinPoetMetadataPreview
305 public val KmTypeParameter.isReified: Boolean get() = Flag.TypeParameter.IS_REIFIED(flags)
306 
307 // Property Accessor Flags
308 public enum class PropertyAccessorFlag {
309   IS_EXTERNAL,
310   IS_INLINE,
311   IS_NOT_DEFAULT,
312 }
313 
314 @KotlinPoetMetadataPreview
315 public val KmProperty.setterPropertyAccessorFlags: Set<PropertyAccessorFlag>
316   get() = setterFlags.propertyAccessorFlags
317 
318 @KotlinPoetMetadataPreview
319 public val KmProperty.getterPropertyAccessorFlags: Set<PropertyAccessorFlag>
320   get() = getterFlags.propertyAccessorFlags
321 
322 @KotlinPoetMetadataPreview
323 public val Flags.propertyAccessorFlags: Set<PropertyAccessorFlag>
<lambda>null324   get() = setOf {
325     if (Flag.PropertyAccessor.IS_EXTERNAL(this@propertyAccessorFlags)) {
326       add(PropertyAccessorFlag.IS_EXTERNAL)
327     }
328     if (Flag.PropertyAccessor.IS_INLINE(this@propertyAccessorFlags)) {
329       add(PropertyAccessorFlag.IS_INLINE)
330     }
331     if (Flag.PropertyAccessor.IS_NOT_DEFAULT(this@propertyAccessorFlags)) {
332       add(PropertyAccessorFlag.IS_NOT_DEFAULT)
333     }
334   }
335 
setOfnull336 internal inline fun <E> setOf(body: MutableSet<E>.() -> Unit): Set<E> {
337   return mutableSetOf<E>().apply(body).toSet()
338 }
339