From 9471c518274867d3cdc7cb51ed393fb4d20e9815 Mon Sep 17 00:00:00 2001 From: A4-Tacks Date: Fri, 31 Jan 2025 20:02:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dconst-match=E4=B8=AD=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E5=AE=88=E5=8D=AB=E4=BC=9A=E7=A0=B4=E5=9D=8F=E5=A4=96?= =?UTF-8?q?=E9=83=A8=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 6 +++--- Cargo.toml | 2 +- tools/parser/tests/Cargo.toml | 2 +- tools/parser/tests/src/lib.rs | 12 ++++++++++++ tools/syntax/Cargo.toml | 2 +- tools/syntax/src/lib.rs | 2 +- 6 files changed, 19 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1bbea59..9b5dd92 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -285,7 +285,7 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "mindustry_logic_bang_lang" -version = "0.17.23" +version = "0.17.24" dependencies = [ "display_source", "logic_lint", @@ -342,7 +342,7 @@ dependencies = [ [[package]] name = "parser-tests" -version = "0.1.48" +version = "0.1.49" dependencies = [ "either", "parser", @@ -531,7 +531,7 @@ dependencies = [ [[package]] name = "syntax" -version = "0.2.52" +version = "0.2.53" dependencies = [ "either", "itermaps", diff --git a/Cargo.toml b/Cargo.toml index 4b26ab7..8c77538 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mindustry_logic_bang_lang" -version = "0.17.23" +version = "0.17.24" edition = "2021" authors = ["A4-Tacks "] diff --git a/tools/parser/tests/Cargo.toml b/tools/parser/tests/Cargo.toml index 7306276..9bed7bf 100644 --- a/tools/parser/tests/Cargo.toml +++ b/tools/parser/tests/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "parser-tests" -version = "0.1.48" +version = "0.1.49" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/tools/parser/tests/src/lib.rs b/tools/parser/tests/src/lib.rs index 2be1620..3d7d65c 100644 --- a/tools/parser/tests/src/lib.rs +++ b/tools/parser/tests/src/lib.rs @@ -6076,6 +6076,18 @@ fn const_match_test() { "end", ], ); + + // 测试守卫作用域 + assert_eq!( + CompileMeta::new().compile(parse!(parser, r#" + const match 1 { [?_0 == 1] { x; } _ { y; }} + print _0 @; + "#).unwrap()).compile().unwrap(), + vec![ + "x", + "print _0", + ], + ); } #[test] diff --git a/tools/syntax/Cargo.toml b/tools/syntax/Cargo.toml index 2ce9bf5..37e8cf4 100644 --- a/tools/syntax/Cargo.toml +++ b/tools/syntax/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "syntax" -version = "0.2.52" +version = "0.2.53" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/tools/syntax/src/lib.rs b/tools/syntax/src/lib.rs index 3b5c84a..91f07d9 100644 --- a/tools/syntax/src/lib.rs +++ b/tools/syntax/src/lib.rs @@ -3304,7 +3304,7 @@ impl ConstMatchPatAtom { }, Either::Right(guard) => { let mut res = false; - meta.with_block(|meta| { + meta.with_block_and_env_args(|meta| { LogicLine::SetArgs([handle.into()].into()) .compile(meta); res = guard.take_handle(meta).ne("0")