Make ClassId's relative class name FqName instead of FqNameUnsafe

It was FqNameUnsafe in times when there were classes without identifier names,
specifically class objects with names like '<class-object-for-...>'
This commit is contained in:
Alexander Udalov
2015-03-18 18:20:09 +03:00
parent 31554b9fa3
commit 9a041136f2
15 changed files with 94 additions and 112 deletions
@@ -31,7 +31,6 @@ import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl;
import org.jetbrains.kotlin.load.java.structure.impl.JavaPackageImpl;
import org.jetbrains.kotlin.name.ClassId;
import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.name.FqNameUnsafe;
import org.jetbrains.kotlin.resolve.jvm.JavaClassFinderPostConstruct;
import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade;
@@ -87,14 +86,14 @@ public class JavaClassFinderImpl implements JavaClassFinder {
@Nullable
@Override
public JavaClass findClass(@NotNull ClassId classId) {
FqNameUnsafe fqName = classId.asSingleFqName();
FqName fqName = classId.asSingleFqName();
PsiClass psiClass = javaFacade.findClass(fqName.asString(), javaSearchScope);
if (psiClass == null) return null;
JavaClassImpl javaClass = new JavaClassImpl(psiClass);
if (!fqName.equalsTo(javaClass.getFqName())) {
if (!fqName.equals(javaClass.getFqName())) {
throw new IllegalStateException("Requested " + fqName + ", got " + javaClass.getFqName());
}
@@ -25,7 +25,6 @@ import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader;
import org.jetbrains.kotlin.load.kotlin.header.ReadKotlinClassHeaderAnnotationVisitor;
import org.jetbrains.kotlin.name.ClassId;
import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.name.FqNameUnsafe;
import org.jetbrains.kotlin.name.Name;
import org.jetbrains.org.objectweb.asm.ClassReader;
import org.jetbrains.org.objectweb.asm.ClassVisitor;
@@ -288,7 +287,7 @@ public abstract class FileBasedKotlinClass implements KotlinJvmBinaryClass {
Collections.reverse(classes);
FqName packageFqName = outermostClassFqName.parent();
FqNameUnsafe relativeClassName = FqNameUnsafe.fromSegments(classes);
FqName relativeClassName = FqName.fromSegments(classes);
return new ClassId(packageFqName, relativeClassName, local);
}
@@ -18,12 +18,12 @@ package org.jetbrains.kotlin.load.kotlin
import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl
import org.jetbrains.kotlin.utils.sure
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.utils.sure
public abstract class VirtualFileKotlinClassFinder : VirtualFileFinder {
override fun findKotlinClass(classId: ClassId): KotlinJvmBinaryClass? {
val file = findVirtualFileWithHeader(classId.asSingleFqName().toSafe()) ?: return null
val file = findVirtualFileWithHeader(classId.asSingleFqName()) ?: return null
return KotlinBinaryClassCache.getKotlinBinaryClass(file)
}