diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-03-05 20:59:31 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2021-03-05 20:59:31 +0000 |
commit | 750d3cb84678b23a55092f2e4726e48ead37a9ff (patch) | |
tree | c07742b3121cb50f90535b042c7e4e114f5d3720 | |
parent | 94012e24e038bc1b96e06638b6e2b38852a510eb (diff) | |
parent | 20eda09712f0c4cd701575d125122472252820db (diff) |
Merge #7887
7887: Fix fail to parse :: for meta in mbe r=edwin0cheng a=edwin0cheng
fixes #7886
bors r+
Co-authored-by: Edwin Cheng <[email protected]>
-rw-r--r-- | crates/mbe/src/tests.rs | 3 | ||||
-rw-r--r-- | crates/parser/src/grammar.rs | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/crates/mbe/src/tests.rs b/crates/mbe/src/tests.rs index 5c641ebf2..08acd4ac2 100644 --- a/crates/mbe/src/tests.rs +++ b/crates/mbe/src/tests.rs | |||
@@ -954,7 +954,8 @@ fn test_meta() { | |||
954 | .assert_expand_items( | 954 | .assert_expand_items( |
955 | r#"foo! { cfg(target_os = "windows") }"#, | 955 | r#"foo! { cfg(target_os = "windows") }"#, |
956 | r#"# [cfg (target_os = "windows")] fn bar () {}"#, | 956 | r#"# [cfg (target_os = "windows")] fn bar () {}"#, |
957 | ); | 957 | ) |
958 | .assert_expand_items(r#"foo! { hello::world }"#, r#"# [hello :: world] fn bar () {}"#); | ||
958 | } | 959 | } |
959 | 960 | ||
960 | #[test] | 961 | #[test] |
diff --git a/crates/parser/src/grammar.rs b/crates/parser/src/grammar.rs index 6913e9ec2..6159d064c 100644 --- a/crates/parser/src/grammar.rs +++ b/crates/parser/src/grammar.rs | |||
@@ -95,7 +95,7 @@ pub(crate) mod fragments { | |||
95 | // https://doc.rust-lang.org/reference/paths.html#simple-paths | 95 | // https://doc.rust-lang.org/reference/paths.html#simple-paths |
96 | // The start of an meta must be a simple path | 96 | // The start of an meta must be a simple path |
97 | match p.current() { | 97 | match p.current() { |
98 | IDENT | T![::] | T![super] | T![self] | T![crate] => p.bump_any(), | 98 | IDENT | T![super] | T![self] | T![crate] => p.bump_any(), |
99 | T![=] => { | 99 | T![=] => { |
100 | p.bump_any(); | 100 | p.bump_any(); |
101 | match p.current() { | 101 | match p.current() { |
@@ -105,6 +105,7 @@ pub(crate) mod fragments { | |||
105 | } | 105 | } |
106 | break; | 106 | break; |
107 | } | 107 | } |
108 | _ if p.at(T![::]) => p.bump(T![::]), | ||
108 | _ => break, | 109 | _ => break, |
109 | } | 110 | } |
110 | } | 111 | } |