aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--askama_derive/src/generator.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/askama_derive/src/generator.rs b/askama_derive/src/generator.rs
index eb293b0..abd16d5 100644
--- a/askama_derive/src/generator.rs
+++ b/askama_derive/src/generator.rs
@@ -719,11 +719,18 @@ impl<'a> Generator<'a> {
let mut names = Buffer::new(0);
let mut values = Buffer::new(0);
let mut is_first_variable = true;
+ if args.len() != def.args.len() {
+ return Err(CompileError::from(format!(
+ "macro {name:?} expected {} argument{}, found {}",
+ def.args.len(),
+ if def.args.len() != 1 { "s" } else { "" },
+ args.len()
+ )));
+ }
for (i, arg) in def.args.iter().enumerate() {
let expr = args.get(i).ok_or_else(|| {
CompileError::from(format!("macro {name:?} takes more than {i} arguments"))
})?;
-
match expr {
// If `expr` is already a form of variable then
// don't reintroduce a new variable. This is