KT-1456 ISE in JavaDescriptorResolver ...

KT-1456 ISE in JavaDescriptorResolver on attempt to create subclass
with partially specifying type arguments

Also add internal state checks.
This commit is contained in:
Stepan Koltsov
2012-02-29 19:42:17 +04:00
parent a9bab96e33
commit 28ff40e659
2 changed files with 17 additions and 4 deletions
@@ -803,17 +803,27 @@ public class JavaDescriptorResolver {
return resolveNamespace(psiPackage);
}
public PsiClass findClass(String qualifiedName) {
@Nullable
public PsiClass findClass(@NotNull String qualifiedName) {
PsiClass original = javaFacade.findClass(qualifiedName, javaSearchScope);
PsiClass altClass = altClassFinder.findClass(qualifiedName);
PsiClass result = original;
if (altClass != null) {
if (altClass instanceof ClsClassImpl) {
altClass.putUserData(ClsClassImpl.DELEGATE_KEY, original);
}
return altClass;
result = altClass;
}
return original;
if (result != null) {
String actualQualifiedName = result.getQualifiedName();
if (!actualQualifiedName.equals(qualifiedName)) {
throw new IllegalStateException("requested " + qualifiedName + ", got " + actualQualifiedName);
}
}
return result;
}
/*package*/ PsiPackage findPackage(String qualifiedName) {
@@ -83,7 +83,10 @@ public abstract class JetTypeJetSignatureReader extends JetSignatureExceptionsAd
@Override
public void visitClassType(String name, boolean nullable, boolean forceReal) {
String ourName = name.replace('/', '.');
String ourName = name
.replace('/', '.')
.replace('$', '.') // TODO: not sure
;
this.classDescriptor = null;
if (this.classDescriptor == null && !forceReal) {