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) {