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")