From eba3367404e9ca6abf84199b5c2dbe51ce6cdbde Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Fri, 22 Mar 2013 13:11:03 -0700 Subject: [PATCH] libsyntax: Introduce the new `assert!` macro; make `assert` no longer a keyword --- src/libcore/at_vec.rs | 2 +- src/libsyntax/ext/expand.rs | 13 +++++++++++++ src/libsyntax/parse/obsolete.rs | 5 ----- src/libsyntax/parse/parser.rs | 6 +----- src/libsyntax/parse/token.rs | 2 +- 5 files changed, 16 insertions(+), 12 deletions(-) diff --git a/src/libcore/at_vec.rs b/src/libcore/at_vec.rs index 29b7e35e24b7..dbc132899d90 100644 --- a/src/libcore/at_vec.rs +++ b/src/libcore/at_vec.rs @@ -291,7 +291,7 @@ fn seq_range(lo: uint, hi: uint) -> @[uint] { } } - fail_unless!(seq_range(10, 15) == @[10, 11, 12, 13, 14]); + assert_eq!(seq_range(10, 15), @[10, 11, 12, 13, 14]); fail_unless!(from_fn(5, |x| x+1) == @[1, 2, 3, 4, 5]); fail_unless!(from_elem(5, 3.14) == @[3.14, 3.14, 3.14, 3.14, 3.14]); } diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 27b35b378492..46ded7ecf3dd 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -464,6 +464,19 @@ macro_rules! fail_unless( } ) + macro_rules! assert( + ($cond:expr) => { + if !$cond { + ::core::sys::fail_assert(stringify!($cond), file!(), line!()) + } + }; + ($cond:expr, $msg:expr) => { + if !$cond { + ::core::sys::fail_assert($msg, file!(), line!()) + } + } + ) + macro_rules! assert_eq ( ($given:expr , $expected:expr) => ({let given_val = $given; diff --git a/src/libsyntax/parse/obsolete.rs b/src/libsyntax/parse/obsolete.rs index 173ae31f9483..a987ae948a48 100644 --- a/src/libsyntax/parse/obsolete.rs +++ b/src/libsyntax/parse/obsolete.rs @@ -51,7 +51,6 @@ pub enum ObsoleteSyntax { ObsoleteTraitImplVisibility, ObsoleteRecordType, ObsoleteRecordPattern, - ObsoleteAssertion, ObsoletePostFnTySigil, ObsoleteBareFnType, ObsoleteNewtypeEnum, @@ -165,10 +164,6 @@ fn obsolete(&self, sp: span, kind: ObsoleteSyntax) { "structural record pattern", "use a structure instead" ), - ObsoleteAssertion => ( - "assertion", - "use `fail_unless!()` instead" - ), ObsoletePostFnTySigil => ( "fn sigil in postfix position", "Rather than `fn@`, `fn~`, or `fn&`, \ diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 4b79e4f20f3b..6f2c0f7ddf5c 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -76,7 +76,7 @@ use parse::obsolete::{ObsoleteTraitBoundSeparator, ObsoleteMutOwnedPointer}; use parse::obsolete::{ObsoleteMutVector, ObsoleteTraitImplVisibility}; use parse::obsolete::{ObsoleteRecordType, ObsoleteRecordPattern}; -use parse::obsolete::{ObsoleteAssertion, ObsoletePostFnTySigil}; +use parse::obsolete::{ObsoletePostFnTySigil}; use parse::obsolete::{ObsoleteBareFnType, ObsoleteNewtypeEnum}; use parse::obsolete::{ObsoleteMode, ObsoleteImplicitSelf}; use parse::obsolete::{ObsoleteLifetimeNotation, ObsoleteConstManagedPointer}; @@ -1217,10 +1217,6 @@ fn parse_bottom_expr(&self) -> @expr { ex = expr_log(ast::log_other, lvl, e); hi = self.span.hi; self.expect(&token::RPAREN); - } else if self.eat_keyword(&~"assert") { - let e = self.parse_expr(); - ex = expr_copy(e); // whatever - self.obsolete(*self.last_span, ObsoleteAssertion); } else if self.eat_keyword(&~"return") { if can_begin_expr(&*self.token) { let e = self.parse_expr(); diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index f5542fa81a6a..8b78087e16f7 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -488,7 +488,7 @@ pub fn temporary_keyword_table() -> HashMap<~str, ()> { pub fn strict_keyword_table() -> HashMap<~str, ()> { let words = HashMap(); let keys = ~[ - ~"as", ~"assert", + ~"as", ~"break", ~"const", ~"copy", ~"do", ~"drop",