From 71711998f19702d6f3532852e9ae97ac66751bd1 Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Fri, 3 Sep 2021 10:05:58 +0800 Subject: [PATCH 1/3] Fix bug in catch error variable. --- CHANGELOG.md | 2 +- src/parse.rs | 12 ++++++++++-- tests/throw.rs | 12 ++++++++++++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7084cebb..121f589e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ Rhai Release Notes ================== -Version 1.0.3 +Version 1.0.4 ============= Bug fixes diff --git a/src/parse.rs b/src/parse.rs index e383d597..3750599f 100644 --- a/src/parse.rs +++ b/src/parse.rs @@ -2902,7 +2902,7 @@ fn parse_try_catch( } // try { body } catch ( - let var_def = if match_token(input, Token::LeftParen).0 { + let err_var = if match_token(input, Token::LeftParen).0 { let (name, pos) = parse_var_name(input)?; let (matched, err_pos) = match_token(input, Token::RightParen); @@ -2924,8 +2924,16 @@ fn parse_try_catch( // try { body } catch ( var ) { catch_block } let catch_body = parse_block(input, state, lib, settings.level_up())?; + if err_var.is_some() { + // Remove the error variable from the stack + state + .stack + .pop() + .expect("stack contains at least one entry"); + } + Ok(Stmt::TryCatch( - (body.into(), var_def, catch_body.into()).into(), + (body.into(), err_var, catch_body.into()).into(), settings.pos, )) } diff --git a/tests/throw.rs b/tests/throw.rs index a93cfd04..2ef82dd2 100644 --- a/tests/throw.rs +++ b/tests/throw.rs @@ -51,6 +51,18 @@ fn test_try_catch() -> Result<(), Box> { 42 ); + assert_eq!( + engine.eval::( + " + let err = 123; + let x = 0; + try { throw 42; } catch(err) { print(err); } + err + " + )?, + 123 + ); + assert_eq!( engine.eval::( " From 34dd12621c1dbf8248c20dac10ca636d5c2893dd Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Fri, 3 Sep 2021 10:17:54 +0800 Subject: [PATCH 2/3] Bump version. --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 701fdd60..18f07a10 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = [".", "codegen"] [package] name = "rhai" -version = "1.0.3" +version = "1.0.4" edition = "2018" authors = ["Jonathan Turner", "Lukáš Hozda", "Stephen Chung", "jhwgh1968"] description = "Embedded scripting for Rust" From f90cbe8a93c56cf17fb2f83501787ac6dc684c19 Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Fri, 3 Sep 2021 10:18:50 +0800 Subject: [PATCH 3/3] Bump version. --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 18f07a10..e439d986 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = [".", "codegen"] [package] name = "rhai" -version = "1.0.4" +version = "1.0.5" edition = "2018" authors = ["Jonathan Turner", "Lukáš Hozda", "Stephen Chung", "jhwgh1968"] description = "Embedded scripting for Rust"