Navigation to implementation: do not try to find expect enum inheritors

Before this commit, expect enum could find actual enum entries
as its implementation, now it cannot.
#KT-28206 Fixed
This commit is contained in:
Mikhail Glukhikh
2018-11-22 16:33:18 +03:00
parent 5502d2de6a
commit 88cea0a88c
4 changed files with 25 additions and 1 deletions
@@ -50,7 +50,12 @@ class KotlinDefinitionsSearcher : QueryExecutor<PsiElement, DefinitionsScopedSea
return when (element) {
is KtClass -> {
processClassImplementations(element, consumer) && processActualDeclarations(element, consumer)
val isExpectEnum = runReadAction { element.isEnum() && element.isExpectDeclaration() }
if (isExpectEnum) {
processActualDeclarations(element, consumer)
} else {
processClassImplementations(element, consumer) && processActualDeclarations(element, consumer)
}
}
is KtObjectDeclaration -> {
@@ -0,0 +1,8 @@
package test
expect enum class <caret>Some {
FIRST,
SECOND
}
// REF: [testModule_JVM] (test).Some
@@ -0,0 +1,6 @@
package test
actual enum class Some(val x: Int) {
FIRST(1),
SECOND(2)
}
@@ -64,6 +64,11 @@ public class KotlinGotoImplementationMultiModuleTestGenerated extends AbstractKo
runTest("idea/testData/navigation/implementations/multiModule/expectCompanion/");
}
@TestMetadata("expectEnumEntry")
public void testExpectEnumEntry() throws Exception {
runTest("idea/testData/navigation/implementations/multiModule/expectEnumEntry/");
}
@TestMetadata("expectObject")
public void testExpectObject() throws Exception {
runTest("idea/testData/navigation/implementations/multiModule/expectObject/");