Minor cleanup in Java model: fix warnings, remove unused
This commit is contained in:
+3
-24
@@ -24,40 +24,19 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaAnnotation;
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaAnnotationOwner;
|
||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaAnnotationImpl;
|
||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaElementCollectionFromPsiArrayUtil;
|
||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaModifierListOwnerImpl;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
public class PsiBasedExternalAnnotationResolver implements ExternalAnnotationResolver {
|
||||
@Nullable
|
||||
@Override
|
||||
public JavaAnnotation findExternalAnnotation(@NotNull JavaAnnotationOwner owner, @NotNull FqName fqName) {
|
||||
if (owner instanceof JavaModifierListOwnerImpl) {
|
||||
JavaModifierListOwnerImpl modifierListOwner = (JavaModifierListOwnerImpl) owner;
|
||||
PsiAnnotation psiAnnotation = findExternalAnnotation(modifierListOwner.getPsi(), fqName);
|
||||
PsiModifierListOwner psiOwner = ((JavaModifierListOwnerImpl) owner).getPsi();
|
||||
PsiAnnotation psiAnnotation =
|
||||
ExternalAnnotationsManager.getInstance(psiOwner.getProject()).findExternalAnnotation(psiOwner, fqName.asString());
|
||||
return psiAnnotation == null ? null : new JavaAnnotationImpl(psiAnnotation);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<JavaAnnotation> findExternalAnnotations(@NotNull JavaAnnotationOwner owner) {
|
||||
if (owner instanceof JavaModifierListOwnerImpl) {
|
||||
PsiModifierListOwner psiOwner = ((JavaModifierListOwnerImpl) owner).getPsi();
|
||||
PsiAnnotation[] annotations = ExternalAnnotationsManager.getInstance(psiOwner.getProject()).findExternalAnnotations(psiOwner);
|
||||
return annotations == null
|
||||
? Collections.<JavaAnnotation>emptyList()
|
||||
: JavaElementCollectionFromPsiArrayUtil.annotations(annotations);
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static PsiAnnotation findExternalAnnotation(@NotNull PsiModifierListOwner owner, @NotNull FqName fqName) {
|
||||
return ExternalAnnotationsManager.getInstance(owner.getProject()).findExternalAnnotation(owner, fqName.asString());
|
||||
}
|
||||
}
|
||||
|
||||
+6
-9
@@ -16,7 +16,10 @@
|
||||
|
||||
package org.jetbrains.kotlin.load.java.structure.impl;
|
||||
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.PsiAnnotation;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiJavaCodeReferenceElement;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaAnnotation;
|
||||
@@ -35,13 +38,6 @@ public class JavaAnnotationImpl extends JavaElementImpl<PsiAnnotation> implement
|
||||
super(psiAnnotation);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public JavaAnnotationArgument findArgument(@NotNull Name name) {
|
||||
PsiAnnotationMemberValue attribute = getPsi().findAttributeValue(name.asString());
|
||||
return attribute == null ? null : JavaAnnotationArgumentImpl.Factory.create(attribute, name);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public Collection<JavaAnnotationArgument> getArguments() {
|
||||
@@ -74,7 +70,8 @@ public class JavaAnnotationImpl extends JavaElementImpl<PsiAnnotation> implement
|
||||
PsiClass container = psiClass.getContainingClass();
|
||||
if (container != null) {
|
||||
ClassId parentClassId = computeClassId(container);
|
||||
return parentClassId == null ? null : parentClassId.createNestedClassId(Name.identifier(psiClass.getName()));
|
||||
String name = psiClass.getName();
|
||||
return parentClassId == null || name == null ? null : parentClassId.createNestedClassId(Name.identifier(name));
|
||||
}
|
||||
|
||||
String fqName = psiClass.getQualifiedName();
|
||||
|
||||
+2
-1
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.descriptors.Visibility;
|
||||
import org.jetbrains.kotlin.load.java.structure.*;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.name.SpecialNames;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@@ -55,7 +56,7 @@ public class JavaClassImpl extends JavaClassifierImpl<PsiClass> implements JavaC
|
||||
@NotNull
|
||||
@Override
|
||||
public Name getName() {
|
||||
return Name.identifier(getPsi().getName());
|
||||
return SpecialNames.safeIdentifier(getPsi().getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
-1
@@ -20,7 +20,6 @@ import com.intellij.psi.PsiAnnotationMethod;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.PsiType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaMethod;
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaType;
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaTypeParameter;
|
||||
|
||||
+2
-1
@@ -23,6 +23,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaClassifierType;
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaTypeParameter;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.name.SpecialNames;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
@@ -36,7 +37,7 @@ public class JavaTypeParameterImpl extends JavaClassifierImpl<PsiTypeParameter>
|
||||
@NotNull
|
||||
@Override
|
||||
public Name getName() {
|
||||
return Name.identifier(getPsi().getName());
|
||||
return SpecialNames.safeIdentifier(getPsi().getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
-12
@@ -22,9 +22,6 @@ import org.jetbrains.kotlin.load.java.structure.JavaAnnotation;
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaAnnotationOwner;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
public interface ExternalAnnotationResolver {
|
||||
ExternalAnnotationResolver EMPTY = new ExternalAnnotationResolver() {
|
||||
@Nullable
|
||||
@@ -32,17 +29,8 @@ public interface ExternalAnnotationResolver {
|
||||
public JavaAnnotation findExternalAnnotation(@NotNull JavaAnnotationOwner owner, @NotNull FqName fqName) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<JavaAnnotation> findExternalAnnotations(@NotNull JavaAnnotationOwner owner) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
};
|
||||
|
||||
@Nullable
|
||||
JavaAnnotation findExternalAnnotation(@NotNull JavaAnnotationOwner owner, @NotNull FqName fqName);
|
||||
|
||||
@NotNull
|
||||
Collection<JavaAnnotation> findExternalAnnotations(@NotNull JavaAnnotationOwner owner);
|
||||
}
|
||||
|
||||
-4
@@ -19,14 +19,10 @@ package org.jetbrains.kotlin.load.java.structure;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.name.ClassId;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public interface JavaAnnotation extends JavaElement {
|
||||
@Nullable
|
||||
JavaAnnotationArgument findArgument(@NotNull Name name);
|
||||
|
||||
@NotNull
|
||||
Collection<JavaAnnotationArgument> getArguments();
|
||||
|
||||
|
||||
+3
-10
@@ -19,19 +19,12 @@ package org.jetbrains.kotlin.load.java.structure.reflect
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaAnnotation
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaAnnotationArgument
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import java.lang.reflect.Method
|
||||
|
||||
class ReflectJavaAnnotation(val annotation: Annotation) : ReflectJavaElement(), JavaAnnotation {
|
||||
override fun findArgument(name: Name): JavaAnnotationArgument? {
|
||||
return getArgumentValue(annotation.annotationClass.java.getDeclaredMethod(name.asString()))
|
||||
}
|
||||
|
||||
override fun getArguments(): Collection<JavaAnnotationArgument> {
|
||||
return annotation.annotationClass.java.declaredMethods.map { getArgumentValue(it) }
|
||||
}
|
||||
|
||||
private fun getArgumentValue(argument: Method): ReflectJavaAnnotationArgument {
|
||||
return argument.invoke(annotation).let { ReflectJavaAnnotationArgument.create(it, Name.identifier(argument.name)) }
|
||||
return annotation.annotationClass.java.declaredMethods.map { method ->
|
||||
ReflectJavaAnnotationArgument.create(method.invoke(annotation), Name.identifier(method.name))
|
||||
}
|
||||
}
|
||||
|
||||
override fun resolve() = ReflectJavaClass(annotation.annotationClass.java)
|
||||
|
||||
+2
-1
@@ -17,6 +17,7 @@
|
||||
package org.jetbrains.kotlin.load.java.structure.reflect
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.load.java.JavaVisibilities
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaModifierListOwner
|
||||
import java.lang.reflect.Modifier
|
||||
@@ -28,7 +29,7 @@ interface ReflectJavaModifierListOwner : JavaModifierListOwner {
|
||||
override fun isStatic() = Modifier.isStatic(modifiers)
|
||||
override fun isFinal() = Modifier.isFinal(modifiers)
|
||||
|
||||
override fun getVisibility() = modifiers.let { modifiers ->
|
||||
override fun getVisibility(): Visibility = modifiers.let { modifiers ->
|
||||
when {
|
||||
Modifier.isPublic(modifiers) -> Visibilities.PUBLIC
|
||||
Modifier.isPrivate(modifiers) -> Visibilities.PRIVATE
|
||||
|
||||
@@ -36,6 +36,11 @@ public class SpecialNames {
|
||||
return name != null && !name.isSpecial() ? name : SAFE_IDENTIFIER_FOR_NO_NAME;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static Name safeIdentifier(@Nullable String name) {
|
||||
return safeIdentifier(name == null ? null : Name.identifier(name));
|
||||
}
|
||||
|
||||
public static boolean isSafeIdentifier(@NotNull Name name) {
|
||||
return !name.asString().isEmpty() && !name.isSpecial();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user