Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-diagnostics/src/handlers/undeclared_label.rs')
-rw-r--r--crates/ide-diagnostics/src/handlers/undeclared_label.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/crates/ide-diagnostics/src/handlers/undeclared_label.rs b/crates/ide-diagnostics/src/handlers/undeclared_label.rs
index 6af36fb9e7..d16bfb8002 100644
--- a/crates/ide-diagnostics/src/handlers/undeclared_label.rs
+++ b/crates/ide-diagnostics/src/handlers/undeclared_label.rs
@@ -107,4 +107,34 @@ async fn foo() {
"#,
);
}
+
+ #[test]
+ fn macro_expansion_can_refer_label_defined_before_macro_definition() {
+ check_diagnostics(
+ r#"
+fn foo() {
+ 'bar: loop {
+ macro_rules! m {
+ () => { break 'bar };
+ }
+ m!();
+ }
+}
+"#,
+ );
+ check_diagnostics(
+ r#"
+fn foo() {
+ 'bar: loop {
+ macro_rules! m {
+ () => { break 'bar };
+ }
+ 'bar: loop {
+ m!();
+ }
+ }
+}
+"#,
+ );
+ }
}