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 | |
| 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')
| -rw-r--r-- | src/librustc/middle/borrowck/check_loans.rs | 4 | ||||
| -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 |
4 files changed, 9 insertions, 8 deletions
diff --git a/src/librustc/middle/borrowck/check_loans.rs b/src/librustc/middle/borrowck/check_loans.rs index 31fb1765e43..fc34e873ef9 100644 --- a/src/librustc/middle/borrowck/check_loans.rs +++ b/src/librustc/middle/borrowck/check_loans.rs @@ -232,7 +232,7 @@ impl<'self> CheckLoanCtxt<'self> { self.bccx.span_err( new_loan.span, fmt!("cannot borrow `%s` as %s because \ - it is also borrowed as %s" + it is also borrowed as %s", self.bccx.loan_path_to_str(new_loan.loan_path), self.bccx.mut_to_str(new_loan.mutbl), self.bccx.mut_to_str(old_loan.mutbl))); @@ -320,7 +320,7 @@ impl<'self> CheckLoanCtxt<'self> { // Otherwise, just a plain error. self.bccx.span_err( expr.span, - fmt!("cannot assign to %s %s" + fmt!("cannot assign to %s %s", cmt.mutbl.to_user_str(), self.bccx.cmt_to_str(cmt))); return; 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."); } |
