JDR: Remove some usages of JavaClassResolver#resolveClassByFqName in LazyJavaAnnotationDescriptor

This commit is contained in:
Pavel V. Talanov
2014-06-02 19:53:03 +04:00
parent 2d72b5afc7
commit ccae693ed2
3 changed files with 20 additions and 6 deletions
@@ -16,12 +16,12 @@
package org.jetbrains.jet.lang.resolve.java.structure.impl;
import com.intellij.psi.PsiAnnotation;
import com.intellij.psi.PsiAnnotationMemberValue;
import com.intellij.psi.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
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.JavaClass;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name;
@@ -53,4 +53,16 @@ public class JavaAnnotationImpl extends JavaElementImpl<PsiAnnotation> implement
String qualifiedName = getPsi().getQualifiedName();
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);
}
}
@@ -64,7 +64,7 @@ class LazyJavaAnnotationDescriptor(
val fqName = _fqName()
if (fqName == null) return@createLazyValue ErrorUtils.createErrorType("No fqName: $javaAnnotation")
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())
}
@@ -145,10 +145,9 @@ class LazyJavaAnnotationDescriptor(
if (!element.isEnumEntry()) return null
val fqName = element.getContainingClass().getFqName()
if (fqName == null) return null
val containingJavaClass = element.getContainingClass()
val enumClass = c.javaClassResolver.resolveClassByFqName(fqName)
val enumClass = c.javaClassResolver.resolveClass(containingJavaClass)
if (enumClass == null) return null
val classifier = enumClass.getUnsubstitutedInnerClassesScope().getClassifier(element.getName())
@@ -32,4 +32,7 @@ public interface JavaAnnotation extends JavaElement {
@Nullable
FqName getFqName();
@Nullable
JavaClass resolve();
}