JetPositionManager: fix finding psi file by source name

This commit is contained in:
Natalia Ukhorskaya
2015-05-26 18:08:18 +03:00
parent c77d448832
commit ffb7027680
@@ -78,7 +78,7 @@ public class DebuggerUtils {
return filesWithExactName.iterator().next(); return filesWithExactName.iterator().next();
} }
if (!isPackagePartClassName(className)) { if (isPackageClassName(className)) {
for (JetFile file : filesWithExactName) { for (JetFile file : filesWithExactName) {
boolean hasTopLevelMembers = KotlinPackage.any(file.getDeclarations(), new Function1<JetDeclaration, Boolean>() { boolean hasTopLevelMembers = KotlinPackage.any(file.getDeclarations(), new Function1<JetDeclaration, Boolean>() {
@Override @Override
@@ -90,6 +90,7 @@ public class DebuggerUtils {
} }
} }
if (isPackagePartClassName(className)) {
JetFile file = getFileForPackagePartPrefixedName(filesWithExactName, className.getInternalName()); JetFile file = getFileForPackagePartPrefixedName(filesWithExactName, className.getInternalName());
if (file != null) { if (file != null) {
return file; return file;
@@ -118,14 +119,22 @@ public class DebuggerUtils {
return null; return null;
} }
return filesWithExactName.iterator().next();
}
private static boolean isPackagePartClassName(JvmClassName className) { private static boolean isPackagePartClassName(JvmClassName className) {
FqName packageFqName = PackageClassUtils.getPackageClassFqName(className.getPackageFqName()); String packageName = PackageClassUtils.getPackageClassInternalName(className.getPackageFqName());
String packageName = packageFqName.asString().replaceAll("\\.", "/");
String internalName = className.getInternalName(); String internalName = className.getInternalName();
return !internalName.equals(packageName) && internalName.startsWith(packageName); return !internalName.equals(packageName) && internalName.startsWith(packageName);
} }
private static boolean isPackageClassName(JvmClassName className) {
String packageName = PackageClassUtils.getPackageClassInternalName(className.getPackageFqName());
return packageName.equals(className.getInternalName());
}
@Nullable @Nullable
private static JetFile getFileForPackagePartPrefixedName( private static JetFile getFileForPackagePartPrefixedName(
@NotNull Collection<JetFile> allPackageFiles, @NotNull Collection<JetFile> allPackageFiles,