Remove unjustified assertions

This commit is contained in:
Alexey Sedunov
2013-12-23 18:08:18 +04:00
parent 6a9c535129
commit fbb03afc0f
20 changed files with 341 additions and 29 deletions
@@ -124,7 +124,12 @@ public class KotlinJavaFileStubProvider implements CachedValueProvider<LightClas
@Override
public LightClassStubWithData createLightClassStubWithData(PsiJavaFileStub javaFileStub, BindingContext bindingContext) {
ClassDescriptor classDescriptor = bindingContext.get(BindingContext.CLASS, classOrObject);
assert (classDescriptor != null);
if (classDescriptor == null) {
return new LightClassStubWithData(
javaFileStub,
new OutermostKotlinClassLightClassData("", classOrObject, null, Collections.<JetClassOrObject, LightClassDataForKotlinClass>emptyMap())
);
}
String jvmInternalName = CodegenBinding.getJvmInternalName(bindingContext, classDescriptor);
Collection<ClassDescriptor> allInnerClasses = CodegenBinding.getAllInnerClasses(bindingContext, classDescriptor);
@@ -90,7 +90,8 @@ public class KotlinLightClassForExplicitDeclaration extends KotlinWrappingLightC
private static String getJvmInternalName(JetClassOrObject classOrObject) {
if (JetPsiUtil.isLocal(classOrObject)) {
return getLightClassDataExactly(classOrObject).getJvmInternalName();
LightClassData data = getLightClassDataExactly(classOrObject);
return data != null ? data.getJvmInternalName() : "";
}
return PsiCodegenPredictor.getPredefinedJvmInternalName(classOrObject);
}
@@ -255,9 +256,10 @@ public class KotlinLightClassForExplicitDeclaration extends KotlinWrappingLightC
return getLightClassStubWithData().getJavaFileStub();
}
@NotNull
@Nullable
protected final ClassDescriptor getDescriptor() {
return getLightClassDataExactly(classOrObject).getDescriptor();
LightClassDataForKotlinClass data = getLightClassDataExactly(classOrObject);
return data != null ? data.getDescriptor() : null;
}
@NotNull
@@ -276,16 +278,11 @@ public class KotlinLightClassForExplicitDeclaration extends KotlinWrappingLightC
);
}
@NotNull
@Nullable
private static LightClassDataForKotlinClass getLightClassDataExactly(JetClassOrObject classOrObject) {
OutermostKotlinClassLightClassData data =
(OutermostKotlinClassLightClassData) getLightClassStubWithData(classOrObject).getClassData();
if (data.getClassOrObject().equals(classOrObject)) return data;
LightClassDataForKotlinClass innerClassData = data.getAllInnerClasses().get(classOrObject);
assert innerClassData != null;
return innerClassData;
return data.getClassOrObject().equals(classOrObject) ? data : data.getAllInnerClasses().get(classOrObject);
}
@NotNull
@@ -523,13 +520,17 @@ public class KotlinLightClassForExplicitDeclaration extends KotlinWrappingLightC
public boolean isInheritor(@NotNull PsiClass baseClass, boolean checkDeep) {
String qualifiedName;
if (baseClass instanceof KotlinLightClassForExplicitDeclaration) {
qualifiedName = DescriptorUtils.getFqName(((KotlinLightClassForExplicitDeclaration) baseClass).getDescriptor()).asString();
ClassDescriptor baseDescriptor = ((KotlinLightClassForExplicitDeclaration) baseClass).getDescriptor();
qualifiedName = baseDescriptor != null ? DescriptorUtils.getFqName(baseDescriptor).asString() : null;
}
else {
qualifiedName = baseClass.getQualifiedName();
}
return ResolvePackage.checkSuperTypeByFQName(getDescriptor(), qualifiedName, checkDeep);
ClassDescriptor thisDescriptor = getDescriptor();
return qualifiedName != null
&& thisDescriptor != null
&& ResolvePackage.checkSuperTypeByFQName(thisDescriptor, qualifiedName, checkDeep);
}
@Override
@@ -573,7 +574,10 @@ public class KotlinLightClassForExplicitDeclaration extends KotlinWrappingLightC
}
private String getFirstSupertypeFQName() {
Collection<JetType> superTypes = getDescriptor().getTypeConstructor().getSupertypes();
ClassDescriptor descriptor = getDescriptor();
if (descriptor == null) return CommonClassNames.JAVA_LANG_OBJECT;
Collection<JetType> superTypes = descriptor.getTypeConstructor().getSupertypes();
if (superTypes.isEmpty()) return CommonClassNames.JAVA_LANG_OBJECT;
@@ -26,7 +26,7 @@ trait LightClassData {
trait LightClassDataForKotlinClass: LightClassData {
val classOrObject: JetClassOrObject
val descriptor: ClassDescriptor
val descriptor: ClassDescriptor?
}
object KotlinPackageLightClassData: LightClassData {
@@ -36,13 +36,13 @@ object KotlinPackageLightClassData: LightClassData {
data class InnerKotlinClassLightClassData(
override val jvmInternalName: String,
override val classOrObject: JetClassOrObject,
override val descriptor: ClassDescriptor
override val descriptor: ClassDescriptor?
): LightClassDataForKotlinClass
data class OutermostKotlinClassLightClassData(
override val jvmInternalName: String,
override val classOrObject: JetClassOrObject,
override val descriptor: ClassDescriptor,
override val descriptor: ClassDescriptor?,
val allInnerClasses: Map<JetClassOrObject, LightClassDataForKotlinClass>
): LightClassDataForKotlinClass