summaryrefslogtreecommitdiffstats
path: root/tests/run-coverage/closure_macro.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/run-coverage/closure_macro.rs')
-rw-r--r--tests/run-coverage/closure_macro.rs40
1 files changed, 40 insertions, 0 deletions
diff --git a/tests/run-coverage/closure_macro.rs b/tests/run-coverage/closure_macro.rs
new file mode 100644
index 000000000..5e3b00d1e
--- /dev/null
+++ b/tests/run-coverage/closure_macro.rs
@@ -0,0 +1,40 @@
+// compile-flags: --edition=2018
+#![feature(no_coverage)]
+
+macro_rules! bail {
+ ($msg:literal $(,)?) => {
+ if $msg.len() > 0 {
+ println!("no msg");
+ } else {
+ println!($msg);
+ }
+ return Err(String::from($msg));
+ };
+}
+
+macro_rules! on_error {
+ ($value:expr, $error_message:expr) => {
+ $value.or_else(|e| { // FIXME(85000): no coverage in closure macros
+ let message = format!($error_message, e);
+ if message.len() > 0 {
+ println!("{}", message);
+ Ok(String::from("ok"))
+ } else {
+ bail!("error");
+ }
+ })
+ };
+}
+
+fn load_configuration_files() -> Result<String, String> {
+ Ok(String::from("config"))
+}
+
+pub fn main() -> Result<(), String> {
+ println!("Starting service");
+ let config = on_error!(load_configuration_files(), "Error loading configs: {}")?;
+
+ let startup_delay_duration = String::from("arg");
+ let _ = (config, startup_delay_duration);
+ Ok(())
+}