Change marker classes. Use only Java classes as to determine runtime even if abi version is outdated.
This commit is contained in:
@@ -59,7 +59,7 @@ public class ProjectStructureUtil {
|
|||||||
public static boolean isJavaKotlinModule(@NotNull Module module) {
|
public static boolean isJavaKotlinModule(@NotNull Module module) {
|
||||||
GlobalSearchScope scope = module.getModuleWithDependenciesAndLibrariesScope(
|
GlobalSearchScope scope = module.getModuleWithDependenciesAndLibrariesScope(
|
||||||
hasKotlinFilesOnlyInTests(module));
|
hasKotlinFilesOnlyInTests(module));
|
||||||
return KotlinRuntimeLibraryCoreUtil.getKotlinRuntimeMarkerClass(scope) != null;
|
return KotlinRuntimeLibraryCoreUtil.getKotlinRuntimeMarkerClass(module.getProject(), scope) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isJsKotlinModule(@NotNull final Module module) {
|
public static boolean isJsKotlinModule(@NotNull final Module module) {
|
||||||
|
|||||||
+11
-17
@@ -17,31 +17,25 @@
|
|||||||
package org.jetbrains.jet.plugin.versions;
|
package org.jetbrains.jet.plugin.versions;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
import com.google.common.collect.ImmutableList;
|
||||||
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.psi.JavaPsiFacade;
|
import com.intellij.psi.JavaPsiFacade;
|
||||||
import com.intellij.psi.PsiClass;
|
import com.intellij.psi.PsiClass;
|
||||||
import com.intellij.psi.search.GlobalSearchScope;
|
import com.intellij.psi.search.GlobalSearchScope;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
|
||||||
|
|
||||||
public class KotlinRuntimeLibraryCoreUtil {
|
public class KotlinRuntimeLibraryCoreUtil {
|
||||||
|
private static final ImmutableList<String> CANDIDATE_CLASSES = ImmutableList.of(
|
||||||
|
"kotlin.jvm.internal.Intrinsics",
|
||||||
|
|
||||||
|
// For older versions
|
||||||
|
"jet.runtime.Intrinsics"
|
||||||
|
);
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static PsiClass getKotlinRuntimeMarkerClass(@NotNull GlobalSearchScope scope) {
|
public static PsiClass getKotlinRuntimeMarkerClass(@NotNull Project project, @NotNull GlobalSearchScope scope) {
|
||||||
FqName kotlinPackageFqName = FqName.topLevel(Name.identifier("kotlin"));
|
for (String className : CANDIDATE_CLASSES) {
|
||||||
String kotlinPackageClassFqName = PackageClassUtils.getPackageClassFqName(kotlinPackageFqName).asString();
|
PsiClass psiClass = JavaPsiFacade.getInstance(project).findClass(className, scope);
|
||||||
|
|
||||||
ImmutableList<String> candidateClassNames = ImmutableList.of(
|
|
||||||
kotlinPackageClassFqName,
|
|
||||||
"kotlin.Unit",
|
|
||||||
// For older versions
|
|
||||||
"kotlin.namespace",
|
|
||||||
"jet.Unit"
|
|
||||||
);
|
|
||||||
|
|
||||||
for (String className : candidateClassNames) {
|
|
||||||
PsiClass psiClass = JavaPsiFacade.getInstance(scope.getProject()).findClass(className, scope);
|
|
||||||
if (psiClass != null) {
|
if (psiClass != null) {
|
||||||
return psiClass;
|
return psiClass;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ public class KotlinJavaModuleConfigurator extends KotlinWithLibraryConfigurator
|
|||||||
}
|
}
|
||||||
|
|
||||||
LibraryScope scope = new LibraryScope(project, library);
|
LibraryScope scope = new LibraryScope(project, library);
|
||||||
return KotlinRuntimeLibraryCoreUtil.getKotlinRuntimeMarkerClass(scope) != null;
|
return KotlinRuntimeLibraryCoreUtil.getKotlinRuntimeMarkerClass(project, scope) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
KotlinJavaModuleConfigurator() {
|
KotlinJavaModuleConfigurator() {
|
||||||
|
|||||||
Reference in New Issue
Block a user