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, ()))
}
};
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())
}