about summary refs log tree commit diff
diff options
context:
space:
mode:
authorvarkor <github@varkor.com>2018-01-29 16:31:14 +0000
committervarkor <github@varkor.com>2018-01-29 16:31:14 +0000
commit79d85dab88536a66efdf550d687591b1bc53c022 (patch)
tree0a23d2544ae030e4ff71bc26f859d11be32055d3
parent6b99adeb11313197f409b4f7c4083c2ceca8a4fe (diff)
downloadrust-79d85dab88536a66efdf550d687591b1bc53c022.tar.gz
rust-79d85dab88536a66efdf550d687591b1bc53c022.zip
Create a directory for --out-dir if it does not already exist
Currently if `--out-dir` is set to a non-existent directory, the
compiler will throw unfriendly messages like `error: could not write
output to subdir/example.crate.allocator.rcgu.o: No such file or
directory`, which, while not completely unreadable, isn’t very
user-friendly either. This change creates the directory automatically
if it does not yet exist.
-rw-r--r--src/librustc_driver/driver.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/librustc_driver/driver.rs b/src/librustc_driver/driver.rs
index e97d83ed1ee..ed680feae0a 100644
--- a/src/librustc_driver/driver.rs
+++ b/src/librustc_driver/driver.rs
@@ -163,6 +163,13 @@ pub fn compile_input(trans: Box<TransCrate>,
             return Ok(())
         }
 
+        if let &Some(ref dir) = outdir {
+            if fs::create_dir_all(dir).is_err() {
+                sess.err("failed to find or create the directory specified by --out-dir");
+                return Err(CompileIncomplete::Stopped);
+            }
+        }
+
         let arenas = AllArenas::new();
 
         // Construct the HIR map