diff options
| author | Birunthan Mohanathas <birunthan@mohanathas.com> | 2013-07-22 21:22:22 +0300 |
|---|---|---|
| committer | Daniel Micay <danielmicay@gmail.com> | 2013-07-24 09:45:20 -0400 |
| commit | 5afb3d20aa30deb522401cdeef7656539e767fc2 (patch) | |
| tree | dbb7c6e3961d98b827859fa793fcb7f5bb949592 /src/libsyntax | |
| parent | 6c88e46d4d569b4fa0dfa995defecbe5cde62650 (diff) | |
| download | rust-5afb3d20aa30deb522401cdeef7656539e767fc2.tar.gz rust-5afb3d20aa30deb522401cdeef7656539e767fc2.zip | |
Disallow non-comma-delimited arguments to fmt! and bytes!
Closes #4982.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ext/base.rs | 9 | ||||
| -rw-r--r-- | src/libsyntax/ext/bytes.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/ext/fmt.rs | 2 |
3 files changed, 7 insertions, 6 deletions
diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index e831e32f23d..a5c8f2a235e 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -357,15 +357,16 @@ pub fn get_single_str_from_tts(cx: @ExtCtxt, } } -pub fn get_exprs_from_tts(cx: @ExtCtxt, tts: &[ast::token_tree]) - -> ~[@ast::expr] { +pub fn get_exprs_from_tts(cx: @ExtCtxt, + sp: span, + tts: &[ast::token_tree]) -> ~[@ast::expr] { let p = parse::new_parser_from_tts(cx.parse_sess(), cx.cfg(), tts.to_owned()); let mut es = ~[]; while *p.token != token::EOF { - if es.len() != 0 { - p.eat(&token::COMMA); + if es.len() != 0 && !p.eat(&token::COMMA) { + cx.span_fatal(sp, "expected token: `,`"); } es.push(p.parse_expr()); } diff --git a/src/libsyntax/ext/bytes.rs b/src/libsyntax/ext/bytes.rs index 3f64654dd80..2092c45074e 100644 --- a/src/libsyntax/ext/bytes.rs +++ b/src/libsyntax/ext/bytes.rs @@ -18,7 +18,7 @@ use ext::build::AstBuilder; pub fn expand_syntax_ext(cx: @ExtCtxt, sp: span, tts: &[ast::token_tree]) -> base::MacResult { // Gather all argument expressions - let exprs = get_exprs_from_tts(cx, tts); + let exprs = get_exprs_from_tts(cx, sp, tts); let mut bytes = ~[]; for exprs.iter().advance |expr| { diff --git a/src/libsyntax/ext/fmt.rs b/src/libsyntax/ext/fmt.rs index 333570b6c9d..737127fcae7 100644 --- a/src/libsyntax/ext/fmt.rs +++ b/src/libsyntax/ext/fmt.rs @@ -26,7 +26,7 @@ use parse::token::{str_to_ident}; pub fn expand_syntax_ext(cx: @ExtCtxt, sp: span, tts: &[ast::token_tree]) -> base::MacResult { - let args = get_exprs_from_tts(cx, tts); + let args = get_exprs_from_tts(cx, sp, tts); if args.len() == 0 { cx.span_fatal(sp, "fmt! takes at least 1 argument."); } |
