diff options
| author | kennytm <kennytm@gmail.com> | 2018-08-07 16:55:43 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-08-07 16:55:43 +0800 |
| commit | c1220610efc3e8663b16709a89cfd75a05510a20 (patch) | |
| tree | 8853137a16895bd349978426df52402473c6e39f /src | |
| parent | 3385cae74abea42194f3b566ce9fc28c30df29a4 (diff) | |
| parent | 3d44da65cd91a65603676bb2f2bc6b9bdc5775bf (diff) | |
| download | rust-c1220610efc3e8663b16709a89cfd75a05510a20.tar.gz rust-c1220610efc3e8663b16709a89cfd75a05510a20.zip | |
Rollup merge of #53093 - 0e4ef622:issue-52169-fix, r=petrochenkov
Enable macros to pass $:literal to another macro Fixes #52169.
Diffstat (limited to 'src')
| -rw-r--r-- | src/libsyntax/parse/token.rs | 4 | ||||
| -rw-r--r-- | src/test/run-pass/issue-52169.rs | 24 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index c449cc0a652..1d0c6b5317a 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -302,6 +302,10 @@ impl Token { BinOp(Minus) => true, Ident(ident, false) if ident.name == keywords::True.name() => true, Ident(ident, false) if ident.name == keywords::False.name() => true, + Interpolated(ref nt) => match nt.0 { + NtLiteral(..) => true, + _ => false, + }, _ => false, } } diff --git a/src/test/run-pass/issue-52169.rs b/src/test/run-pass/issue-52169.rs new file mode 100644 index 00000000000..f2163416922 --- /dev/null +++ b/src/test/run-pass/issue-52169.rs @@ -0,0 +1,24 @@ +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![feature(macro_literal_matcher)] + +macro_rules! a { + ($i:literal) => { "right" }; + ($i:tt) => { "wrong" }; +} + +macro_rules! b { + ($i:literal) => { a!($i) }; +} + +fn main() { + assert_eq!(b!(0), "right"); +} |
