JDR: Remove some usages of JavaClassResolver#resolveClassByFqName in LazyJavaAnnotationDescriptor
This commit is contained in:
+14
-2
@@ -16,12 +16,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.java.structure.impl;
|
package org.jetbrains.jet.lang.resolve.java.structure.impl;
|
||||||
|
|
||||||
import com.intellij.psi.PsiAnnotation;
|
import com.intellij.psi.*;
|
||||||
import com.intellij.psi.PsiAnnotationMemberValue;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaAnnotation;
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaAnnotation;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaAnnotationArgument;
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaAnnotationArgument;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaClass;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
|
||||||
@@ -53,4 +53,16 @@ public class JavaAnnotationImpl extends JavaElementImpl<PsiAnnotation> implement
|
|||||||
String qualifiedName = getPsi().getQualifiedName();
|
String qualifiedName = getPsi().getQualifiedName();
|
||||||
return qualifiedName == null ? null : new FqName(qualifiedName);
|
return qualifiedName == null ? null : new FqName(qualifiedName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public JavaClass resolve() {
|
||||||
|
PsiJavaCodeReferenceElement referenceElement = getPsi().getNameReferenceElement();
|
||||||
|
if (referenceElement == null) return null;
|
||||||
|
|
||||||
|
PsiElement resolved = referenceElement.resolve();
|
||||||
|
if (!(resolved instanceof PsiClass)) return null;
|
||||||
|
|
||||||
|
return new JavaClassImpl((PsiClass) resolved);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-4
@@ -64,7 +64,7 @@ class LazyJavaAnnotationDescriptor(
|
|||||||
val fqName = _fqName()
|
val fqName = _fqName()
|
||||||
if (fqName == null) return@createLazyValue ErrorUtils.createErrorType("No fqName: $javaAnnotation")
|
if (fqName == null) return@createLazyValue ErrorUtils.createErrorType("No fqName: $javaAnnotation")
|
||||||
val annotationClass = JavaToKotlinClassMap.getInstance().mapKotlinClass(fqName, TypeUsage.MEMBER_SIGNATURE_INVARIANT)
|
val annotationClass = JavaToKotlinClassMap.getInstance().mapKotlinClass(fqName, TypeUsage.MEMBER_SIGNATURE_INVARIANT)
|
||||||
?: c.javaClassResolver.resolveClassByFqName(fqName)
|
?: javaAnnotation.resolve()?.let { javaClass -> c.javaClassResolver.resolveClass(javaClass) }
|
||||||
annotationClass?.getDefaultType() ?: ErrorUtils.createErrorType(fqName.asString())
|
annotationClass?.getDefaultType() ?: ErrorUtils.createErrorType(fqName.asString())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,10 +145,9 @@ class LazyJavaAnnotationDescriptor(
|
|||||||
|
|
||||||
if (!element.isEnumEntry()) return null
|
if (!element.isEnumEntry()) return null
|
||||||
|
|
||||||
val fqName = element.getContainingClass().getFqName()
|
val containingJavaClass = element.getContainingClass()
|
||||||
if (fqName == null) return null
|
|
||||||
|
|
||||||
val enumClass = c.javaClassResolver.resolveClassByFqName(fqName)
|
val enumClass = c.javaClassResolver.resolveClass(containingJavaClass)
|
||||||
if (enumClass == null) return null
|
if (enumClass == null) return null
|
||||||
|
|
||||||
val classifier = enumClass.getUnsubstitutedInnerClassesScope().getClassifier(element.getName())
|
val classifier = enumClass.getUnsubstitutedInnerClassesScope().getClassifier(element.getName())
|
||||||
|
|||||||
+3
@@ -32,4 +32,7 @@ public interface JavaAnnotation extends JavaElement {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
FqName getFqName();
|
FqName getFqName();
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
JavaClass resolve();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user