summaryrefslogtreecommitdiff
path: root/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java')
-rw-r--r--java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java14
1 files changed, 10 insertions, 4 deletions
diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java b/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java
index 2c31e75cc521..016b01ed6f96 100644
--- a/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java
+++ b/java/debugger/impl/src/com/intellij/debugger/engine/PositionManagerImpl.java
@@ -27,6 +27,7 @@ import com.intellij.openapi.project.DumbService;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.NullableComputable;
import com.intellij.openapi.util.Ref;
+import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.search.FilenameIndex;
import com.intellij.psi.search.GlobalSearchScope;
@@ -194,12 +195,17 @@ public class PositionManagerImpl implements PositionManager {
return element.getContainingFile();
}
else {
- // for now just take the first file with the required name
- // TODO: if there are more than one, we can try matching package name and sourcePath if available
+ // try to search by filename
try {
PsiFile[] files = FilenameIndex.getFilesByName(project, refType.sourceName(), GlobalSearchScope.allScope(project));
- if (files.length > 0) {
- return files[0];
+ for (PsiFile file : files) {
+ if (file instanceof PsiJavaFile) {
+ for (PsiClass cls : ((PsiJavaFile)file).getClasses()) {
+ if (StringUtil.equals(originalQName, cls.getQualifiedName())) {
+ return file;
+ }
+ }
+ }
}
}
catch (AbsentInformationException ignore) {