diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-11-19 13:59:59 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-11-19 14:00:39 -0800 |
| commit | 9bed0ddb0e782f7227d4ffcfa5eddeb8b13bf52a (patch) | |
| tree | d1cd374c507eeae77856d2593dd726cacbe1f9b2 | |
| parent | 371be3c6c4c9be74ee224f74f41006fefa3dda1b (diff) | |
Fix parsing of interpolated paths
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 3 | ||||
| -rw-r--r-- | src/test/run-pass/macro-path.rs | 16 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index f49447215fe..3e8f0840883 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -566,7 +566,8 @@ impl Parser { self.parse_borrowed_pointee() } else if self.token_is_fn_keyword(self.token) { self.parse_ty_fn(None, None) - } else if self.token == token::MOD_SEP || is_ident(self.token) { + } else if self.token == token::MOD_SEP + || is_ident_or_path(self.token) { let path = self.parse_path_with_tps(colons_before_params); ty_path(path, self.get_id()) } else { self.fatal(~"expected type"); }; diff --git a/src/test/run-pass/macro-path.rs b/src/test/run-pass/macro-path.rs new file mode 100644 index 00000000000..6c5a944ee29 --- /dev/null +++ b/src/test/run-pass/macro-path.rs @@ -0,0 +1,16 @@ +mod m { + pub type t = int; +} + +fn macros() { + macro_rules! foo { + ($p:path) => { + fn f() -> $p { 10 } + f() + } + } +} + +fn main() { + assert foo!(m::t) == 10; +} |
