getContainingClass() is never null for methods and fields

This commit is contained in:
Alexander Udalov
2013-08-02 22:11:32 +04:00
parent 4e1fb7e0eb
commit 520f812030
9 changed files with 13 additions and 33 deletions
@@ -99,8 +99,7 @@ public final class DescriptorResolverUtils {
* corresponding package). This applies to enum entries, values() and valueOf(String) methods
*/
public static boolean shouldBeInEnumClassObject(@NotNull JavaMember member) {
JavaClass javaClass = member.getContainingClass();
if (javaClass == null || !javaClass.isEnum()) return false;
if (!member.getContainingClass().isEnum()) return false;
if (member instanceof JavaField && ((JavaField) member).isEnumEntry()) return true;
@@ -117,13 +116,7 @@ public final class DescriptorResolverUtils {
}
public static boolean isObjectMethodInInterface(@NotNull JavaMember member) {
if (!(member instanceof JavaMethod)) {
return false;
}
JavaClass containingClass = member.getContainingClass();
assert containingClass != null : "Containing class is null for member: " + member;
return containingClass.isInterface() && isObjectMethod((JavaMethod) member);
return member.getContainingClass().isInterface() && member instanceof JavaMethod && isObjectMethod((JavaMethod) member);
}
public static boolean isObjectMethod(@NotNull JavaMethod method) {
@@ -153,10 +153,7 @@ class PropagationHeuristics {
return Collections.emptyList();
}
JavaClass containingClass = initialMethod.getContainingClass();
assert containingClass != null : " containing class is null for " + initialMethod;
for (JavaClassifierType supertype : containingClass.getSupertypes()) {
for (JavaClassifierType supertype : initialMethod.getContainingClass().getSupertypes()) {
collectFromSupertype(supertype);
}
@@ -234,11 +231,10 @@ class PropagationHeuristics {
}
private static boolean canHaveSuperMethod(@NotNull JavaMethod method) {
if (method.isConstructor() || method.isStatic() || method.getVisibility() == Visibilities.PRIVATE) {
return false;
}
JavaClass containingClass = method.getContainingClass();
return containingClass != null && !JavaSupertypeResolver.OBJECT_FQ_NAME.equals(containingClass.getFqName());
return !method.isConstructor() &&
!method.isStatic() &&
method.getVisibility() != Visibilities.PRIVATE &&
!JavaSupertypeResolver.OBJECT_FQ_NAME.equals(method.getContainingClass().getFqName());
}
}
}
@@ -222,7 +222,6 @@ public class SignaturesPropagationData {
for (JavaMethod superMethod : PropagationHeuristics.getSuperMethods(method)) {
JavaClass javaClass = superMethod.getContainingClass();
assert javaClass != null : "Super method doesn't have a containing class: " + superMethod;
FqName classFqName = javaClass.getFqName();
assert classFqName != null : "Class FQ name should not be null: " + javaClass;
@@ -121,10 +121,7 @@ public final class JavaAnnotationArgumentResolver {
JavaField field = (JavaField) element;
if (!field.isEnumEntry()) return null;
JavaClass javaClass = field.getContainingClass();
if (javaClass == null) return null;
FqName fqName = javaClass.getFqName();
FqName fqName = field.getContainingClass().getFqName();
if (fqName == null) return null;
ClassDescriptor enumClass = classResolver.resolveClass(fqName, INCLUDE_KOTLIN_SOURCES, taskList);
@@ -351,7 +351,6 @@ public final class JavaClassResolver {
@NotNull ClassDescriptorFromJvmBytecode samInterface
) {
JavaClass methodContainer = samInterfaceMethod.getContainingClass();
assert methodContainer != null : "method container is null for " + samInterfaceMethod;
FqName containerFqName = methodContainer.getFqName();
assert containerFqName != null : "qualified name is null for " + methodContainer;
@@ -31,7 +31,6 @@ class JavaMethodSignatureUtil {
// This and following methods are originally from com.intellij.codeInsight.daemon.impl.analysis.HighlightMethodUtil
static boolean isMethodReturnTypeCompatible(@NotNull JavaMethod method) {
if (method.isStatic()) return true;
if (method.getContainingClass() == null) return false;
HierarchicalMethodSignature methodSignature = method.getPsi().getHierarchicalMethodSignature();
List<HierarchicalMethodSignature> superSignatures = methodSignature.getSuperSignatures();
@@ -219,9 +219,7 @@ import java.util.Map;
}
private boolean isInCurrentClass(@NotNull JavaMember member) {
JavaClass containingClass = member.getContainingClass();
if (containingClass == null) return false;
FqName fqName = containingClass.getFqName();
FqName fqName = member.getContainingClass().getFqName();
return fqName != null && fqName.equals(javaClass.getFqName());
}
@@ -25,7 +25,6 @@ public interface JavaMember extends JavaModifierListOwner, JavaAnnotationOwner,
@Override
PsiMember getPsi();
// TODO: NotNull ?
@Nullable
@NotNull
JavaClass getContainingClass();
}
@@ -45,12 +45,12 @@ public abstract class JavaMemberImpl extends JavaElementImpl implements JavaMemb
return Name.identifier(name);
}
// TODO: NotNull?
@Nullable
@NotNull
@Override
public JavaClass getContainingClass() {
PsiClass psiClass = getPsi().getContainingClass();
return psiClass == null ? null : new JavaClass(psiClass);
assert psiClass != null : "Member must have a containing class: " + getPsi();
return new JavaClass(psiClass);
}
@Override