Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-def/src/macro_expansion_tests/mbe.rs')
-rw-r--r--crates/hir-def/src/macro_expansion_tests/mbe.rs60
1 files changed, 47 insertions, 13 deletions
diff --git a/crates/hir-def/src/macro_expansion_tests/mbe.rs b/crates/hir-def/src/macro_expansion_tests/mbe.rs
index 9f0d3938b7..c4d44eab66 100644
--- a/crates/hir-def/src/macro_expansion_tests/mbe.rs
+++ b/crates/hir-def/src/macro_expansion_tests/mbe.rs
@@ -93,52 +93,86 @@ fn eager_expands_with_unresolved_within() {
r#"
#[rustc_builtin_macro]
#[macro_export]
-macro_rules! format_args {}
+macro_rules! concat {}
+macro_rules! identity {
+ ($tt:tt) => {
+ $tt
+ }
+}
fn main(foo: ()) {
- format_args!("{} {} {}", format_args!("{}", 0), foo, identity!(10), "bar")
+ concat!("hello", identity!("world"), unresolved!(), identity!("!"));
}
"#,
expect![[r##"
#[rustc_builtin_macro]
#[macro_export]
-macro_rules! format_args {}
+macro_rules! concat {}
+macro_rules! identity {
+ ($tt:tt) => {
+ $tt
+ }
+}
fn main(foo: ()) {
- builtin #format_args ("{} {} {}", format_args!("{}", 0), foo, identity!(10), "bar")
+ /* error: unresolved macro unresolved */"helloworld!";
}
"##]],
);
}
#[test]
-fn token_mapping_eager() {
+fn concat_spans() {
check(
r#"
#[rustc_builtin_macro]
#[macro_export]
-macro_rules! format_args {}
-
+macro_rules! concat {}
macro_rules! identity {
- ($expr:expr) => { $expr };
+ ($tt:tt) => {
+ $tt
+ }
}
fn main(foo: ()) {
- format_args/*+spans+syntaxctxt*/!("{} {} {}", format_args!("{}", 0), foo, identity!(10), "bar")
+ #[rustc_builtin_macro]
+ #[macro_export]
+ macro_rules! concat {}
+ macro_rules! identity {
+ ($tt:tt) => {
+ $tt
+ }
+ }
+
+ fn main(foo: ()) {
+ concat/*+spans+syntaxctxt*/!("hello", concat!("w", identity!("o")), identity!("rld"), unresolved!(), identity!("!"));
+ }
}
"#,
expect![[r##"
#[rustc_builtin_macro]
#[macro_export]
-macro_rules! format_args {}
-
+macro_rules! concat {}
macro_rules! identity {
- ($expr:expr) => { $expr };
+ ($tt:tt) => {
+ $tt
+ }
}
fn main(foo: ()) {
- builtin#FileId(0):[email protected]\3# ##FileId(0):[email protected]\3#format_args#FileId(0):[email protected]\3# (#FileId(0):[email protected]\0#"{} {} {}"#FileId(0):[email protected]\0#,#FileId(0):[email protected]\0# format_args#FileId(0):[email protected]\0#!#FileId(0):[email protected]\0#(#FileId(0):[email protected]\0#"{}"#FileId(0):[email protected]\0#,#FileId(0):[email protected]\0# 0#FileId(0):[email protected]\0#)#FileId(0):[email protected]\0#,#FileId(0):[email protected]\0# foo#FileId(0):[email protected]\0#,#FileId(0):[email protected]\0# identity#FileId(0):[email protected]\0#!#FileId(0):[email protected]\0#(#FileId(0):[email protected]\0#10#FileId(0):[email protected]\0#)#FileId(0):[email protected]\0#,#FileId(0):[email protected]\0# "bar"#FileId(0):[email protected]\0#)#FileId(0):[email protected]\0#
+ #[rustc_builtin_macro]
+ #[macro_export]
+ macro_rules! concat {}
+ macro_rules! identity {
+ ($tt:tt) => {
+ $tt
+ }
+ }
+
+ fn main(foo: ()) {
+ /* error: unresolved macro unresolved */"helloworld!"#FileId(0):[email protected]\6#;
+ }
}
"##]],