Move utilities using annotations to determine whether PsiClass is kotlin class or package class to DescriptorResolverUtils
Fix some of the usages PackageClassUtils uses more precise method name
This commit is contained in:
+27
-6
@@ -17,6 +17,7 @@
|
|||||||
package org.jetbrains.jet.lang.resolve.java;
|
package org.jetbrains.jet.lang.resolve.java;
|
||||||
|
|
||||||
import com.intellij.psi.*;
|
import com.intellij.psi.*;
|
||||||
|
import com.intellij.psi.impl.compiled.ClsClassImpl;
|
||||||
import com.intellij.psi.util.PsiFormatUtil;
|
import com.intellij.psi.util.PsiFormatUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@@ -37,19 +38,39 @@ import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getClassObjectName;
|
|||||||
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.isEnumClassObject;
|
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.isEnumClassObject;
|
||||||
|
|
||||||
public final class DescriptorResolverUtils {
|
public final class DescriptorResolverUtils {
|
||||||
|
|
||||||
public static final FqName OBJECT_FQ_NAME = new FqName("java.lang.Object");
|
public static final FqName OBJECT_FQ_NAME = new FqName("java.lang.Object");
|
||||||
|
|
||||||
private DescriptorResolverUtils() {
|
private DescriptorResolverUtils() {
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: check that method is used properly
|
public static boolean isCompiledKotlinPackageClass(@NotNull PsiClass psiClass) {
|
||||||
public static boolean isKotlinClass(@NotNull PsiClass psiClass) {
|
if (!(psiClass instanceof ClsClassImpl)) {
|
||||||
PsiModifierList modifierList = psiClass.getModifierList();
|
|
||||||
if (modifierList == null) {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
PsiAnnotation kotlinClassAnnotation = modifierList.findAnnotation(JvmStdlibNames.KOTLIN_CLASS.getFqName().asString());
|
if (!PackageClassUtils.isPackageClassFqName(new FqName(psiClass.getQualifiedName()))) {
|
||||||
return kotlinClassAnnotation != null;
|
return false;
|
||||||
|
}
|
||||||
|
return hasAnnotation(psiClass, JvmStdlibNames.KOTLIN_PACKAGE.getFqName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isCompiledKotlinClass(@NotNull PsiClass psiClass) {
|
||||||
|
if (!(psiClass instanceof ClsClassImpl)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return hasAnnotation(psiClass, JvmStdlibNames.KOTLIN_CLASS.getFqName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean hasAnnotation(@NotNull PsiClass psiClass, @NotNull FqName annotationFqName) {
|
||||||
|
PsiModifierList list = psiClass.getModifierList();
|
||||||
|
if (list != null) {
|
||||||
|
return list.findAnnotation(annotationFqName.asString()) != null;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isCompiledKotlinClassOrPackageClass(@NotNull PsiClass psiClass) {
|
||||||
|
return isCompiledKotlinClass(psiClass) || isCompiledKotlinPackageClass(psiClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
+6
-9
@@ -17,15 +17,17 @@
|
|||||||
package org.jetbrains.jet.lang.resolve.java;
|
package org.jetbrains.jet.lang.resolve.java;
|
||||||
|
|
||||||
import com.intellij.openapi.util.text.StringUtil;
|
import com.intellij.openapi.util.text.StringUtil;
|
||||||
import com.intellij.psi.PsiClass;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
|
||||||
public class PackageClassUtils {
|
public final class PackageClassUtils {
|
||||||
|
|
||||||
private static final String DEFAULT_PACKAGE = "_DefaultPackage";
|
private static final String DEFAULT_PACKAGE = "_DefaultPackage";
|
||||||
|
|
||||||
|
private PackageClassUtils() {
|
||||||
|
}
|
||||||
|
|
||||||
// ex. <root> -> _DefaultPackage, a -> APackage, a.b -> BPackage
|
// ex. <root> -> _DefaultPackage, a -> APackage, a.b -> BPackage
|
||||||
public static String getPackageClassName(@NotNull FqName packageFQN) {
|
public static String getPackageClassName(@NotNull FqName packageFQN) {
|
||||||
if (packageFQN.isRoot()) {
|
if (packageFQN.isRoot()) {
|
||||||
@@ -38,15 +40,10 @@ public class PackageClassUtils {
|
|||||||
return packageFQN.child(Name.identifier(getPackageClassName(packageFQN)));
|
return packageFQN.child(Name.identifier(getPackageClassName(packageFQN)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isPackageClass(@NotNull PsiClass psiClass) {
|
public static boolean isPackageClassFqName(@NotNull FqName fqName) {
|
||||||
//TODO: read kotlin info
|
|
||||||
return psiClass.getName().endsWith("Package");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isPackageClass(@NotNull FqName fqName) {
|
|
||||||
if (fqName.isRoot()) {
|
if (fqName.isRoot()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return PackageClassUtils.getPackageClassFqName(fqName.parent()).equals(fqName);
|
return getPackageClassFqName(fqName.parent()).equals(fqName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-26
@@ -18,8 +18,10 @@ package org.jetbrains.jet.lang.resolve.java.resolver;
|
|||||||
|
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.intellij.psi.*;
|
import com.intellij.psi.PsiClass;
|
||||||
import com.intellij.psi.impl.compiled.ClsClassImpl;
|
import com.intellij.psi.PsiMember;
|
||||||
|
import com.intellij.psi.PsiModifier;
|
||||||
|
import com.intellij.psi.PsiPackage;
|
||||||
import com.intellij.util.containers.ContainerUtil;
|
import com.intellij.util.containers.ContainerUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
@@ -164,12 +166,12 @@ public final class JavaNamespaceResolver {
|
|||||||
trace.record(JavaBindingContext.JAVA_NAMESPACE_KIND, namespaceDescriptor, JavaNamespaceKind.PROPER);
|
trace.record(JavaBindingContext.JAVA_NAMESPACE_KIND, namespaceDescriptor, JavaNamespaceKind.PROPER);
|
||||||
|
|
||||||
if (psiClass != null) {
|
if (psiClass != null) {
|
||||||
boolean hasKotlinPackageAnnotation = hasKotlinPackageAnnotation(psiClass);
|
boolean isCompiledKotlinPackageClass = DescriptorResolverUtils.isCompiledKotlinPackageClass(psiClass);
|
||||||
if (isOldKotlinPackageClass(psiClass) && !hasKotlinPackageAnnotation) {
|
if (isOldKotlinPackageClass(psiClass) && !isCompiledKotlinPackageClass) {
|
||||||
// If psiClass has old annotations (@JetPackage) but doesn't have @KotlinPackage, report ABI version error
|
// If psiClass has old annotations (@JetPackage) but doesn't have @KotlinPackage, report ABI version error
|
||||||
AbiVersionUtil.checkAbiVersion(psiClass, INVALID_VERSION, trace);
|
AbiVersionUtil.checkAbiVersion(psiClass, INVALID_VERSION, trace);
|
||||||
}
|
}
|
||||||
if (hasKotlinPackageAnnotation) {
|
if (isCompiledKotlinPackageClass) {
|
||||||
// If psiClass has @KotlinPackage (regardless of whether it has @JetPackage or not), deserialize it to Kotlin descriptor.
|
// If psiClass has @KotlinPackage (regardless of whether it has @JetPackage or not), deserialize it to Kotlin descriptor.
|
||||||
// Note that @KotlinPackage may still have an old ABI version, in which case null is returned by createKotlinPackageScope
|
// Note that @KotlinPackage may still have an old ABI version, in which case null is returned by createKotlinPackageScope
|
||||||
JetScope kotlinPackageScope = deserializedDescriptorResolver.createKotlinPackageScope(psiClass, namespaceDescriptor);
|
JetScope kotlinPackageScope = deserializedDescriptorResolver.createKotlinPackageScope(psiClass, namespaceDescriptor);
|
||||||
@@ -186,7 +188,7 @@ public final class JavaNamespaceResolver {
|
|||||||
if (psiClass == null) {
|
if (psiClass == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (DescriptorResolverUtils.isKotlinClass(psiClass)) {
|
if (DescriptorResolverUtils.isCompiledKotlinClassOrPackageClass(psiClass)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (!hasStaticMembers(psiClass)) {
|
if (!hasStaticMembers(psiClass)) {
|
||||||
@@ -200,25 +202,7 @@ public final class JavaNamespaceResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isOldKotlinPackageClass(@NotNull PsiClass psiClass) {
|
private static boolean isOldKotlinPackageClass(@NotNull PsiClass psiClass) {
|
||||||
return hasAnnotation(psiClass, JvmStdlibNames.JET_PACKAGE_CLASS.getFqName());
|
return DescriptorResolverUtils.hasAnnotation(psiClass, JvmStdlibNames.JET_PACKAGE_CLASS.getFqName());
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean hasKotlinPackageAnnotation(@NotNull PsiClass psiClass) {
|
|
||||||
// TODO: merge this method with DescriptorResolverUtils#isKotlinClass
|
|
||||||
// NOTE: we need to check against ClsClassImpl because it can be a Java source, pretending to be a Kotlin class.
|
|
||||||
// In that case we can't really read the annotation from psiClass's virtual file
|
|
||||||
if (!(psiClass instanceof ClsClassImpl)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return hasAnnotation(psiClass, JvmStdlibNames.KOTLIN_PACKAGE.getFqName());
|
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean hasAnnotation(@NotNull PsiClass psiClass, @NotNull FqName annotationFqName) {
|
|
||||||
PsiModifierList list = psiClass.getModifierList();
|
|
||||||
if (list != null) {
|
|
||||||
return list.findAnnotation(annotationFqName.asString()) != null;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cache(@NotNull FqName fqName, @Nullable JetScope packageScope) {
|
private void cache(@NotNull FqName fqName, @Nullable JetScope packageScope) {
|
||||||
@@ -280,7 +264,7 @@ public final class JavaNamespaceResolver {
|
|||||||
PsiClass[] classes = psiPackage.getClasses();
|
PsiClass[] classes = psiPackage.getClasses();
|
||||||
List<Name> result = new ArrayList<Name>(classes.length);
|
List<Name> result = new ArrayList<Name>(classes.length);
|
||||||
for (PsiClass psiClass : classes) {
|
for (PsiClass psiClass : classes) {
|
||||||
if (DescriptorResolverUtils.isKotlinClass(psiClass)) {
|
if (DescriptorResolverUtils.isCompiledKotlinClass(psiClass)) {
|
||||||
result.add(Name.identifier(psiClass.getName()));
|
result.add(Name.identifier(psiClass.getName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -51,7 +51,7 @@ public final class ScopeUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (PsiClass psiClass : javaSemanticServices.getPsiClassFinder().findPsiClasses(psiPackage)) {
|
for (PsiClass psiClass : javaSemanticServices.getPsiClassFinder().findPsiClasses(psiPackage)) {
|
||||||
if (PackageClassUtils.isPackageClass(psiClass)) {
|
if (DescriptorResolverUtils.isCompiledKotlinPackageClass(psiClass)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,9 @@ import com.intellij.util.SmartList;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.codegen.NamespaceCodegen;
|
import org.jetbrains.jet.codegen.NamespaceCodegen;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetEnumEntry;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaPsiFacadeKotlinHacks;
|
import org.jetbrains.jet.lang.resolve.java.JavaPsiFacadeKotlinHacks;
|
||||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
@@ -85,7 +87,7 @@ public class JavaElementFinder extends PsiElementFinder implements JavaPsiFacade
|
|||||||
|
|
||||||
findClassesAndObjects(qualifiedName, scope, answer);
|
findClassesAndObjects(qualifiedName, scope, answer);
|
||||||
|
|
||||||
if (PackageClassUtils.isPackageClass(qualifiedName)) {
|
if (PackageClassUtils.isPackageClassFqName(qualifiedName)) {
|
||||||
findPackageClass(qualifiedName.parent(), scope, answer);
|
findPackageClass(qualifiedName.parent(), scope, answer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,13 +24,11 @@ import com.intellij.psi.impl.java.stubs.index.JavaAnnotationIndex;
|
|||||||
import com.intellij.psi.search.GlobalSearchScope;
|
import com.intellij.psi.search.GlobalSearchScope;
|
||||||
import jet.KotlinClass;
|
import jet.KotlinClass;
|
||||||
import jet.KotlinPackage;
|
import jet.KotlinPackage;
|
||||||
import com.intellij.psi.util.PsiTreeUtil;
|
|
||||||
import jet.runtime.typeinfo.JetPackageClass;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.descriptors.serialization.*;
|
import org.jetbrains.jet.descriptors.serialization.*;
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassKind;
|
import org.jetbrains.jet.lang.descriptors.ClassKind;
|
||||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
import org.jetbrains.jet.lang.resolve.java.DescriptorResolverUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.DeserializedDescriptorResolver;
|
import org.jetbrains.jet.lang.resolve.java.resolver.DeserializedDescriptorResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
@@ -95,9 +93,6 @@ public class JetFromJavaDescriptorHelper {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static ClassKind getCompiledClassKind(@NotNull PsiClass psiClass) {
|
public static ClassKind getCompiledClassKind(@NotNull PsiClass psiClass) {
|
||||||
if (PackageClassUtils.isPackageClass(psiClass)) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
ClassData classData = getClassData(psiClass);
|
ClassData classData = getClassData(psiClass);
|
||||||
if (classData == null) return null;
|
if (classData == null) return null;
|
||||||
return DescriptorDeserializer.classKind(Flags.CLASS_KIND.get(classData.getClassProto().getFlags()));
|
return DescriptorDeserializer.classKind(Flags.CLASS_KIND.get(classData.getClassProto().getFlags()));
|
||||||
@@ -143,7 +138,7 @@ public class JetFromJavaDescriptorHelper {
|
|||||||
|
|
||||||
FqName classFQN = new FqName(qualifiedName);
|
FqName classFQN = new FqName(qualifiedName);
|
||||||
|
|
||||||
if (PackageClassUtils.isPackageClass(containingClass)) {
|
if (DescriptorResolverUtils.isCompiledKotlinPackageClass(containingClass)) {
|
||||||
FqName classParentFQN = QualifiedNamesUtil.withoutLastSegment(classFQN);
|
FqName classParentFQN = QualifiedNamesUtil.withoutLastSegment(classFQN);
|
||||||
return QualifiedNamesUtil.combine(classParentFQN, Name.identifier(method.getName()));
|
return QualifiedNamesUtil.combine(classParentFQN, Name.identifier(method.getName()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -138,14 +138,14 @@ public final class DescriptorLookupConverter {
|
|||||||
private static LookupElement createJavaLookupElementIfPossible(@NotNull PsiElement declaration, @NotNull DeclarationDescriptor descriptor) {
|
private static LookupElement createJavaLookupElementIfPossible(@NotNull PsiElement declaration, @NotNull DeclarationDescriptor descriptor) {
|
||||||
if (declaration instanceof PsiClass) {
|
if (declaration instanceof PsiClass) {
|
||||||
PsiClass psiClass = (PsiClass) declaration;
|
PsiClass psiClass = (PsiClass) declaration;
|
||||||
if (!DescriptorResolverUtils.isKotlinClass(psiClass)) {
|
if (!DescriptorResolverUtils.isCompiledKotlinClassOrPackageClass(psiClass)) {
|
||||||
return setCustomInsertHandler(new JavaPsiClassReferenceElement(psiClass));
|
return setCustomInsertHandler(new JavaPsiClassReferenceElement(psiClass));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (declaration instanceof PsiMember) {
|
if (declaration instanceof PsiMember) {
|
||||||
PsiClass containingClass = ((PsiMember) declaration).getContainingClass();
|
PsiClass containingClass = ((PsiMember) declaration).getContainingClass();
|
||||||
if (containingClass != null && !DescriptorResolverUtils.isKotlinClass(containingClass)) {
|
if (containingClass != null && !DescriptorResolverUtils.isCompiledKotlinClassOrPackageClass(containingClass)) {
|
||||||
if (declaration instanceof PsiMethod) {
|
if (declaration instanceof PsiMethod) {
|
||||||
InsertHandler<LookupElement> handler = getInsertHandler(descriptor);
|
InsertHandler<LookupElement> handler = getInsertHandler(descriptor);
|
||||||
assert handler != null: "Special kotlin handler is expected for function: " + declaration.getText() + " and descriptor" + DescriptorRenderer.TEXT.render(descriptor);
|
assert handler != null: "Special kotlin handler is expected for function: " + declaration.getText() + " and descriptor" + DescriptorRenderer.TEXT.render(descriptor);
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ public class JetTypesCompletionHelper {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DescriptorResolverUtils.isKotlinClass(aClass)) {
|
if (DescriptorResolverUtils.isCompiledKotlinClass(aClass)) {
|
||||||
if (JetFromJavaDescriptorHelper.getCompiledClassKind(aClass) != ClassKind.CLASS_OBJECT) {
|
if (JetFromJavaDescriptorHelper.getCompiledClassKind(aClass) != ClassKind.CLASS_OBJECT) {
|
||||||
String qualifiedName = aClass.getQualifiedName();
|
String qualifiedName = aClass.getQualifiedName();
|
||||||
if (qualifiedName != null) {
|
if (qualifiedName != null) {
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ import org.jetbrains.jet.lang.resolve.BindingContext;
|
|||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.ImportPath;
|
import org.jetbrains.jet.lang.resolve.ImportPath;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
|
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
|
||||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
import org.jetbrains.jet.lang.resolve.java.DescriptorResolverUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
|
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
@@ -283,7 +283,7 @@ public class JetImportOptimizer implements ImportOptimizer {
|
|||||||
if (memberName == null) {
|
if (memberName == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (PackageClassUtils.isPackageClass(containingClass)) {
|
if (DescriptorResolverUtils.isCompiledKotlinPackageClass(containingClass)) {
|
||||||
return QualifiedNamesUtil.combine(classFQN.parent(), Name.identifier(memberName));
|
return QualifiedNamesUtil.combine(classFQN.parent(), Name.identifier(memberName));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
@@ -32,7 +32,10 @@ import org.jetbrains.jet.lang.psi.JetFile;
|
|||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
|
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.MemberComparator;
|
import org.jetbrains.jet.lang.resolve.MemberComparator;
|
||||||
import org.jetbrains.jet.lang.resolve.java.*;
|
import org.jetbrains.jet.lang.resolve.java.DescriptorResolverUtils;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.renderer.DescriptorRenderer;
|
import org.jetbrains.jet.renderer.DescriptorRenderer;
|
||||||
import org.jetbrains.jet.renderer.DescriptorRendererBuilder;
|
import org.jetbrains.jet.renderer.DescriptorRendererBuilder;
|
||||||
@@ -77,7 +80,7 @@ public class DecompiledDataFactory {
|
|||||||
|
|
||||||
PsiClass psiClass = clsFile.getClasses()[0];
|
PsiClass psiClass = clsFile.getClasses()[0];
|
||||||
|
|
||||||
if (PackageClassUtils.isPackageClass(psiClass)) {
|
if (DescriptorResolverUtils.isCompiledKotlinPackageClass(psiClass)) {
|
||||||
NamespaceDescriptor nd = javaDescriptorResolver.resolveNamespace(new FqName(packageName), DescriptorSearchRule.INCLUDE_KOTLIN);
|
NamespaceDescriptor nd = javaDescriptorResolver.resolveNamespace(new FqName(packageName), DescriptorSearchRule.INCLUDE_KOTLIN);
|
||||||
|
|
||||||
if (nd != null) {
|
if (nd != null) {
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ public class JetDecompiledData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isKotlinFile(@NotNull ClsFileImpl clsFile) {
|
public static boolean isKotlinFile(@NotNull ClsFileImpl clsFile) {
|
||||||
return DescriptorResolverUtils.isKotlinClass(clsFile.getClasses()[0]);
|
return DescriptorResolverUtils.isCompiledKotlinClassOrPackageClass(clsFile.getClasses()[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
Reference in New Issue
Block a user