From cf7f94a55963206d2e1a6ff572821030c7855a18 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Thu, 15 Oct 2015 19:05:40 +0300 Subject: [PATCH] Process request for searching class with empty qualified name without errors --- .../kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt | 2 ++ .../src/org/jetbrains/kotlin/asJava/JavaElementFinder.java | 2 ++ compiler/testData/asJava/findClasses/EmptyQualifiedName.kt | 0 .../org/jetbrains/kotlin/asJava/JavaElementFinderTest.java | 4 ++++ 4 files changed, 8 insertions(+) create mode 100644 compiler/testData/asJava/findClasses/EmptyQualifiedName.kt diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt index ddaefebeb96..2d485cabe7b 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/CliLightClassGenerationSupport.kt @@ -166,6 +166,8 @@ public class CliLightClassGenerationSupport(project: Project) : LightClassGenera } override fun findFilesForFacade(facadeFqName: FqName, scope: GlobalSearchScope): Collection { + if (facadeFqName.isRoot) return emptyList() + return PackagePartClassUtils.getFilesWithCallables(findFilesForPackage(facadeFqName.parent(), scope)).filter { JvmFileClassUtil.getFileClassInfoNoResolve(it).facadeClassFqName == facadeFqName } diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/JavaElementFinder.java b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/JavaElementFinder.java index fb4566600db..ac9157e04d2 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/JavaElementFinder.java +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/JavaElementFinder.java @@ -146,6 +146,8 @@ public class JavaElementFinder extends PsiElementFinder implements KotlinFinderM } private void findInterfaceDefaultImpls(FqName qualifiedName, GlobalSearchScope scope, List answer) { + if (qualifiedName.isRoot()) return; + if (!qualifiedName.shortName().asString().equals(JvmAbi.DEFAULT_IMPLS_CLASS_NAME)) return; for (JetClassOrObject classOrObject : lightClassGenerationSupport.findClassOrObjectDeclarations(qualifiedName.parent(), scope)) { diff --git a/compiler/testData/asJava/findClasses/EmptyQualifiedName.kt b/compiler/testData/asJava/findClasses/EmptyQualifiedName.kt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/compiler/tests/org/jetbrains/kotlin/asJava/JavaElementFinderTest.java b/compiler/tests/org/jetbrains/kotlin/asJava/JavaElementFinderTest.java index 66ef2c0cd0a..60e3ad0bb4d 100644 --- a/compiler/tests/org/jetbrains/kotlin/asJava/JavaElementFinderTest.java +++ b/compiler/tests/org/jetbrains/kotlin/asJava/JavaElementFinderTest.java @@ -47,6 +47,10 @@ public class JavaElementFinderTest extends KotlinAsJavaTestBase { // TODO: assertClass("Direction.WEST.Some"); } + public void testEmptyQualifiedName() { + assertNoClass(""); + } + private void assertClass(String qualifiedName) { PsiClass psiClass = finder.findClass(qualifiedName, GlobalSearchScope.allScope(getProject())); assertNotNull(String.format("Class with fqn='%s' wasn't found.", qualifiedName), psiClass);