feat: added parse error handling for simplefileresolver

This commit is contained in:
Byson94
2025-08-24 16:58:03 +05:30
parent 648ab778f1
commit c349497ec7
2 changed files with 7 additions and 3 deletions

View File

@@ -18,11 +18,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
- Faster re-evaluation of configuration by reusing compiled configuration.
- Improved runtime error handling of WidgetNode casting.
- Caching for ParseConfig in re-evaluation system.
- Proper error handling for invalid external module code.
- Proper error handling for runtime error in external module code.
- **call-fns** command for calling a Rhai function. Note: The function can only see poll/listen variables as their initial value.
- **update** command with **--inject-vars** flag to update widget state. Note: All poll/listen variables will reset to their initial values.
- `std::command` module for running shell commands.
- `INPUT_VAL` environment variable for Input widget commands (`onchange` and `onaccept`), containing the current text of the input field.
- Parse error handling for external module code.
### Changed

View File

@@ -1,4 +1,4 @@
use crate::error::format_eval_error;
use crate::error::{format_eval_error, format_parse_error};
use rhai::{Engine, EvalAltResult, Module, ModuleResolver, Position, Scope, AST};
use std::fs;
use std::path::PathBuf;
@@ -43,7 +43,10 @@ impl ModuleResolver for SimpleFileResolver {
EvalAltResult::ErrorSystem(format!("reading file: {full_path:?}"), e.into())
})?;
let ast: AST = engine.compile(&script)?;
let ast: AST = engine.compile(&script).map_err(|e| {
log::error!("{}", format_parse_error(&e, &script));
e
})?;
let scope = Scope::new();
let mut module = Module::eval_ast_as_new(scope, &ast, engine).map_err(|e| {
log::error!("{}", format_eval_error(&e, &script, engine));