Refactor: extract AnnotationDescriptor.annotationClass utility
This commit is contained in:
+2
-1
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.psi.KtAnnotationEntry
|
||||
import org.jetbrains.kotlin.resolve.AdditionalAnnotationChecker
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||
|
||||
object JsQualifierChecker : AdditionalAnnotationChecker {
|
||||
@@ -29,7 +30,7 @@ object JsQualifierChecker : AdditionalAnnotationChecker {
|
||||
val bindingContext = trace.bindingContext
|
||||
for (entry in entries) {
|
||||
val annotation = bindingContext[BindingContext.ANNOTATION, entry] ?: continue
|
||||
if (annotation.type.constructor.declarationDescriptor?.fqNameSafe != AnnotationsUtils.JS_QUALIFIER_ANNOTATION) continue
|
||||
if (annotation.annotationClass?.fqNameSafe != AnnotationsUtils.JS_QUALIFIER_ANNOTATION) continue
|
||||
val argument = annotation.allValueArguments.values.singleOrNull()?.value as? String ?: continue
|
||||
if (!validateQualifier(argument)) {
|
||||
val argumentPsi = entry.valueArgumentList!!.arguments[0]
|
||||
|
||||
+2
-1
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.checkers.SimpleDeclarationChecker
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.getAnnotationRetention
|
||||
import org.jetbrains.kotlin.resolve.source.PsiSourceElement
|
||||
|
||||
@@ -36,7 +37,7 @@ object JsRuntimeAnnotationChecker : SimpleDeclarationChecker {
|
||||
bindingContext: BindingContext
|
||||
) {
|
||||
for ((annotationDescriptor, _) in descriptor.annotations.getAllAnnotations()) {
|
||||
val annotationClass = annotationDescriptor.type.constructor.declarationDescriptor as? ClassDescriptor ?: continue
|
||||
val annotationClass = annotationDescriptor.annotationClass ?: continue
|
||||
if (annotationClass.getAnnotationRetention() != KotlinRetention.RUNTIME) continue
|
||||
|
||||
val annotationPsi = (annotationDescriptor.source as? PsiSourceElement)?.psi ?: declaration
|
||||
|
||||
@@ -38,6 +38,8 @@ import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilsKt.getAnnotationClass;
|
||||
|
||||
public final class AnnotationsUtils {
|
||||
private static final String JS_NAME = "kotlin.js.JsName";
|
||||
public static final FqName JS_MODULE_ANNOTATION = new FqName("kotlin.js.JsModule");
|
||||
@@ -218,10 +220,10 @@ public final class AnnotationsUtils {
|
||||
@NotNull FqName annotationFqName
|
||||
) {
|
||||
for (AnnotationDescriptor annotation : getContainingFileAnnotations(bindingContext, declaration)) {
|
||||
DeclarationDescriptor annotationType = annotation.getType().getConstructor().getDeclarationDescriptor();
|
||||
DeclarationDescriptor annotationType = getAnnotationClass(annotation);
|
||||
if (annotationType == null) continue;
|
||||
|
||||
FqNameUnsafe fqName = DescriptorUtils.getFqName(annotation.getType().getConstructor().getDeclarationDescriptor());
|
||||
FqNameUnsafe fqName = DescriptorUtils.getFqName(annotationType);
|
||||
if (fqName.equals(annotationFqName.toUnsafe())) {
|
||||
return extractSingleStringArgument(annotation);
|
||||
}
|
||||
@@ -235,10 +237,10 @@ public final class AnnotationsUtils {
|
||||
|
||||
public static boolean isFromNonModuleFile(@NotNull BindingContext bindingContext, @NotNull DeclarationDescriptor declaration) {
|
||||
for (AnnotationDescriptor annotation : getContainingFileAnnotations(bindingContext, declaration)) {
|
||||
DeclarationDescriptor annotationType = annotation.getType().getConstructor().getDeclarationDescriptor();
|
||||
DeclarationDescriptor annotationType = getAnnotationClass(annotation);
|
||||
if (annotationType == null) continue;
|
||||
|
||||
DeclarationDescriptor annotationTypeDescriptor = annotation.getType().getConstructor().getDeclarationDescriptor();
|
||||
DeclarationDescriptor annotationTypeDescriptor = getAnnotationClass(annotation);
|
||||
assert annotationTypeDescriptor != null : "Annotation type should have descriptor: " + annotation.getType();
|
||||
|
||||
FqNameUnsafe fqName = DescriptorUtils.getFqName(annotationTypeDescriptor);
|
||||
|
||||
Reference in New Issue
Block a user