digitalmars.D.bugs - [Issue 21227] New: import(".\\file") doesn't work on Windows
- d-bugmail puremagic.com (53/54) Sep 05 2020 https://issues.dlang.org/show_bug.cgi?id=21227
https://issues.dlang.org/show_bug.cgi?id=21227 Issue ID: 21227 Summary: import(".\\file") doesn't work on Windows Product: D Version: D2 Hardware: x86_64 OS: Windows Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: andrey.zherikov gmail.com Imports with backslash doesn't work on Windows although backslash is a valid path character there. This can be reproduced with this: ======= test.d void main() { pragma(msg, import("./file")); pragma(msg, import(".\\file")); } ======= file hello ======= Command to reproduce:dmd -J. -run test.dhello test.d(4): Error: file ".\\file" cannot be found or not in a path specified with -J test.d(4): while evaluating pragma(msg, import(".\\file")) DMD used to reproduce: - DMD32 D Compiler v2.091.0-dirty - latest master (DMD64 D Compiler v2.093.1-524-g1e09d998f) The issue is in if condition here: https://github.com/dlang/dmd/blob/master/src/dmd/root/filename.d#L744 And this change efficiently fixes it although I'm not sure whether something else should be done: diff --git a/src/dmd/root/filename.d b/src/dmd/root/filename.d index 09810df8e..673582d0e 100644 --- a/src/dmd/root/filename.d +++ b/src/dmd/root/filename.d -741,7 +741,7 nothrow: for (const(char)* p = name; *p; p++) { char c = *p; - if (c == '\\' || c == ':' || c == '%' || (c == '.' && p[1] == '.') || (c == '/' && p[1] == '/')) + if (c == ':' || c == '%' || (c == '.' && p[1] == '.') || (c == '/' && p[1] == '/')) { return null; } --
Sep 05 2020