Fix hot-reloading on Windows (#2544)

* Convert template path to UNIX spec to be compatible with file! macro output

* Make this code windows-only
This commit is contained in:
Matt Hunzinger authored and GitHub committed 2024-06-20 10:25:56 -07:00
1 parent 1fdee2d47a
commit 5ae7fd65ee
1 file changed
+13 -3
@@ -304,14 +304,24 @@ impl<Ctx: HotReloadingContext> FileMap<Ctx> {
pub fn template_location(old_start: proc_macro2::LineColumn, file: &Path) -> String { pub fn template_location(old_start: proc_macro2::LineColumn, file: &Path) -> String {
let line = old_start.line; let line = old_start.line;
let column = old_start.column + 1; let column = old_start.column + 1;
let location = file.display().to_string()
#[cfg(not(target_os = "windows"))]
let path = file.to_string_lossy().to_string();
#[cfg(target_os = "windows")]
let path = file
.components()
.map(|c| c.as_os_str().to_string_lossy())
.collect::<Vec<_>>()
.join("/");
path
+ ":" + ":"
+ &line.to_string() + &line.to_string()
+ ":" + ":"
+ &column.to_string() + &column.to_string()
// the byte index doesn't matter, but dioxus needs it // the byte index doesn't matter, but dioxus needs it
+ ":0"; + ":0"
location
} }
struct FileMapSearchResult { struct FileMapSearchResult {