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:
@@ -300,6 +300,14 @@ fn core_macros() -> ~str {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
macro_rules! fail_unless(
|
||||||
|
($cond:expr) => {
|
||||||
|
if !$cond {
|
||||||
|
die!(~\"assertion failed: \" + stringify!($cond))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
macro_rules! condition (
|
macro_rules! condition (
|
||||||
|
|
||||||
{ $c:ident: $in:ty -> $out:ty; } => {
|
{ $c:ident: $in:ty -> $out:ty; } => {
|
||||||
|
|||||||
@@ -200,13 +200,16 @@ fn to_str(in: @ident_interner, t: Token) -> ~str {
|
|||||||
DOC_COMMENT(s) => *in.get(s),
|
DOC_COMMENT(s) => *in.get(s),
|
||||||
EOF => ~"<eof>",
|
EOF => ~"<eof>",
|
||||||
INTERPOLATED(ref nt) => {
|
INTERPOLATED(ref nt) => {
|
||||||
|
match nt {
|
||||||
|
&nt_expr(e) => ::print::pprust::expr_to_str(e, in),
|
||||||
|
_ => {
|
||||||
~"an interpolated " +
|
~"an interpolated " +
|
||||||
match (*nt) {
|
match (*nt) {
|
||||||
nt_item(*) => ~"item",
|
nt_item(*) => ~"item",
|
||||||
nt_block(*) => ~"block",
|
nt_block(*) => ~"block",
|
||||||
nt_stmt(*) => ~"statement",
|
nt_stmt(*) => ~"statement",
|
||||||
nt_pat(*) => ~"pattern",
|
nt_pat(*) => ~"pattern",
|
||||||
nt_expr(*) => ~"expression",
|
nt_expr(*) => fail ~"should have been handled above",
|
||||||
nt_ty(*) => ~"type",
|
nt_ty(*) => ~"type",
|
||||||
nt_ident(*) => ~"identifier",
|
nt_ident(*) => ~"identifier",
|
||||||
nt_path(*) => ~"path",
|
nt_path(*) => ~"path",
|
||||||
@@ -216,6 +219,8 @@ fn to_str(in: @ident_interner, t: Token) -> ~str {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pure fn can_begin_expr(t: Token) -> bool {
|
pure fn can_begin_expr(t: Token) -> bool {
|
||||||
match t {
|
match t {
|
||||||
|
|||||||
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);
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user