mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-04 11:04:03 +00:00
libsyntax: Implement assert
as a macro (called fail_unless!
on a transitionary basis to avoid conflicting with the keyword right now). r=brson
This commit is contained in:
parent
54b2cad8b3
commit
154488df19
@ -300,6 +300,14 @@ fn core_macros() -> ~str {
|
||||
)
|
||||
)
|
||||
|
||||
macro_rules! fail_unless(
|
||||
($cond:expr) => {
|
||||
if !$cond {
|
||||
die!(~\"assertion failed: \" + stringify!($cond))
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
macro_rules! condition (
|
||||
|
||||
{ $c:ident: $in:ty -> $out:ty; } => {
|
||||
|
@ -200,19 +200,24 @@ fn to_str(in: @ident_interner, t: Token) -> ~str {
|
||||
DOC_COMMENT(s) => *in.get(s),
|
||||
EOF => ~"<eof>",
|
||||
INTERPOLATED(ref nt) => {
|
||||
~"an interpolated " +
|
||||
match (*nt) {
|
||||
nt_item(*) => ~"item",
|
||||
nt_block(*) => ~"block",
|
||||
nt_stmt(*) => ~"statement",
|
||||
nt_pat(*) => ~"pattern",
|
||||
nt_expr(*) => ~"expression",
|
||||
nt_ty(*) => ~"type",
|
||||
nt_ident(*) => ~"identifier",
|
||||
nt_path(*) => ~"path",
|
||||
nt_tt(*) => ~"tt",
|
||||
nt_matchers(*) => ~"matcher sequence"
|
||||
match nt {
|
||||
&nt_expr(e) => ::print::pprust::expr_to_str(e, in),
|
||||
_ => {
|
||||
~"an interpolated " +
|
||||
match (*nt) {
|
||||
nt_item(*) => ~"item",
|
||||
nt_block(*) => ~"block",
|
||||
nt_stmt(*) => ~"statement",
|
||||
nt_pat(*) => ~"pattern",
|
||||
nt_expr(*) => fail ~"should have been handled above",
|
||||
nt_ty(*) => ~"type",
|
||||
nt_ident(*) => ~"identifier",
|
||||
nt_path(*) => ~"path",
|
||||
nt_tt(*) => ~"tt",
|
||||
nt_matchers(*) => ~"matcher sequence"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
6
src/test/run-fail/assert-as-macro.rs
Normal file
6
src/test/run-fail/assert-as-macro.rs
Normal file
@ -0,0 +1,6 @@
|
||||
// error-pattern:assertion failed: 1 == 2
|
||||
|
||||
fn main() {
|
||||
fail_unless!(1 == 2);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user