From 28ff40e65954656767cf3d6644d4542772e50122 Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Wed, 29 Feb 2012 19:42:17 +0400 Subject: [PATCH] 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. --- .../resolve/java/JavaDescriptorResolver.java | 16 +++++++++++++--- .../resolve/java/JetTypeJetSignatureReader.java | 5 ++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index d06c3a74cde..465692b5139 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -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) { diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JetTypeJetSignatureReader.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JetTypeJetSignatureReader.java index 08623eb8827..6b2b982c666 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JetTypeJetSignatureReader.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JetTypeJetSignatureReader.java @@ -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) {