diff options
author | Ryan Kelly <ryan@rfk.id.au> | 2021-06-21 16:35:57 +1000 |
---|---|---|
committer | Dirkjan Ochtman <dirkjan@ochtman.nl> | 2021-06-22 11:41:45 +0200 |
commit | 49252d2457f280026c020d0df46733578eb959a5 (patch) | |
tree | 37a9f8935f8e0c8ce1c83f6d2f7c69b30e89e5f7 /askama_shared | |
parent | b318d7cbcded2c6dfc66bbe19687f1246a9a9eab (diff) | |
download | askama-49252d2457f280026c020d0df46733578eb959a5.tar.gz askama-49252d2457f280026c020d0df46733578eb959a5.tar.bz2 askama-49252d2457f280026c020d0df46733578eb959a5.zip |
Fix code generation for macro calls that store args in variables.
Diffstat (limited to 'askama_shared')
-rw-r--r-- | askama_shared/src/generator.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/askama_shared/src/generator.rs b/askama_shared/src/generator.rs index 638a25f..b0489ec 100644 --- a/askama_shared/src/generator.rs +++ b/askama_shared/src/generator.rs @@ -717,6 +717,7 @@ impl<'a, S: std::hash::BuildHasher> Generator<'a, S> { let mut names = Buffer::new(0); let mut values = Buffer::new(0); + let mut is_first_variable = true; for (i, arg) in def.args.iter().enumerate() { let expr = args.get(i).ok_or_else(|| { CompileError::String(format!("macro '{}' takes more than {} arguments", name, i)) @@ -742,7 +743,9 @@ impl<'a, S: std::hash::BuildHasher> Generator<'a, S> { // multiple times, e.g. in the case of macro // parameters being used multiple times. _ => { - if i > 0 { + if is_first_variable { + is_first_variable = false + } else { names.write(", "); values.write(", "); } |