mirror of
https://github.com/microsoft/regorus.git
synced 2026-08-05 02:16:11 +00:00
fix: Propagate errors encountered in argument evaluation (#308)
fixes #301 Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
This commit is contained in:
committed by
GitHub
parent
af5071446b
commit
a4a80d7fc6
@@ -2283,15 +2283,8 @@ impl Interpreter {
|
||||
};
|
||||
|
||||
let mut param_values = Vec::with_capacity(params.len());
|
||||
let mut error = None;
|
||||
for p in params {
|
||||
match self.eval_expr(p) {
|
||||
Ok(v) => param_values.push(v),
|
||||
Err(e) => {
|
||||
error = Some(Err(e));
|
||||
break;
|
||||
}
|
||||
}
|
||||
param_values.push(self.eval_expr(p)?);
|
||||
}
|
||||
|
||||
let orig_fcn_path = fcn_path;
|
||||
@@ -2308,9 +2301,6 @@ impl Interpreter {
|
||||
if param_values.iter().any(|v| v == &Value::Undefined) {
|
||||
return Ok(Value::Undefined);
|
||||
}
|
||||
if let Some(err) = error {
|
||||
err?;
|
||||
};
|
||||
return Ok(v.clone());
|
||||
}
|
||||
_ => orig_fcn_path.clone(),
|
||||
|
||||
@@ -59,3 +59,20 @@ cases:
|
||||
a1 = inc(5)
|
||||
query: data.test
|
||||
want_result: {}
|
||||
|
||||
- note: call parameter raises error
|
||||
data: {}
|
||||
modules:
|
||||
- |
|
||||
package test
|
||||
import rego.v1
|
||||
|
||||
bar := 1 if {
|
||||
1 + "hello"
|
||||
}
|
||||
foo := 1 if {
|
||||
count(bar)
|
||||
}
|
||||
query: data.test
|
||||
error: expects numeric argument.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user