Skip to content

Commit 291af0b

Browse files
authored
build: add r1cs flag to zxc example (#230)
the example requires this flag but the build system did not know that credits to Victor Miller for finding the issue
1 parent 9c6d7ff commit 291af0b

9 files changed

Lines changed: 30 additions & 44 deletions

File tree

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ required-features = ["smt", "zokc"]
9999

100100
[[example]]
101101
name = "zxc"
102-
required-features = ["smt", "zok"]
102+
required-features = ["smt", "zok", "r1cs"]
103103

104104
[[example]]
105105
name = "opa_bench"

src/front/datalog/error.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ pub enum ErrorKind {
2929
/// An error with an optional span
3030
pub struct Error<'ast> {
3131
/// The error
32-
pub kind: ErrorKind,
32+
pub kind: Box<ErrorKind>,
3333
/// The span
3434
pub span: Option<Span<'ast>>,
3535
}
@@ -50,7 +50,7 @@ impl Display for Error<'_> {
5050
impl From<ErrorKind> for Error<'_> {
5151
fn from(error_kind: ErrorKind) -> Self {
5252
Error {
53-
kind: error_kind,
53+
kind: Box::new(error_kind),
5454
span: None,
5555
}
5656
}
@@ -59,7 +59,7 @@ impl From<ErrorKind> for Error<'_> {
5959
impl From<crate::circify::CircError> for Error<'_> {
6060
fn from(circ: crate::circify::CircError) -> Self {
6161
Error {
62-
kind: ErrorKind::Circify(circ),
62+
kind: Box::new(ErrorKind::Circify(circ)),
6363
span: None,
6464
}
6565
}
@@ -76,7 +76,7 @@ impl<'ast> Error<'ast> {
7676
/// New error, with span
7777
pub fn new(kind: ErrorKind, span: Span<'ast>) -> Self {
7878
Error {
79-
kind,
79+
kind: Box::new(kind),
8080
span: Some(span),
8181
}
8282
}

src/front/zsharp/term.rs

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -270,10 +270,10 @@ impl T {
270270
}
271271

272272
pub fn pretty<W: std::io::Write>(&self, f: &mut W) -> Result<(), std::io::Error> {
273-
use std::io::{Error, ErrorKind};
273+
use std::io::Error;
274274
let val = match &self.term.op() {
275275
Op::Const(v) => Ok(v),
276-
_ => Err(Error::new(ErrorKind::Other, "not a const val")),
276+
_ => Err(Error::other("not a const val")),
277277
}?;
278278
match &**val {
279279
Value::Bool(b) => write!(f, "{b}"),
@@ -289,10 +289,7 @@ impl T {
289289
let (n, fl) = if let Ty::Struct(n, fl) = &self.ty {
290290
Ok((n, fl))
291291
} else {
292-
Err(Error::new(
293-
ErrorKind::Other,
294-
"expected struct, got something else",
295-
))
292+
Err(Error::other("expected struct, got something else"))
296293
}?;
297294
write!(f, "{n} {{ ")?;
298295
fl.fields().zip(vs.iter()).try_for_each(|((n, ty), v)| {
@@ -306,10 +303,7 @@ impl T {
306303
let inner_ty = if let Ty::Array(_, ty) = &self.ty {
307304
Ok(ty)
308305
} else {
309-
Err(Error::new(
310-
ErrorKind::Other,
311-
"expected array, got something else",
312-
))
306+
Err(Error::other("expected array, got something else"))
313307
}?;
314308
write!(f, "[")?;
315309
arr.key_sort
@@ -1229,7 +1223,7 @@ impl Embeddable for ZSharp {
12291223
let ps: Vec<Option<T>> = match precompute.map(|p| p.unwrap_array()) {
12301224
Some(Ok(v)) => v.into_iter().map(Some).collect(),
12311225
Some(Err(e)) => panic!("{}", e),
1232-
None => std::iter::repeat(None).take(*n).collect(),
1226+
None => std::iter::repeat_n(None, *n).collect(),
12331227
};
12341228
debug_assert_eq!(*n, ps.len());
12351229
array(
@@ -1243,7 +1237,7 @@ impl Embeddable for ZSharp {
12431237
let ps: Vec<Option<T>> = match precompute.map(|p| p.unwrap_array()) {
12441238
Some(Ok(v)) => v.into_iter().map(Some).collect(),
12451239
Some(Err(e)) => panic!("{}", e),
1246-
None => std::iter::repeat(None).take(*n).collect(),
1240+
None => std::iter::repeat_n(None, *n).collect(),
12471241
};
12481242
debug_assert_eq!(*n, ps.len());
12491243
array(ps.into_iter().enumerate().map(|(i, p)| {

src/front/zsharpcurly/term.rs

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -252,10 +252,10 @@ impl T {
252252
}
253253

254254
pub fn pretty<W: std::io::Write>(&self, f: &mut W) -> Result<(), std::io::Error> {
255-
use std::io::{Error, ErrorKind};
255+
use std::io::Error;
256256
let val = match &self.term.op() {
257257
Op::Const(v) => Ok(v),
258-
_ => Err(Error::new(ErrorKind::Other, "not a const val")),
258+
_ => Err(Error::other("not a const val")),
259259
}?;
260260
match &**val {
261261
Value::Bool(b) => write!(f, "{b}"),
@@ -285,19 +285,13 @@ impl T {
285285
})?;
286286
write!(f, ")")
287287
}
288-
_ => Err(Error::new(
289-
ErrorKind::Other,
290-
"expected struct or tuple, got something else",
291-
)),
288+
_ => Err(Error::other("expected struct or tuple, got something else")),
292289
},
293290
Value::Array(arr) => {
294291
let inner_ty = if let Ty::Array(_, ty) = &self.ty {
295292
Ok(ty)
296293
} else {
297-
Err(Error::new(
298-
ErrorKind::Other,
299-
"expected array, got something else",
300-
))
294+
Err(Error::other("expected array, got something else"))
301295
}?;
302296
write!(f, "[")?;
303297
arr.key_sort
@@ -1246,7 +1240,7 @@ impl Embeddable for ZSharp {
12461240
let ps: Vec<Option<T>> = match precompute.map(|p| p.unwrap_array()) {
12471241
Some(Ok(v)) => v.into_iter().map(Some).collect(),
12481242
Some(Err(e)) => panic!("{}", e),
1249-
None => std::iter::repeat(None).take(*n).collect(),
1243+
None => std::iter::repeat_n(None, *n).collect(),
12501244
};
12511245
debug_assert_eq!(*n, ps.len());
12521246
array(
@@ -1260,7 +1254,7 @@ impl Embeddable for ZSharp {
12601254
let ps: Vec<Option<T>> = match precompute.map(|p| p.unwrap_array()) {
12611255
Some(Ok(v)) => v.into_iter().map(Some).collect(),
12621256
Some(Err(e)) => panic!("{}", e),
1263-
None => std::iter::repeat(None).take(*n).collect(),
1257+
None => std::iter::repeat_n(None, *n).collect(),
12641258
};
12651259
debug_assert_eq!(*n, ps.len());
12661260
array(
@@ -1304,7 +1298,7 @@ impl Embeddable for ZSharp {
13041298
panic!("Precompute type doesn't match expected tuple type");
13051299
}
13061300
},
1307-
None => std::iter::repeat(None).take(tys.len()).collect(),
1301+
None => std::iter::repeat_n(None, tys.len()).collect(),
13081302
};
13091303
debug_assert_eq!(tys.len(), ps.len());
13101304
T::new(

src/ir/term/dist.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use super::*;
44

55
use circ_fields::{FieldT, FieldV};
66
use rand::{distributions::Distribution, prelude::SliceRandom, Rng};
7-
use std::iter::repeat;
7+
use std::iter::repeat_n;
88

99
// A distribution of boolean terms with some size.
1010
// All subterms are booleans.
@@ -210,9 +210,9 @@ impl FixedSizeDist {
210210
let s = Sort::BitVector(self.bv_width.unwrap());
211211
vec![s.clone(), s]
212212
}
213-
o if o.arity().is_none() && o != &Op::BvConcat => repeat(sort.clone())
214-
.take(rng.gen_range(1..self.size))
215-
.collect(),
213+
o if o.arity().is_none() && o != &Op::BvConcat => {
214+
repeat_n(sort.clone(), rng.gen_range(1..self.size)).collect()
215+
}
216216
// perhaps allow concat?
217217
Op::BvBinOp(_) => vec![sort.clone(), sort.clone()],
218218
Op::BvUnOp(_) => vec![sort.clone()],

src/target/aby/utils.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::path::Path;
66

77
/// Given Path `path` and String denominator `lang`, return the filename of the path
88
pub fn get_path(path: &Path, lang: &str, t: &str, create: bool) -> String {
9-
let filename = Path::new(&path.iter().last().unwrap())
9+
let filename = Path::new(path.iter().next_back().unwrap())
1010
.file_stem()
1111
.unwrap()
1212
.to_os_string()

src/target/ilp/trans.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ impl ToMilp {
291291
Op::BvUext(extra_n) => {
292292
if self.bv_has_bits(&bv.cs()[0]) {
293293
let bits = self.get_bv_bits(&bv.cs()[0]);
294-
let ext_bits = std::iter::repeat(Expression::from(0)).take(*extra_n);
294+
let ext_bits = std::iter::repeat_n(Expression::from(0), *extra_n);
295295
self.set_bv_bits(bv, bits.into_iter().chain(ext_bits).collect());
296296
} else {
297297
let x = self.get_bv_uint(&bv.cs()[0]);
@@ -300,9 +300,8 @@ impl ToMilp {
300300
}
301301
Op::BvSext(extra_n) => {
302302
let mut bits = self.get_bv_bits(&bv.cs()[0]).into_iter().rev();
303-
let ext_bits = std::iter::repeat(bits.next().expect("sign ext empty"))
304-
.take(extra_n + 1);
305-
303+
let ext_bits =
304+
std::iter::repeat_n(bits.next().expect("sign ext empty"), extra_n + 1);
306305
self.set_bv_bits(bv, bits.rev().chain(ext_bits).collect());
307306
}
308307
Op::BoolToBv => {

src/target/r1cs/trans.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -740,7 +740,7 @@ impl<'cfg> ToR1cs<'cfg> {
740740
Op::BvUext(extra_n) => {
741741
if self.bv_has_bits(&bv.cs()[0]) {
742742
let bits = self.get_bv_bits(&bv.cs()[0]);
743-
let ext_bits = std::iter::repeat(self.zero.clone()).take(*extra_n);
743+
let ext_bits = std::iter::repeat_n(self.zero.clone(), *extra_n);
744744
self.set_bv_bits(bv, bits.into_iter().chain(ext_bits).collect());
745745
} else {
746746
let x = self.get_bv_uint(&bv.cs()[0]);
@@ -749,9 +749,8 @@ impl<'cfg> ToR1cs<'cfg> {
749749
}
750750
Op::BvSext(extra_n) => {
751751
let mut bits = self.get_bv_bits(&bv.cs()[0]).into_iter().rev();
752-
let ext_bits = std::iter::repeat(bits.next().expect("sign ext empty"))
753-
.take(extra_n + 1);
754-
752+
let ext_bits =
753+
std::iter::repeat_n(bits.next().expect("sign ext empty"), extra_n + 1);
755754
self.set_bv_bits(bv, bits.rev().chain(ext_bits).collect());
756755
}
757756
Op::PfToBv(nbits) => {

third_party/ZoKratesCurly/zokrates_pest_ast/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// disable a clippy lint as pest_ast generates improper code
2-
#![allow(clippy::clone_on_copy)]
2+
#![allow(clippy::clone_on_copy, deprecated)]
33

44
use from_pest::FromPest;
55
use pest::error::Error as PestError;

0 commit comments

Comments
 (0)