Skip to content

Commit 679c2e8

Browse files
authored
feat(compiler): error handling for missing cell fields (#137)
1 parent 1828b71 commit 679c2e8

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

core/compiler/src/compile.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3871,7 +3871,22 @@ impl<'a> ExecPass<'a> {
38713871
let cell = &self.compiled_cells[&inst_cell_id];
38723872
let state = self.cell_states.get_mut(&cell_id).unwrap();
38733873
let obj_id = &mut self.next_id;
3874-
Some(Value::from_array(cell.field(field).unwrap().map(
3874+
let field_value =
3875+
if let Some(field_value) = cell.field(field) {
3876+
field_value
3877+
} else {
3878+
self.errors.push(ExecError {
3879+
span: Some(self.span(
3880+
&vref.loc,
3881+
field_access_expr.expr.span,
3882+
)),
3883+
cell: cell_id,
3884+
// TODO: More descriptive error
3885+
kind: ExecErrorKind::EmptyBbox,
3886+
});
3887+
return Err(());
3888+
};
3889+
Some(Value::from_array(field_value.map(
38753890
&mut move |v| match v {
38763891
SolvedValue::Rect(rect) => {
38773892
let id = object_id(obj_id);

0 commit comments

Comments
 (0)