Refactor CodegenBinding & PsiCodegenPredictor
Use ASM Type to store names of classes, use strings in PsiCodegenPredictor. Inline some methods, move closer to their usages
This commit is contained in:
+4
-4
@@ -43,8 +43,8 @@ import org.jetbrains.jet.codegen.binding.PsiCodegenPredictor;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.resolve.java.jetAsJava.JetJavaMirrorMarker;
|
||||
import org.jetbrains.jet.lang.resolve.java.JvmClassName;
|
||||
import org.jetbrains.jet.lang.resolve.java.jetAsJava.JetJavaMirrorMarker;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
|
||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||
@@ -66,10 +66,10 @@ public class KotlinLightClassForExplicitDeclaration extends AbstractLightClass i
|
||||
return null;
|
||||
}
|
||||
|
||||
JvmClassName jvmClassName = PsiCodegenPredictor.getPredefinedJvmClassName(classOrObject);
|
||||
if (jvmClassName == null) return null;
|
||||
String jvmInternalName = PsiCodegenPredictor.getPredefinedJvmInternalName(classOrObject);
|
||||
if (jvmInternalName == null) return null;
|
||||
|
||||
return new KotlinLightClassForExplicitDeclaration(manager, jvmClassName.getFqName(), classOrObject);
|
||||
return new KotlinLightClassForExplicitDeclaration(manager, JvmClassName.byInternalName(jvmInternalName).getFqName(), classOrObject);
|
||||
}
|
||||
|
||||
private final FqName classFqName; // FqName of (possibly inner) class
|
||||
|
||||
@@ -36,11 +36,10 @@ import com.intellij.util.PathUtil;
|
||||
import com.intellij.util.SmartList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.codegen.binding.PsiCodegenPredictor;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
import org.jetbrains.jet.lang.resolve.java.jetAsJava.JetClsMethod;
|
||||
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
|
||||
import org.jetbrains.jet.lang.resolve.java.JvmClassName;
|
||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
||||
import org.jetbrains.jet.lang.resolve.java.jetAsJava.JetClsMethod;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||
import org.jetbrains.jet.utils.ExceptionUtils;
|
||||
@@ -235,12 +234,11 @@ public class LightClassUtil {
|
||||
|
||||
if (parent instanceof JetFile) {
|
||||
// top-level declaration
|
||||
JvmClassName jvmName = PsiCodegenPredictor.getPredefinedJvmClassName((JetFile) parent, true);
|
||||
if (jvmName != null) {
|
||||
FqName fqName = getPackageClassNameForFile((JetFile) parent);
|
||||
if (fqName != null) {
|
||||
Project project = declaration.getProject();
|
||||
|
||||
String fqName = jvmName.getFqName().asString();
|
||||
return JavaElementFinder.getInstance(project).findClass(fqName, GlobalSearchScope.allScope(project));
|
||||
return JavaElementFinder.getInstance(project).findClass(fqName.asString(), GlobalSearchScope.allScope(project));
|
||||
}
|
||||
}
|
||||
else if (parent instanceof JetClassBody) {
|
||||
@@ -251,6 +249,12 @@ public class LightClassUtil {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static FqName getPackageClassNameForFile(@NotNull JetFile jetFile) {
|
||||
String packageName = jetFile.getPackageName();
|
||||
return packageName == null ? null : PackageClassUtils.getPackageClassFqName(new FqName(packageName));
|
||||
}
|
||||
|
||||
private static PropertyAccessorsPsiMethods extractPropertyAccessors(
|
||||
@NotNull JetDeclaration jetDeclaration,
|
||||
@Nullable PsiMethod specialGetter, @Nullable PsiMethod specialSetter
|
||||
|
||||
Reference in New Issue
Block a user