diff options
| author | John Clements <clements@racket-lang.org> | 2013-03-04 13:58:31 -0800 |
|---|---|---|
| committer | John Clements <clements@racket-lang.org> | 2013-03-04 16:21:35 -0800 |
| commit | 4f3a968f91bbc2991056e1fb7e6e38829bbce57d (patch) | |
| tree | 31f439d206d2c000f5c714f7b77e1eaa964f1b41 /src/libsyntax/ext | |
| parent | dd34178b4b4c0dbd4d5e5fda44fbdd608b733b3a (diff) | |
| download | rust-4f3a968f91bbc2991056e1fb7e6e38829bbce57d.tar.gz rust-4f3a968f91bbc2991056e1fb7e6e38829bbce57d.zip | |
better error message for macros with MOD_SEPs
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 858ce4b17a3..ce8bf797ddb 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -38,10 +38,14 @@ pub fn expand_expr(extsbox: @mut SyntaxEnv, // entry-point for all syntax extensions. expr_mac(ref mac) => { match (*mac).node { - // Token-tree macros, these will be the only case when we're - // finished transitioning. + // Token-tree macros: mac_invoc_tt(pth, ref tts) => { - assert (vec::len(pth.idents) == 1u); + if (pth.idents.len() > 1u) { + cx.span_fatal( + pth.span, + fmt!("expected macro name without module \ + separators, got: '%?'",pth)); + } /* using idents and token::special_idents would make the the macro names be hygienic */ let extname = cx.parse_sess().interner.get(pth.idents[0]); @@ -320,8 +324,12 @@ pub fn expand_stmt(extsbox: @mut SyntaxEnv, } _ => return orig(s, sp, fld) }; - - assert(vec::len(pth.idents) == 1u); + if (pth.idents.len() > 1u) { + cx.span_fatal( + pth.span, + fmt!("expected macro name without module \ + separators, got: '%?'",pth)); + } let extname = cx.parse_sess().interner.get(pth.idents[0]); let (fully_expanded, sp) = match (*extsbox).find(&extname) { None => |
