From 7eb839b7c23431e351ee702ad37f1a0c148295d1 Mon Sep 17 00:00:00 2001 From: Aaron Councilman <aaronjc4@illinois.edu> Date: Tue, 28 Jan 2025 13:08:15 -0600 Subject: [PATCH] Allow dangling commas in argument lists --- juno_frontend/src/lang.y | 11 +++++------ juno_samples/cava/src/cava.jn | 4 ++-- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/juno_frontend/src/lang.y b/juno_frontend/src/lang.y index d294d9a1..e980773f 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 fb51beeb..f3096ec3 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); -- GitLab