]> git.lizzy.rs Git - rust.git/blobdiff - src/libsyntax/diagnostics/plugin.rs
rollup merge of #21438: taralx/kill-racycell
[rust.git] / src / libsyntax / diagnostics / plugin.rs
index 0f4ebd74b66c72c38ec0f8f62a1cf887d71aec8c..0e99829fa1c66e477244b0cc9279164c6f0b2f51 100644 (file)
@@ -56,15 +56,22 @@ pub fn expand_diagnostic_used<'cx>(ecx: &'cx mut ExtCtxt,
     with_used_diagnostics(|diagnostics| {
         match diagnostics.insert(code.name, span) {
             Some(previous_span) => {
-                ecx.span_warn(span, format!(
+                ecx.span_warn(span, &format!(
                     "diagnostic code {} already used", token::get_ident(code).get()
-                ).index(&FullRange));
+                )[]);
                 ecx.span_note(previous_span, "previous invocation");
             },
             None => ()
         }
         ()
     });
+    with_registered_diagnostics(|diagnostics| {
+        if !diagnostics.contains_key(&code.name) {
+            ecx.span_err(span, &format!(
+                "used diagnostic code {} not registered", token::get_ident(code).get()
+            )[]);
+        }
+    });
     MacExpr::new(quote_expr!(ecx, ()))
 }
 
@@ -85,14 +92,14 @@ pub fn expand_register_diagnostic<'cx>(ecx: &'cx mut ExtCtxt,
     };
     with_registered_diagnostics(|diagnostics| {
         if diagnostics.insert(code.name, description).is_some() {
-            ecx.span_err(span, format!(
+            ecx.span_err(span, &format!(
                 "diagnostic code {} already registered", token::get_ident(*code).get()
-            ).index(&FullRange));
+            )[]);
         }
     });
-    let sym = Ident::new(token::gensym((
+    let sym = Ident::new(token::gensym(&(
         "__register_diagnostic_".to_string() + token::get_ident(*code).get()
-    ).index(&FullRange)));
+    )[]));
     MacItems::new(vec![quote_item!(ecx, mod $sym {}).unwrap()].into_iter())
 }