diff options
-rw-r--r-- | askama_shared/src/generator.rs | 23 | ||||
-rw-r--r-- | testing/tests/simple.rs | 6 |
2 files changed, 11 insertions, 18 deletions
diff --git a/askama_shared/src/generator.rs b/askama_shared/src/generator.rs index fb8619e..d904524 100644 --- a/askama_shared/src/generator.rs +++ b/askama_shared/src/generator.rs @@ -1030,7 +1030,10 @@ impl<'a, S: std::hash::BuildHasher> Generator<'a, S> { } let scoped = match *arg { - Expr::Filter(_, _) | Expr::MethodCall(_, _, _) => true, + Expr::Filter(_, _) + | Expr::MethodCall(_, _, _) + | Expr::VarCall(_, _) + | Expr::PathCall(_, _) => true, _ => false, }; @@ -1169,13 +1172,8 @@ impl<'a, S: std::hash::BuildHasher> Generator<'a, S> { } buf.write(part); } - buf.write("("); - for (i, arg) in args.iter().enumerate() { - if i > 0 { - buf.write(","); - } - self.visit_expr(buf, arg); - } + buf.write("(&"); + self._visit_args(buf, args); buf.write(")"); DisplayWrap::Unwrapped } @@ -1198,13 +1196,8 @@ impl<'a, S: std::hash::BuildHasher> Generator<'a, S> { buf.write("self."); buf.write(s); } - buf.write(")("); - for (i, arg) in args.iter().enumerate() { - if i > 0 { - buf.write(","); - } - self.visit_expr(buf, arg); - } + buf.write(")(&"); + self._visit_args(buf, args); buf.write(")"); DisplayWrap::Unwrapped } diff --git a/testing/tests/simple.rs b/testing/tests/simple.rs index 3e156b4..7dcacba 100644 --- a/testing/tests/simple.rs +++ b/testing/tests/simple.rs @@ -265,7 +265,7 @@ fn test_slice_literal() { #[derive(Template)] #[template(source = "Hello, {{ world(\"123\", 4) }}!", ext = "txt")] struct FunctionRefTemplate { - world: fn(s: &str, v: u8) -> String, + world: fn(s: &str, v: &u8) -> String, } #[test] @@ -276,7 +276,7 @@ fn test_func_ref_call() { assert_eq!(t.render().unwrap(), "Hello, world(123, 4)!"); } -fn world2(s: &str, v: u8) -> String { +fn world2(s: &str, v: &u8) -> String { format!("world{}{}", v, s) } @@ -294,7 +294,7 @@ fn test_path_func_call() { struct FunctionTemplate; impl FunctionTemplate { - fn world3(&self, s: &str, v: u8) -> String { + fn world3(&self, s: &str, v: &u8) -> String { format!("world{}{}", s, v) } } |