7211: Fixed expr meta var after path colons in mbe r=matklad a=edwin0cheng

Fixes #7207

Added `L_DOLLAR` in `ITEM_RECOVERY_SET` , but I don't know whether it is a good idea.

r? @matklad 

Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
This commit is contained in:
bors[bot] 2021-01-14 10:52:12 +00:00 committed by GitHub
commit d76143da19
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 4 deletions

View file

@ -1,7 +1,11 @@
use std::fmt::Write;
use ::parser::FragmentKind;
use syntax::{ast, AstNode, NodeOrToken, SyntaxKind::IDENT, SyntaxNode, WalkEvent, T};
use syntax::{
ast, AstNode, NodeOrToken,
SyntaxKind::{ERROR, IDENT},
SyntaxNode, WalkEvent, T,
};
use test_utils::assert_eq_text;
use super::*;
@ -1194,6 +1198,23 @@ macro_rules! foo {
);
}
#[test]
fn test_expr_after_path_colons() {
assert!(parse_macro(
r#"
macro_rules! m {
($k:expr) => {
f(K::$k);
}
}
"#,
)
.expand_statements(r#"m!(C("0"))"#)
.descendants()
.find(|token| token.kind() == ERROR)
.is_some());
}
// The following tests are based on real world situations
#[test]
fn test_vec() {