about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2019-06-11 02:25:39 +0000
committerbors <bors@rust-lang.org>2019-06-11 02:25:39 +0000
commitefc30d0cda9002029cdda254a50c82ea82e670da (patch)
tree90ea38e33e0c987062931f07a3984d884b6204d6 /src
parent5e2c11034f9255f8b7bc7ded527d1db5175985f8 (diff)
parent7a22c34be712b5071b7e9db1aecf4e8f8afdeb8b (diff)
downloadrust-efc30d0cda9002029cdda254a50c82ea82e670da.tar.gz
rust-efc30d0cda9002029cdda254a50c82ea82e670da.zip
Auto merge of #61052 - jsgf:emit-save-analysis-notifications, r=alexcrichton
Emit save analysis notifications

Addresses issue https://github.com/rust-lang/rust/issues/61047
Diffstat (limited to 'src')
-rw-r--r--src/librustc_save_analysis/lib.rs26
-rw-r--r--src/test/ui/save-analysis/emit-notifications.nll.stderr2
-rw-r--r--src/test/ui/save-analysis/emit-notifications.rs4
-rw-r--r--src/test/ui/save-analysis/emit-notifications.stderr2
4 files changed, 26 insertions, 8 deletions
diff --git a/src/librustc_save_analysis/lib.rs b/src/librustc_save_analysis/lib.rs
index a695a90f2ae..cda6b60b767 100644
--- a/src/librustc_save_analysis/lib.rs
+++ b/src/librustc_save_analysis/lib.rs
@@ -1016,7 +1016,7 @@ impl<'a> DumpHandler<'a> {
         }
     }
 
-    fn output_file(&self, ctx: &SaveContext<'_, '_>) -> File {
+    fn output_file(&self, ctx: &SaveContext<'_, '_>) -> (File, PathBuf) {
         let sess = &ctx.tcx.sess;
         let file_name = match ctx.config.output_file {
             Some(ref s) => PathBuf::from(s),
@@ -1054,7 +1054,7 @@ impl<'a> DumpHandler<'a> {
             |e| sess.fatal(&format!("Could not open {}: {}", file_name.display(), e)),
         );
 
-        output_file
+        (output_file, file_name)
     }
 }
 
@@ -1066,13 +1066,23 @@ impl<'a> SaveHandler for DumpHandler<'a> {
         cratename: &str,
         input: &'l Input,
     ) {
-        let output = &mut self.output_file(&save_ctxt);
-        let mut dumper = JsonDumper::new(output, save_ctxt.config.clone());
-        let mut visitor = DumpVisitor::new(save_ctxt, &mut dumper);
+        let sess = &save_ctxt.tcx.sess;
+        let file_name = {
+            let (mut output, file_name) = self.output_file(&save_ctxt);
+            let mut dumper = JsonDumper::new(&mut output, save_ctxt.config.clone());
+            let mut visitor = DumpVisitor::new(save_ctxt, &mut dumper);
 
-        visitor.dump_crate_info(cratename, krate);
-        visitor.dump_compilation_options(input, cratename);
-        visit::walk_crate(&mut visitor, krate);
+            visitor.dump_crate_info(cratename, krate);
+            visitor.dump_compilation_options(input, cratename);
+            visit::walk_crate(&mut visitor, krate);
+
+            file_name
+        };
+
+        if sess.opts.debugging_opts.emit_artifact_notifications {
+            sess.parse_sess.span_diagnostic
+                .emit_artifact_notification(&file_name, "save-analysis");
+        }
     }
 }
 
diff --git a/src/test/ui/save-analysis/emit-notifications.nll.stderr b/src/test/ui/save-analysis/emit-notifications.nll.stderr
new file mode 100644
index 00000000000..60734cedb50
--- /dev/null
+++ b/src/test/ui/save-analysis/emit-notifications.nll.stderr
@@ -0,0 +1,2 @@
+{"artifact":"$TEST_BUILD_DIR/save-analysis/emit-notifications.nll/save-analysis/libemit_notifications.json","emit":"save-analysis"}
+{"artifact":"$TEST_BUILD_DIR/save-analysis/emit-notifications.nll/libemit_notifications.rlib","emit":"link"}
diff --git a/src/test/ui/save-analysis/emit-notifications.rs b/src/test/ui/save-analysis/emit-notifications.rs
new file mode 100644
index 00000000000..411acbb14db
--- /dev/null
+++ b/src/test/ui/save-analysis/emit-notifications.rs
@@ -0,0 +1,4 @@
+// compile-pass
+// compile-flags: -Zsave-analysis -Zemit-artifact-notifications
+// compile-flags: --crate-type rlib --error-format=json
+pub fn foo() {}
diff --git a/src/test/ui/save-analysis/emit-notifications.stderr b/src/test/ui/save-analysis/emit-notifications.stderr
new file mode 100644
index 00000000000..e16f60f8b5f
--- /dev/null
+++ b/src/test/ui/save-analysis/emit-notifications.stderr
@@ -0,0 +1,2 @@
+{"artifact":"$TEST_BUILD_DIR/save-analysis/emit-notifications/save-analysis/libemit_notifications.json","emit":"save-analysis"}
+{"artifact":"$TEST_BUILD_DIR/save-analysis/emit-notifications/libemit_notifications.rlib","emit":"link"}