aboutsummaryrefslogtreecommitdiffstats
path: root/askama_shared
diff options
context:
space:
mode:
authorLibravatar Ryan Kelly <ryan@rfk.id.au>2021-06-21 16:35:57 +1000
committerLibravatar Dirkjan Ochtman <dirkjan@ochtman.nl>2021-06-22 11:41:45 +0200
commit49252d2457f280026c020d0df46733578eb959a5 (patch)
tree37a9f8935f8e0c8ce1c83f6d2f7c69b30e89e5f7 /askama_shared
parentb318d7cbcded2c6dfc66bbe19687f1246a9a9eab (diff)
downloadaskama-49252d2457f280026c020d0df46733578eb959a5.tar.gz
askama-49252d2457f280026c020d0df46733578eb959a5.tar.bz2
askama-49252d2457f280026c020d0df46733578eb959a5.zip
Fix code generation for macro calls that store args in variables.
Diffstat (limited to '')
-rw-r--r--askama_shared/src/generator.rs5
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(", ");
}