Lines Matching full:element
57 import javax.lang.model.element.ElementKind;
58 import javax.lang.model.element.Modifier;
70 /** Returns the simple name of the element. */
71 public static String getSimpleName(XElement element) { in getSimpleName() argument
72 if (isTypeElement(element)) { in getSimpleName()
73 return asTypeElement(element) in getSimpleName()
76 } else if (isVariableElement(element)) { in getSimpleName()
77 return asVariable(element).getName(); // SUPPRESS_GET_NAME_CHECK in getSimpleName()
78 } else if (isEnumEntry(element)) { in getSimpleName()
79 return asEnumEntry(element).getName(); // SUPPRESS_GET_NAME_CHECK in getSimpleName()
80 } else if (isMethod(element)) { in getSimpleName()
90 return asMethod(element).getJvmName(); in getSimpleName()
91 } else if (isConstructor(element)) { in getSimpleName()
93 } else if (isTypeParameter(element)) { in getSimpleName()
94 return asTypeParameter(element).getName(); // SUPPRESS_GET_NAME_CHECK in getSimpleName()
96 throw new AssertionError("No simple name for: " + element); in getSimpleName()
99 private static boolean isSyntheticElement(XElement element) { in isSyntheticElement() argument
100 if (isMethodParameter(element)) { in isSyntheticElement()
101 XExecutableParameterElement executableParam = asMethodParameter(element); in isSyntheticElement()
106 if (isMethod(element)) { in isSyntheticElement()
107 return asMethod(element).isKotlinPropertyMethod(); in isSyntheticElement()
113 public static KSAnnotated toKSAnnotated(XElement element) { in toKSAnnotated() argument
114 if (isSyntheticElement(element)) { in toKSAnnotated()
115 return toKS(element); in toKSAnnotated()
117 if (isExecutable(element)) { in toKSAnnotated()
118 return toKS(asExecutable(element)); in toKSAnnotated()
120 if (isTypeElement(element)) { in toKSAnnotated()
121 return toKS(asTypeElement(element)); in toKSAnnotated()
123 if (isField(element)) { in toKSAnnotated()
124 return toKS(asField(element)); in toKSAnnotated()
126 if (isMethodParameter(element)) { in toKSAnnotated()
127 return toKS(asMethodParameter(element)); in toKSAnnotated()
130 "Returning KSAnnotated declaration for " + element + " is not supported."); in toKSAnnotated()
134 * Returns the closest enclosing element that is a {@link XTypeElement} or throws an {@link
137 public static XTypeElement closestEnclosingTypeElement(XElement element) { in closestEnclosingTypeElement() argument
138 return optionalClosestEnclosingTypeElement(element) in closestEnclosingTypeElement()
139 .orElseThrow(() -> new IllegalStateException("No enclosing TypeElement for: " + element)); in closestEnclosingTypeElement()
156 private static Optional<XTypeElement> optionalClosestEnclosingTypeElement(XElement element) { in optionalClosestEnclosingTypeElement() argument
157 if (isTypeElement(element)) { in optionalClosestEnclosingTypeElement()
158 return Optional.of(asTypeElement(element)); in optionalClosestEnclosingTypeElement()
159 } else if (isConstructor(element)) { in optionalClosestEnclosingTypeElement()
160 return Optional.of(asConstructor(element).getEnclosingElement()); in optionalClosestEnclosingTypeElement()
161 } else if (isMethod(element)) { in optionalClosestEnclosingTypeElement()
162 return optionalClosestEnclosingTypeElement(asMethod(element).getEnclosingElement()); in optionalClosestEnclosingTypeElement()
163 } else if (isField(element)) { in optionalClosestEnclosingTypeElement()
164 return optionalClosestEnclosingTypeElement(asField(element).getEnclosingElement()); in optionalClosestEnclosingTypeElement()
165 } else if (isMethodParameter(element)) { in optionalClosestEnclosingTypeElement()
166 return optionalClosestEnclosingTypeElement(asMethodParameter(element).getEnclosingElement()); in optionalClosestEnclosingTypeElement()
171 public static boolean isAbstract(XElement element) { in isAbstract() argument
172 return asHasModifiers(element).isAbstract(); in isAbstract()
175 public static boolean isPublic(XElement element) { in isPublic() argument
176 return asHasModifiers(element).isPublic(); in isPublic()
179 public static boolean isPrivate(XElement element) { in isPrivate() argument
180 return asHasModifiers(element).isPrivate(); in isPrivate()
183 public static boolean isStatic(XElement element) { in isStatic() argument
184 return asHasModifiers(element).isStatic(); in isStatic()
188 // runtime exceptions if the element does not extend XHasModifiers. However, for Dagger's purpose
191 private static XHasModifiers asHasModifiers(XElement element) { in asHasModifiers() argument
192 // In javac, Element implements HasModifiers but in XProcessing XElement does not. in asHasModifiers()
196 checkArgument(element instanceof XHasModifiers, "Element %s does not have modifiers", element); in asHasModifiers()
197 return (XHasModifiers) element; in asHasModifiers()
202 public static boolean isPackage(XElement element) { in isPackage() argument
206 if (getProcessingEnv(element).getBackend() == XProcessingEnv.Backend.JAVAC) { in isPackage()
207 checkState(toJavac(element).getKind() != ElementKind.PACKAGE); in isPackage()
212 public static boolean isTypeParameter(XElement element) { in isTypeParameter() argument
213 return element instanceof XTypeParameterElement; in isTypeParameter()
216 public static XTypeParameterElement asTypeParameter(XElement element) { in asTypeParameter() argument
217 return (XTypeParameterElement) element; in asTypeParameter()
220 public static boolean isEnumEntry(XElement element) { in isEnumEntry() argument
221 return element instanceof XEnumEntry; in isEnumEntry()
224 public static boolean isEnum(XElement element) { in isEnum() argument
225 return element instanceof XEnumTypeElement; in isEnum()
228 public static boolean isExecutable(XElement element) { in isExecutable() argument
229 return isConstructor(element) || isMethod(element); in isExecutable()
232 public static XExecutableElement asExecutable(XElement element) { in asExecutable() argument
233 checkState(isExecutable(element)); in asExecutable()
234 return (XExecutableElement) element; in asExecutable()
237 public static XTypeElement asTypeElement(XElement element) { in asTypeElement() argument
238 checkState(isTypeElement(element)); in asTypeElement()
239 return (XTypeElement) element; in asTypeElement()
243 public static XExecutableParameterElement asMethodParameter(XElement element) { in asMethodParameter() argument
244 checkState(isMethodParameter(element)); in asMethodParameter()
245 return (XExecutableParameterElement) element; in asMethodParameter()
248 public static XFieldElement asField(XElement element) { in asField() argument
249 checkState(isField(element)); in asField()
250 return (XFieldElement) element; in asField()
253 public static XEnumEntry asEnumEntry(XElement element) { in asEnumEntry() argument
254 return (XEnumEntry) element; in asEnumEntry()
257 public static XVariableElement asVariable(XElement element) { in asVariable() argument
258 checkState(isVariableElement(element)); in asVariable()
259 return (XVariableElement) element; in asVariable()
262 public static XConstructorElement asConstructor(XElement element) { in asConstructor() argument
263 checkState(isConstructor(element)); in asConstructor()
264 return (XConstructorElement) element; in asConstructor()
267 public static XMethodElement asMethod(XElement element) { in asMethod() argument
268 checkState(isMethod(element)); in asMethod()
269 return (XMethodElement) element; in asMethod()
323 public static String toStableString(XElement element) { in toStableString() argument
324 if (element == null) { in toStableString()
328 if (isTypeElement(element)) { in toStableString()
329 return asTypeElement(element).getQualifiedName(); in toStableString()
330 } else if (isExecutable(element)) { in toStableString()
331 XExecutableElement executable = asExecutable(element); in toStableString()
335 getProcessingEnv(element).getBackend().equals(XProcessingEnv.Backend.KSP) in toStableString()
340 isConstructor(element) ? asConstructor(element).getEnclosingElement() : executable), in toStableString()
348 } else if (isEnumEntry(element) in toStableString()
349 || isField(element) in toStableString()
350 || isMethodParameter(element) in toStableString()
351 || isTypeParameter(element)) { in toStableString()
352 return getSimpleName(element); in toStableString()
354 return element.toString(); in toStableString()
362 public static String getKindName(XElement element) { in getKindName() argument
363 if (isTypeElement(element)) { in getKindName()
364 XTypeElement typeElement = asTypeElement(element); in getKindName()
372 } else if (isEnum(element)) { in getKindName()
374 } else if (isEnumEntry(element)) { in getKindName()
376 } else if (isConstructor(element)) { in getKindName()
378 } else if (isMethod(element)) { in getKindName()
380 } else if (isField(element)) { in getKindName()
382 } else if (isMethodParameter(element)) { in getKindName()
384 } else if (isTypeParameter(element)) { in getKindName()
387 return element.kindName(); in getKindName()
390 public static String packageName(XElement element) { in packageName() argument
391 return element.getClosestMemberContainer().asClassName().getPackageName(); in packageName()
394 public static boolean isFinal(XExecutableElement element) { in isFinal() argument
395 if (element.isFinal()) { in isFinal()
398 if (getProcessingEnv(element).getBackend() == XProcessingEnv.Backend.KSP) { in isFinal()
399 if (toKS(element).getModifiers().contains(com.google.devtools.ksp.symbol.Modifier.FINAL)) { in isFinal()
406 public static ImmutableList<Modifier> getModifiers(XExecutableElement element) { in getModifiers() argument
408 if (isFinal(element)) { in getModifiers()
410 } else if (element.isAbstract()) { in getModifiers()
413 if (element.isStatic()) { in getModifiers()
416 if (element.isPublic()) { in getModifiers()
418 } else if (element.isPrivate()) { in getModifiers()
420 } else if (element.isProtected()) { in getModifiers()