From 2b10c5c6c1aeb5b867c5df6866ce6a28457f258a Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Fri, 16 Apr 2021 21:59:05 +0800 Subject: [PATCH 1/3] Correct position of negative numbers. --- src/parser.rs | 4 ++-- src/token.rs | 13 ++++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/parser.rs b/src/parser.rs index d376d7f2..6169657c 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -1328,7 +1328,7 @@ fn parse_unary( match parse_unary(input, state, lib, settings.level_up())? { // Negative integer - Expr::IntegerConstant(num, pos) => num + Expr::IntegerConstant(num, _) => num .checked_neg() .map(|i| Expr::IntegerConstant(i, pos)) .or_else(|| { @@ -1341,7 +1341,7 @@ fn parse_unary( // Negative float #[cfg(not(feature = "no_float"))] - Expr::FloatConstant(x, pos) => Ok(Expr::FloatConstant((-(*x)).into(), pos)), + Expr::FloatConstant(x, _) => Ok(Expr::FloatConstant((-(*x)).into(), pos)), // Call negative function expr => { diff --git a/src/token.rs b/src/token.rs index d12831ca..a035d278 100644 --- a/src/token.rs +++ b/src/token.rs @@ -1240,7 +1240,7 @@ fn get_next_token_inner( ); } - let mut negated = false; + let mut negated_pos = Position::NONE; while let Some(c) = stream.get_next() { pos.advance(); @@ -1349,9 +1349,12 @@ fn get_next_token_inner( } } - if negated { + let num_pos = if !negated_pos.is_none() { result.insert(0, '-'); - } + negated_pos + } else { + start_pos + }; // Parse number return Some(( @@ -1388,7 +1391,7 @@ fn get_next_token_inner( Token::LexError(LERR::MalformedNumber(result.into_iter().collect())) }) }, - start_pos, + num_pos, )); } @@ -1507,7 +1510,7 @@ fn get_next_token_inner( ('+', _) if !state.non_unary => return Some((Token::UnaryPlus, start_pos)), ('+', _) => return Some((Token::Plus, start_pos)), - ('-', '0'..='9') if !state.non_unary => negated = true, + ('-', '0'..='9') if !state.non_unary => negated_pos = start_pos, ('-', '0'..='9') => return Some((Token::Minus, start_pos)), ('-', '=') => { eat_next(stream, pos); From e31506fe5134b0701a5612ad3d0172cb04cf90ee Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Fri, 16 Apr 2021 21:59:11 +0800 Subject: [PATCH 2/3] Bump version. --- CHANGELOG.md | 6 ++++-- Cargo.toml | 2 +- codegen/Cargo.toml | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bff3b748..1590a792 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,13 @@ Rhai Release Notes ================== -Version 0.19.16 -=============== +Version 0.20.0 +============== This version adds string interpolation with `` `... ${`` ... ``} ...` `` syntax. +`switch` statement cases can now have conditions. + Negative indices for arrays and strings are allowed and now count from the end (-1 = last item/character). Bug fixes diff --git a/Cargo.toml b/Cargo.toml index 90100ff3..bf7a806e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = [".", "codegen"] [package] name = "rhai" -version = "0.19.16" +version = "0.20.0" edition = "2018" authors = ["Jonathan Turner", "Lukáš Hozda", "Stephen Chung", "jhwgh1968"] description = "Embedded scripting for Rust" diff --git a/codegen/Cargo.toml b/codegen/Cargo.toml index e24f866c..d02e4388 100644 --- a/codegen/Cargo.toml +++ b/codegen/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rhai_codegen" -version = "0.3.4" +version = "0.3.5" edition = "2018" authors = ["jhwgh1968"] description = "Procedural macro support package for Rhai, a scripting language for Rust" @@ -16,7 +16,7 @@ default = [] metadata = [] [dev-dependencies] -rhai = { path = "..", version = "0.19" } +rhai = { path = "..", version = ">=0.19.15" } trybuild = "1" [dependencies] From 6eaee57578305d163000da964be28c00cc7d8594 Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Fri, 16 Apr 2021 22:07:18 +0800 Subject: [PATCH 3/3] Bump version. --- CHANGELOG.md | 4 ++++ Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1590a792..89400e17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,10 @@ Rhai Release Notes ================== +Version 0.20.1 +============== + + Version 0.20.0 ============== diff --git a/Cargo.toml b/Cargo.toml index bf7a806e..c9f5166b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = [".", "codegen"] [package] name = "rhai" -version = "0.20.0" +version = "0.20.1" edition = "2018" authors = ["Jonathan Turner", "Lukáš Hozda", "Stephen Chung", "jhwgh1968"] description = "Embedded scripting for Rust"