diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ErrorParserManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ErrorParserManager.java
index 5b32993e1c3..01c8fdc05a4 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ErrorParserManager.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ErrorParserManager.java
@@ -326,18 +326,27 @@ public class ErrorParserManager extends OutputStream {
}
/**
- * Returns the file with the given name if that file can be uniquely identified.
+ * Returns the file with the given (partial) location if that file can be uniquely identified.
* Otherwise returns {@code null}.
+ *
+ * The passed in String 'partialLoc' is treated as a partial filesystem location for the
+ * resource. Resolution is attempted with the following precedence:
+ * If partialLoc is an absolute fs location:
+ * - Resolve it to an IFile in the Project
+ * - Resolve it to an IFile in the Workspace
+ * If partialLoc is a relative path:
+ * - Resolve it relative to the Current Working Directory
+ * - Resolve just the segments provided
*
- * @param fileName - file name could be plain file name, absolute path or partial path
+ * @param partialLoc - file name could be plain file name, absolute path or partial path
* @return - file in the workspace or {@code null}.
*/
- public IFile findFileName(String fileName) {
- if (fileName.equals(cachedFileName) && cachedWorkingDirectory != null &&
+ public IFile findFileName(String partialLoc) {
+ if (partialLoc.equals(cachedFileName) && cachedWorkingDirectory != null &&
org.eclipse.core.filesystem.URIUtil.equals(getWorkingDirectoryURI(), cachedWorkingDirectory))
return cachedFile;
- IPath path = new Path(fileName);
+ IPath path = new Path(partialLoc);
// Try to find exact match. If path is not absolute - searching in working directory.
IFile file = findFileInWorkspace(path);
@@ -360,10 +369,10 @@ public class ErrorParserManager extends OutputStream {
// Could be cygwin path
if (file==null && isCygwin && path.isAbsolute()) {
- file = findCygwinFile(fileName);
+ file = findCygwinFile(partialLoc);
}
- cachedFileName = fileName;
+ cachedFileName = partialLoc;
cachedWorkingDirectory = getWorkingDirectoryURI();
cachedFile = file;
return file;