diff options
| author | bors <bors@rust-lang.org> | 2013-09-09 10:41:05 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-09-09 10:41:05 -0700 |
| commit | 059cbaadfaea9a397c144a0a7beff0fc5e9e2664 (patch) | |
| tree | aa520ddc411d71091bd8c1089bda4f69092fed26 /src/libsyntax | |
| parent | fd2488bf5aeb1c4959bc91f3a17a0bde848d2eeb (diff) | |
| parent | 8a966183fe5129ea2a55a9898ac1bd0f16f3573d (diff) | |
| download | rust-059cbaadfaea9a397c144a0a7beff0fc5e9e2664.tar.gz rust-059cbaadfaea9a397c144a0a7beff0fc5e9e2664.zip | |
auto merge of #9005 : alexcrichton/rust/rusty-log, r=brson
Also redefine all of the standard logging macros to use more rust code instead of custom LLVM translation code. This makes them a bit easier to understand, but also more flexibile for future types of logging. Additionally, this commit removes the LogType language item in preparation for changing how logging is performed.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ast.rs | 4 | ||||
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 86 | ||||
| -rw-r--r-- | src/libsyntax/fold.rs | 7 | ||||
| -rw-r--r-- | src/libsyntax/oldvisit.rs | 5 | ||||
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 11 | ||||
| -rw-r--r-- | src/libsyntax/parse/token.rs | 6 | ||||
| -rw-r--r-- | src/libsyntax/print/pprust.rs | 8 | ||||
| -rw-r--r-- | src/libsyntax/visit.rs | 5 |
8 files changed, 49 insertions, 83 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index 6957f9ae351..c4038932613 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -550,7 +550,9 @@ pub enum Expr_ { ExprBreak(Option<Ident>), ExprAgain(Option<Ident>), ExprRet(Option<@Expr>), - ExprLog(@Expr, @Expr), + + /// Gets the log level for the enclosing module + ExprLogLevel, ExprInlineAsm(inline_asm), diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 099fa54c0c2..50a14c0fd71 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -870,59 +870,41 @@ pub fn std_macros() -> @str { macro_rules! ignore (($($x:tt)*) => (())) - macro_rules! error ( - ($arg:expr) => ( - __log(1u32, fmt!( \"%?\", $arg )) - ); - ($( $arg:expr ),+) => ( - __log(1u32, fmt!( $($arg),+ )) - ) - ) - - macro_rules! warn ( - ($arg:expr) => ( - __log(2u32, fmt!( \"%?\", $arg )) - ); - ($( $arg:expr ),+) => ( - __log(2u32, fmt!( $($arg),+ )) - ) - ) - - macro_rules! info ( - ($arg:expr) => ( - __log(3u32, fmt!( \"%?\", $arg )) - ); - ($( $arg:expr ),+) => ( - __log(3u32, fmt!( $($arg),+ )) - ) - ) - - macro_rules! debug ( - ($arg:expr) => ( - if cfg!(debug) { __log(4u32, fmt!( \"%?\", $arg )) } - ); - ($( $arg:expr ),+) => ( - if cfg!(debug) { __log(4u32, fmt!( $($arg),+ )) } - ) - ) - - macro_rules! error2 ( - ($($arg:tt)*) => ( __log(1u32, format!($($arg)*))) - ) - - macro_rules! warn2 ( - ($($arg:tt)*) => ( __log(2u32, format!($($arg)*))) - ) - - macro_rules! info2 ( - ($($arg:tt)*) => ( __log(3u32, format!($($arg)*))) + macro_rules! log( + ($lvl:expr, $arg:expr) => ({ + let lvl = $lvl; + if lvl <= __log_level() { + ::std::logging::log(lvl, fmt!(\"%?\", $arg)) + } + }); + ($lvl:expr, $($arg:expr),+) => ({ + let lvl = $lvl; + if lvl <= __log_level() { + ::std::logging::log(lvl, fmt!($($arg),+)) + } + }) ) + macro_rules! error( ($($arg:tt)+) => (log!(1u32, $($arg)+)) ) + macro_rules! warn ( ($($arg:tt)+) => (log!(2u32, $($arg)+)) ) + macro_rules! info ( ($($arg:tt)+) => (log!(3u32, $($arg)+)) ) + macro_rules! debug( ($($arg:tt)+) => ( + if cfg!(debug) { log!(4u32, $($arg)+) } + )) - macro_rules! debug2 ( - ($($arg:tt)*) => ( - if cfg!(debug) { __log(4u32, format!($($arg)*)) } - ) + macro_rules! log2( + ($lvl:expr, $($arg:tt)+) => ({ + let lvl = $lvl; + if lvl <= __log_level() { + ::std::logging::log(lvl, format!($($arg)+)) + } + }) ) + macro_rules! error2( ($($arg:tt)+) => (log2!(1u32, $($arg)+)) ) + macro_rules! warn2 ( ($($arg:tt)+) => (log2!(2u32, $($arg)+)) ) + macro_rules! info2 ( ($($arg:tt)+) => (log2!(3u32, $($arg)+)) ) + macro_rules! debug2( ($($arg:tt)+) => ( + if cfg!(debug) { log2!(4u32, $($arg)+) } + )) macro_rules! fail( () => ( @@ -1149,13 +1131,13 @@ pub fn std_macros() -> @str { // allocation but should rather delegate to an invocation of // write! instead of format! macro_rules! print ( - ($($arg:tt)+) => ( ::std::io::print(format!($($arg)+))) + ($($arg:tt)+) => (::std::io::print(format!($($arg)+))) ) // FIXME(#6846) once stdio is redesigned, this shouldn't perform an // allocation but should rather delegate to an io::Writer macro_rules! println ( - ($($arg:tt)+) => ({ print!($($arg)+); ::std::io::println(\"\"); }) + ($($arg:tt)+) => (::std::io::println(format!($($arg)+))) ) // NOTE: use this after a snapshot lands to abstract the details diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs index 11e39163992..664bd3f128a 100644 --- a/src/libsyntax/fold.rs +++ b/src/libsyntax/fold.rs @@ -617,12 +617,7 @@ pub fn noop_fold_expr(e: &Expr_, fld: @ast_fold) -> Expr_ { ExprRet(ref e) => { ExprRet(e.map_move(|x| fld.fold_expr(x))) } - ExprLog(lv, e) => { - ExprLog( - fld.fold_expr(lv), - fld.fold_expr(e) - ) - } + ExprLogLevel => ExprLogLevel, ExprInlineAsm(ref a) => { ExprInlineAsm(inline_asm { inputs: a.inputs.map(|&(c, input)| (c, fld.fold_expr(input))), diff --git a/src/libsyntax/oldvisit.rs b/src/libsyntax/oldvisit.rs index 850f73096ed..80e037bce81 100644 --- a/src/libsyntax/oldvisit.rs +++ b/src/libsyntax/oldvisit.rs @@ -567,10 +567,7 @@ pub fn visit_expr<E:Clone>(ex: @Expr, (e, v): (E, vt<E>)) { ExprBreak(_) => (), ExprAgain(_) => (), ExprRet(eo) => visit_expr_opt(eo, (e.clone(), v)), - ExprLog(lv, x) => { - (v.visit_expr)(lv, (e.clone(), v)); - (v.visit_expr)(x, (e.clone(), v)); - } + ExprLogLevel => (), ExprMac(ref mac) => visit_mac(mac, (e.clone(), v)), ExprParen(x) => (v.visit_expr)(x, (e.clone(), v)), ExprInlineAsm(ref a) => { diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index b8615352504..9410d0194c3 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -26,7 +26,7 @@ use ast::{Expr, Expr_, ExprAddrOf, ExprMatch, ExprAgain}; use ast::{ExprAssign, ExprAssignOp, ExprBinary, ExprBlock}; use ast::{ExprBreak, ExprCall, ExprCast, ExprDoBody}; use ast::{ExprField, ExprFnBlock, ExprIf, ExprIndex}; -use ast::{ExprLit, ExprLog, ExprLoop, ExprMac}; +use ast::{ExprLit, ExprLogLevel, ExprLoop, ExprMac}; use ast::{ExprMethodCall, ExprParen, ExprPath, ExprRepeat}; use ast::{ExprRet, ExprSelf, ExprStruct, ExprTup, ExprUnary}; use ast::{ExprVec, ExprVstore, ExprVstoreMutBox}; @@ -1832,13 +1832,10 @@ impl Parser { } } hi = self.last_span.hi; - } else if self.eat_keyword(keywords::__Log) { - // LOG expression + } else if self.eat_keyword(keywords::__LogLevel) { + // LOG LEVEL expression self.expect(&token::LPAREN); - let lvl = self.parse_expr(); - self.expect(&token::COMMA); - let e = self.parse_expr(); - ex = ExprLog(lvl, e); + ex = ExprLogLevel; hi = self.span.hi; self.expect(&token::RPAREN); } else if self.eat_keyword(keywords::Return) { diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index 6b3a95a14f8..fa00b536837 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -456,7 +456,7 @@ fn mk_fresh_ident_interner() -> @ident_interner { "if", // 42 "impl", // 43 "let", // 44 - "__log", // 45 + "__log_level", // 45 "loop", // 46 "match", // 47 "mod", // 48 @@ -606,7 +606,7 @@ pub mod keywords { Impl, In, Let, - __Log, + __LogLevel, Loop, Match, Mod, @@ -651,7 +651,7 @@ pub mod keywords { Impl => Ident { name: 43, ctxt: 0 }, In => Ident { name: 63, ctxt: 0 }, Let => Ident { name: 44, ctxt: 0 }, - __Log => Ident { name: 45, ctxt: 0 }, + __LogLevel => Ident { name: 45, ctxt: 0 }, Loop => Ident { name: 46, ctxt: 0 }, Match => Ident { name: 47, ctxt: 0 }, Mod => Ident { name: 48, ctxt: 0 }, diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 282b66b2c59..ca0ff81b65b 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -1414,13 +1414,9 @@ pub fn print_expr(s: @ps, expr: &ast::Expr) { _ => () } } - ast::ExprLog(lexp, expr) => { - word(s.s, "__log"); + ast::ExprLogLevel => { + word(s.s, "__log_level"); popen(s); - print_expr(s, lexp); - word(s.s, ","); - space_if_not_bol(s); - print_expr(s, expr); pclose(s); } ast::ExprInlineAsm(ref a) => { diff --git a/src/libsyntax/visit.rs b/src/libsyntax/visit.rs index 191b4509a80..ea8edf0b3d1 100644 --- a/src/libsyntax/visit.rs +++ b/src/libsyntax/visit.rs @@ -643,10 +643,7 @@ pub fn walk_expr<E:Clone, V:Visitor<E>>(visitor: &mut V, expression: @Expr, env: ExprRet(optional_expression) => { walk_expr_opt(visitor, optional_expression, env.clone()) } - ExprLog(level, subexpression) => { - visitor.visit_expr(level, env.clone()); - visitor.visit_expr(subexpression, env.clone()); - } + ExprLogLevel => {} ExprMac(ref macro) => walk_mac(visitor, macro, env.clone()), ExprParen(subexpression) => { visitor.visit_expr(subexpression, env.clone()) |
