diff --git a/crates/hir_def/src/macro_expansion_tests.rs b/crates/hir_def/src/macro_expansion_tests.rs index 861a059a14..8ecdbec7ae 100644 --- a/crates/hir_def/src/macro_expansion_tests.rs +++ b/crates/hir_def/src/macro_expansion_tests.rs @@ -69,7 +69,7 @@ fn check(ra_fixture: &str, expect: Expect) { } #[test] -fn test_expand_rule() { +fn wrong_nesting_level() { check( r#" macro_rules! m { @@ -85,3 +85,23 @@ macro_rules! m { "#]], ); } + +#[test] +fn expansion_does_not_parse_as_expression() { + check( + r#" +macro_rules! stmts { + () => { let _ = 0; } +} + +fn f() { let _ = stmts!(); } +"#, + expect![[r#" +macro_rules! stmts { + () => { let _ = 0; } +} + +fn f() { let _ = /* error: could not convert tokens */; } +"#]], + ) +} diff --git a/crates/mbe/src/syntax_bridge.rs b/crates/mbe/src/syntax_bridge.rs index 7f68543310..631eb82de7 100644 --- a/crates/mbe/src/syntax_bridge.rs +++ b/crates/mbe/src/syntax_bridge.rs @@ -797,24 +797,6 @@ mod tests { assert_eq!(tokens[2 + 15 + 3].0, STRING); } - #[test] - fn stmts_token_trees_to_expr_is_err() { - let expansion = parse_macro( - r#" - macro_rules! stmts { - () => { - let a = 0; - let b = 0; - let c = 0; - let d = 0; - } - } - "#, - ) - .expand_tt("stmts!();"); - assert!(token_tree_to_syntax_node(&expansion, ParserEntryPoint::Expr).is_err()); - } - #[test] fn test_token_tree_last_child_is_white_space() { let source_file = ast::SourceFile::parse("f!{}").ok().unwrap();