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:
+13
-3
@@ -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) {
|
||||
|
||||
+4
-1
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user