diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyProvider.java b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyProvider.java index dd76f561c10..1884f9f639f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyProvider.java +++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyProvider.java @@ -37,7 +37,10 @@ public class KotlinCallHierarchyProvider implements HierarchyProvider { Project project = CommonDataKeys.PROJECT.getData(dataContext); if (project == null) return null; - return HierarchyUtils.getCallHierarchyElement(getCurrentElement(dataContext, project)); + PsiElement element = getCurrentElement(dataContext, project); + if (element == null) return null; + + return HierarchyUtils.getCallHierarchyElement(element); } private static PsiElement getCurrentElement(DataContext dataContext, Project project) { diff --git a/idea/testData/hierarchy/calls/callers/kotlinUnresolvedFunction/KotlinUnresolvedFunction_verification.xml b/idea/testData/hierarchy/calls/callers/kotlinUnresolvedFunction/KotlinUnresolvedFunction_verification.xml new file mode 100644 index 00000000000..8e9d1b1d318 --- /dev/null +++ b/idea/testData/hierarchy/calls/callers/kotlinUnresolvedFunction/KotlinUnresolvedFunction_verification.xml @@ -0,0 +1,3 @@ + + + diff --git a/idea/testData/hierarchy/calls/callers/kotlinUnresolvedFunction/main0.kt b/idea/testData/hierarchy/calls/callers/kotlinUnresolvedFunction/main0.kt new file mode 100644 index 00000000000..13d5dceb215 --- /dev/null +++ b/idea/testData/hierarchy/calls/callers/kotlinUnresolvedFunction/main0.kt @@ -0,0 +1,3 @@ +fun test() { + foo() +} \ No newline at end of file diff --git a/idea/testData/hierarchy/calls/callers/kotlinUnresolvedFunction/messages.txt b/idea/testData/hierarchy/calls/callers/kotlinUnresolvedFunction/messages.txt new file mode 100644 index 00000000000..ac59d48ed55 --- /dev/null +++ b/idea/testData/hierarchy/calls/callers/kotlinUnresolvedFunction/messages.txt @@ -0,0 +1 @@ +Cannot apply action for element at caret \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/AbstractHierarchyTest.java b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/AbstractHierarchyTest.java index 6a7c2df804b..cefb9fef7cc 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/AbstractHierarchyTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/AbstractHierarchyTest.java @@ -30,6 +30,7 @@ import com.intellij.psi.PsiClass; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; +import com.intellij.refactoring.util.CommonRefactoringUtil.RefactoringErrorHintException; import com.intellij.testFramework.MapDataContext; import com.intellij.util.ArrayUtil; import com.intellij.util.Processor; @@ -162,7 +163,7 @@ public abstract class AbstractHierarchyTest extends KotlinHierarchyViewTestBase private PsiElement getElementAtCaret(HierarchyProvider provider) { PsiElement target = provider.getTarget(getDataContext()); - assert target != null : "Cannot apply action for element at caret"; + if (target == null) throw new RefactoringErrorHintException("Cannot apply action for element at caret"); return target; } @@ -195,6 +196,17 @@ public abstract class AbstractHierarchyTest extends KotlinHierarchyViewTestBase return ArrayUtil.toStringArray(files); } + @Override + protected void doHierarchyTest(Computable treeStructureComputable, String... fileNames) throws Exception { + try { + super.doHierarchyTest(treeStructureComputable, fileNames); + } + catch (RefactoringErrorHintException e) { + String expectedMessage = FileUtil.loadFile(new File(folderName, "messages.txt"), true); + assertEquals(expectedMessage, e.getLocalizedMessage()); + } + } + @Override protected String getBasePath() { return folderName.substring("idea/testData/".length()); diff --git a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java index 9445977ced4..b852d256a9d 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java @@ -390,6 +390,12 @@ public class HierarchyTestGenerated extends AbstractHierarchyTest { String fileName = JetTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callers/kotlinProperty/"); doCallerHierarchyTest(fileName); } + + @TestMetadata("kotlinUnresolvedFunction") + public void testKotlinUnresolvedFunction() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callers/kotlinUnresolvedFunction/"); + doCallerHierarchyTest(fileName); + } } @TestMetadata("idea/testData/hierarchy/calls/callees")