diff --git a/juno_frontend/src/lang.y b/juno_frontend/src/lang.y index d294d9a14a3a181ea35d94cf09aa236dfae94baf..e980773f18e816b1fe3b01995e71b00016c2f88b 100644 --- a/juno_frontend/src/lang.y +++ b/juno_frontend/src/lang.y @@ -174,13 +174,12 @@ FuncDecl -> Result<Top, ()> body : $11? }) } ; Arguments -> Result<Vec<(Option<Span>, VarBind)>, ()> - : { Ok(vec![]) } - | ArgBind { Ok(vec![$1?]) } - | ArgumentsS ',' ArgBind { flatten($1, $3) } + : ArgumentsList { Ok($1?.into_iter().collect()) } ; -ArgumentsS -> Result<Vec<(Option<Span>, VarBind)>, ()> - : ArgBind { Ok(vec![$1?]) } - | ArgumentsS ',' ArgBind { flatten($1, $3) } +ArgumentsList -> Result<VecDeque<(Option<Span>, VarBind)>, ()> + : { Ok(VecDeque::new()) } + | ArgBind { Ok(VecDeque::from([$1?])) } + | ArgBind ',' ArgumentsList { let mut lst = $3?; lst.push_front($1?); Ok(lst) } ; ArgBind -> Result<(Option<Span>, VarBind), ()> : 'inout' VarBind { Ok((Some(span_of_tok($1)?), $2?)) } diff --git a/juno_samples/cava/src/cava.jn b/juno_samples/cava/src/cava.jn index fb51beeba7f322dbbe2e14e7088bc2c4f6d0c755..f3096ec34230ad838ca803e8d8de79c176aa9bd2 100644 --- a/juno_samples/cava/src/cava.jn +++ b/juno_samples/cava/src/cava.jn @@ -206,8 +206,8 @@ fn cava<r, c, num_ctrl_pts : usize>( ctrl_pts : f32[num_ctrl_pts, CHAN], weights : f32[num_ctrl_pts, CHAN], coefs : f32[4, CHAN], - tonemap : f32[256, CHAN]) --> u8[CHAN, r, c] { + tonemap : f32[256, CHAN], +) -> u8[CHAN, r, c] { let scaled = scale::<r, c>(input); let demosc = demosaic::<r, c>(scaled); let denosd = denoise::<r, c>(demosc);