fix(tvix/eval): Emit errors for invalid integers
Invalid integers (eg integers that're too long) end up as error returns on the `.value()` returned from the literal in the AST - previously we'd unwrap this error, causing it to panic the compiler, but now we've got a nice error variant for it (which just unwraps the underlying std::num::ParseIntError). Change-Id: I50c3c5ba89407d86659e20d8991b9658415f39a0 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6635 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org>
This commit is contained in:
parent
b3cc4c8c2c
commit
d431aa7743
2 changed files with 19 additions and 2 deletions
|
|
@ -192,7 +192,10 @@ impl Compiler<'_, '_> {
|
|||
fn compile_literal(&mut self, node: ast::Literal) {
|
||||
let value = match node.kind() {
|
||||
ast::LiteralKind::Float(f) => Value::Float(f.value().unwrap()),
|
||||
ast::LiteralKind::Integer(i) => Value::Integer(i.value().unwrap()),
|
||||
ast::LiteralKind::Integer(i) => match i.value() {
|
||||
Ok(v) => Value::Integer(v),
|
||||
Err(err) => return self.emit_error(&node, err.into()),
|
||||
},
|
||||
|
||||
ast::LiteralKind::Uri(u) => {
|
||||
self.emit_warning(&node, WarningKind::DeprecatedLiteralURL);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue