From 0abc64ea9c310388d792e855193debe12cceed36 Mon Sep 17 00:00:00 2001 From: loki der quaeler <quaeler@gmail.com> Date: Thu, 20 Feb 2020 13:47:16 -0800 Subject: [PATCH] Absolute paths on Windows not working #424 . Corrected a bug in which TLAFile creation featuring a fully qualified path was ending up incorrectly formed. [Bug][Tools] --- tlatools/src/util/FilenameToStream.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tlatools/src/util/FilenameToStream.java b/tlatools/src/util/FilenameToStream.java index a9f475925..9010800e2 100644 --- a/tlatools/src/util/FilenameToStream.java +++ b/tlatools/src/util/FilenameToStream.java @@ -3,6 +3,7 @@ package util; import java.io.File; +import java.util.regex.Pattern; /** @@ -24,7 +25,13 @@ public interface FilenameToStream * SimpleFilenameToStream). Thus, capture this information at module load * time when it is known where a module was loaded from. */ + @SuppressWarnings("serial") public static class TLAFile extends File { + private static final String ROOT_PATH_REGEX + = "^([A-Z]+:)?" + ((File.separatorChar == '\\') ? "\\\\" : File.separator); + private static final Pattern ROOT_PATH_PATTERN = Pattern.compile(ROOT_PATH_REGEX); + + private final boolean isLibraryModule; private transient final FilenameToStream resolver; @@ -39,7 +46,10 @@ public interface FilenameToStream } public TLAFile(String parent, String child, FilenameToStream fts) { - super(parent, child); + super(parent, + ((ROOT_PATH_PATTERN.matcher(parent).find() && child.startsWith(parent)) + ? child.substring(parent.length()) + : child)); this.isLibraryModule = false; this.resolver = fts; } -- GitLab