KT-3812 Can't work with akka via kotlin - java.lang.AssertionError: Couldn't resolve class *$

KT-4036 Couldn't resolve inner class akka.io.Tcp.Command.class

 #KT-3812 Fixed
 #KT-4036 FIxed
This commit is contained in:
Mikhael Bogdanov
2013-10-31 13:35:17 +04:00
parent c325dfffd9
commit 7857dc5ba9
6 changed files with 44 additions and 7 deletions
@@ -208,7 +208,7 @@ public final class JavaClassResolver {
return alreadyResolved;
}
ClassOrNamespaceDescriptor containingDeclaration = resolveParentDescriptor(qualifiedName, javaClass.getOuterClass() != null);
ClassOrNamespaceDescriptor containingDeclaration = resolveParentDescriptor(qualifiedName, javaClass.getOuterClass());
// class may be resolved during resolution of parent
ClassDescriptor cachedDescriptor = classDescriptorCache.get(javaClassToKotlinFqName(qualifiedName));
if (cachedDescriptor != null) {
@@ -374,16 +374,17 @@ public final class JavaClassResolver {
}
@NotNull
private ClassOrNamespaceDescriptor resolveParentDescriptor(@NotNull FqName childClassFQName, boolean isInnerClass) {
FqName parentFqName = childClassFQName.parent();
if (isInnerClass) {
ClassDescriptor parentClass = resolveClass(parentFqName, INCLUDE_KOTLIN_SOURCES);
if (parentClass == null) {
private ClassOrNamespaceDescriptor resolveParentDescriptor(@NotNull FqName childClassFQName, JavaClass parentClass) {
if (parentClass != null) {
FqName parentFqName = parentClass.getFqName();
ClassDescriptor parentClassDescriptor = resolveClass(parentFqName, INCLUDE_KOTLIN_SOURCES);
if (parentClassDescriptor == null) {
throw new IllegalStateException("Could not resolve " + parentFqName + " required to be parent for " + childClassFQName);
}
return parentClass;
return parentClassDescriptor;
}
else {
FqName parentFqName = childClassFQName.parent();
NamespaceDescriptor parentNamespace = namespaceResolver.resolveNamespace(parentFqName, INCLUDE_KOTLIN_SOURCES);
if (parentNamespace == null) {
throw new IllegalStateException("Could not resolve " + parentFqName + " required to be parent for " + childClassFQName);