diff --git a/src/ast/mod.rs b/src/ast/mod.rs index bf9f413..d270f9a 100644 --- a/src/ast/mod.rs +++ b/src/ast/mod.rs @@ -568,31 +568,50 @@ impl ModuleDef { } pub fn imports_to_absolute(&mut self, base: PathBuf) { + &base; let rewrite_import = |e: &mut Expression| { if let Expression::Include(ref mut def) = e { let path = PathBuf::from(&def.path.fragment); - if path.is_relative() { - def.path.fragment = base - .join(path) - .canonicalize() - .unwrap() - .to_string_lossy() - .to_string(); + #[cfg(not(windows))] + { + if path.is_relative() { + def.path.fragment = base + .join(path) + .canonicalize() + .unwrap() + .to_string_lossy() + .to_string(); + } + } + #[cfg(windows)] + { + if path.is_relative() { + def.path.fragment = dbg!(base.join(path).to_string_lossy().to_string()); + } } } if let Expression::Import(ref mut def) = e { - let path = PathBuf::from(&def.path.fragment); + let path = dbg!(PathBuf::from(&def.path.fragment)); // std/ paths are special and do not get made into absolute paths. if path.starts_with("std/") { return; } - if path.is_relative() { - def.path.fragment = base - .join(path) - .canonicalize() - .unwrap() - .to_string_lossy() - .to_string(); + #[cfg(not(windows))] + { + if path.is_relative() { + def.path.fragment = base + .join(path) + .canonicalize() + .unwrap() + .to_string_lossy() + .to_string(); + } + } + #[cfg(windows)] + { + if path.is_relative() { + def.path.fragment = base.join(path).to_string_lossy().to_string(); + } } } }; diff --git a/src/build/mod.rs b/src/build/mod.rs index f238479..db9be90 100644 --- a/src/build/mod.rs +++ b/src/build/mod.rs @@ -381,14 +381,21 @@ where } else { normalized = path; } - match normalized.canonicalize() { - Ok(p) => Ok(p), - Err(e) => Err(error::BuildError::new( - format!("Path not found {}", normalized.to_string_lossy()), - error::ErrorType::OSError, - ) - .wrap_cause(Box::new(e)) - .to_boxed()), + #[cfg(windows)] + { + Ok(normalized) + } + #[cfg(not(windows))] + { + match normalized.canonicalize() { + Ok(p) => Ok(p), + Err(e) => Err(error::BuildError::new( + format!("Path not found {}", normalized.to_string_lossy()), + error::ErrorType::OSError, + ) + .wrap_cause(Box::new(e)) + .to_boxed()), + } } }