Skip to content

Commit

Permalink
Write constraint lists properly in capnp.
Browse files Browse the repository at this point in the history
  • Loading branch information
zrho committed Nov 13, 2024
1 parent 1cba000 commit f22581e
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 0 deletions.
6 changes: 6 additions & 0 deletions hugr-model/src/v0/binary/write.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,39 +60,45 @@ fn write_operation(mut builder: hugr_capnp::operation::Builder, operation: &mode
let mut builder = builder.init_func_defn();
builder.set_name(decl.name);
write_list!(builder, init_params, write_param, decl.params);
let _ = builder.set_constraints(model::TermId::unwrap_slice(decl.constraints));
builder.set_signature(decl.signature.0);
}
model::Operation::DeclareFunc { decl } => {
let mut builder = builder.init_func_decl();
builder.set_name(decl.name);
write_list!(builder, init_params, write_param, decl.params);
let _ = builder.set_constraints(model::TermId::unwrap_slice(decl.constraints));
builder.set_signature(decl.signature.0);
}

model::Operation::DefineAlias { decl, value } => {
let mut builder = builder.init_alias_defn();
builder.set_name(decl.name);
write_list!(builder, init_params, write_param, decl.params);
let _ = builder.set_constraints(model::TermId::unwrap_slice(decl.constraints));
builder.set_type(decl.r#type.0);
builder.set_value(value.0);
}
model::Operation::DeclareAlias { decl } => {
let mut builder = builder.init_alias_decl();
builder.set_name(decl.name);
write_list!(builder, init_params, write_param, decl.params);
let _ = builder.set_constraints(model::TermId::unwrap_slice(decl.constraints));
builder.set_type(decl.r#type.0);
}

model::Operation::DeclareConstructor { decl } => {
let mut builder = builder.init_constructor_decl();
builder.set_name(decl.name);
write_list!(builder, init_params, write_param, decl.params);
let _ = builder.set_constraints(model::TermId::unwrap_slice(decl.constraints));
builder.set_type(decl.r#type.0);
}
model::Operation::DeclareOperation { decl } => {
let mut builder = builder.init_operation_decl();
builder.set_name(decl.name);
write_list!(builder, init_params, write_param, decl.params);
let _ = builder.set_constraints(model::TermId::unwrap_slice(decl.constraints));
builder.set_type(decl.r#type.0);
}

Expand Down
5 changes: 5 additions & 0 deletions hugr-model/tests/binary.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,8 @@ pub fn test_params() {
pub fn test_decl_exts() {
binary_roundtrip(include_str!("fixtures/model-decl-exts.edn"));
}

#[test]
pub fn test_constraints() {
binary_roundtrip(include_str!("fixtures/model-constraints.edn"));
}

0 comments on commit f22581e

Please sign in to comment.