Skip to content

Commit

Permalink
Add error codes for libsyntax_ext
Browse files Browse the repository at this point in the history
  • Loading branch information
GuillaumeGomez committed Apr 14, 2018
1 parent fb730d7 commit 44c6861
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 3 deletions.
5 changes: 4 additions & 1 deletion src/libsyntax/ext/base.rs
Expand Up @@ -14,7 +14,7 @@ use ast::{self, Attribute, Name, PatKind, MetaItem};
use attr::HasAttrs;
use codemap::{self, CodeMap, Spanned, respan};
use syntax_pos::{Span, MultiSpan, DUMMY_SP};
use errors::DiagnosticBuilder;
use errors::{DiagnosticBuilder, DiagnosticId};
use ext::expand::{self, Expansion, Invocation};
use ext::hygiene::{Mark, SyntaxContext};
use fold::{self, Folder};
Expand Down Expand Up @@ -841,6 +841,9 @@ impl<'a> ExtCtxt<'a> {
pub fn span_err<S: Into<MultiSpan>>(&self, sp: S, msg: &str) {
self.parse_sess.span_diagnostic.span_err(sp, msg);
}
pub fn span_err_with_code<S: Into<MultiSpan>>(&self, sp: S, msg: &str, code: DiagnosticId) {
self.parse_sess.span_diagnostic.span_err_with_code(sp, msg, code);
}
pub fn mut_span_err<S: Into<MultiSpan>>(&self, sp: S, msg: &str)
-> DiagnosticBuilder<'a> {
self.parse_sess.span_diagnostic.mut_span_err(sp, msg)
Expand Down
16 changes: 14 additions & 2 deletions src/libsyntax_ext/asm.rs
Expand Up @@ -45,6 +45,17 @@ impl State {
}
}

macro_rules! span_err_if_not_stage0 {
($cx:expr, $sp:expr, $code:ident, $text:tt) => {
#[cfg(not(stage0))] {
span_err!($cx, $sp, $code, $text)
}
#[cfg(stage0)] {
$cx.span_err($sp, $text)
}
}
}

const OPTIONS: &'static [&'static str] = &["volatile", "alignstack", "intel"];

pub fn expand_asm<'cx>(cx: &'cx mut ExtCtxt,
Expand Down Expand Up @@ -89,7 +100,7 @@ pub fn expand_asm<'cx>(cx: &'cx mut ExtCtxt,
if asm_str_style.is_some() {
// If we already have a string with instructions,
// ending up in Asm state again is an error.
cx.span_err(sp, "malformed inline assembly");
span_err_if_not_stage0!(cx, sp, E0660, "malformed inline assembly");
return DummyResult::expr(sp);
}
// Nested parser, stop before the first colon (see above).
Expand Down Expand Up @@ -142,7 +153,8 @@ pub fn expand_asm<'cx>(cx: &'cx mut ExtCtxt,
Some(Symbol::intern(&format!("={}", ch.as_str())))
}
_ => {
cx.span_err(span, "output operand constraint lacks '=' or '+'");
span_err_if_not_stage0!(cx, span, E0661,
"output operand constraint lacks '=' or '+'");
None
}
};
Expand Down
22 changes: 22 additions & 0 deletions src/libsyntax_ext/diagnostics.rs
@@ -0,0 +1,22 @@
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#![allow(non_snake_case)]

// Error messages for EXXXX errors.
// Each message should start and end with a new line, and be wrapped to 80 characters.
// In vim you can `:set tw=80` and use `gq` to wrap paragraphs. Use `:set tw=0` to disable.
register_long_diagnostics! {
E0660: r##"
"##,

E0661: r##"
"##,
}
5 changes: 5 additions & 0 deletions src/libsyntax_ext/lib.rs
Expand Up @@ -18,6 +18,8 @@
#![feature(decl_macro)]
#![feature(str_escape)]

#![cfg_attr(not(stage0), feature(rustc_diagnostic_macros))]

extern crate fmt_macros;
#[macro_use]
extern crate syntax;
Expand All @@ -26,6 +28,9 @@ extern crate proc_macro;
extern crate rustc_data_structures;
extern crate rustc_errors as errors;

#[cfg(not(stage0))]
mod diagnostics;

mod assert;
mod asm;
mod cfg;
Expand Down

0 comments on commit 44c6861

Please sign in to comment.