aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar max <gmx.sht@gmail.com>2023-12-13 15:33:34 +0200
committerLibravatar Dirkjan Ochtman <dirkjan@ochtman.nl>2023-12-13 16:47:02 +0100
commit28182a1549a6546750d3f9834cb35686b89c3cf9 (patch)
tree76c1eca645646b1d18a32175a20d166b82a4a5b7
parente4b8ca3c44b5ede192700d0e4c9ed1c58338c1b6 (diff)
downloadaskama-28182a1549a6546750d3f9834cb35686b89c3cf9.tar.gz
askama-28182a1549a6546750d3f9834cb35686b89c3cf9.tar.bz2
askama-28182a1549a6546750d3f9834cb35686b89c3cf9.zip
Bugfix in `is_attr_self()`
Signed-off-by: max <gmx.sht@gmail.com>
-rw-r--r--askama_derive/src/generator.rs2
-rw-r--r--testing/tests/calls.rs19
2 files changed, 20 insertions, 1 deletions
diff --git a/askama_derive/src/generator.rs b/askama_derive/src/generator.rs
index 65136c6..6004aff 100644
--- a/askama_derive/src/generator.rs
+++ b/askama_derive/src/generator.rs
@@ -1945,7 +1945,7 @@ fn is_copyable_within_op(expr: &Expr<'_>, within_op: bool) -> bool {
pub(crate) fn is_attr_self(expr: &Expr<'_>) -> bool {
match expr {
Expr::Attr(obj, _) if matches!(obj.as_ref(), Expr::Var("self")) => true,
- Expr::Attr(obj, _) if matches!(obj.as_ref(), Expr::Attr(..)) => is_attr_self(expr),
+ Expr::Attr(obj, _) if matches!(obj.as_ref(), Expr::Attr(..)) => is_attr_self(obj),
_ => false,
}
}
diff --git a/testing/tests/calls.rs b/testing/tests/calls.rs
index 052f34f..28d7491 100644
--- a/testing/tests/calls.rs
+++ b/testing/tests/calls.rs
@@ -80,3 +80,22 @@ fn test_one_func_binop() {
};
assert_eq!(t.render().unwrap(), "246");
}
+
+fn double_attr_arg_helper(x: u32) -> u32 {
+ x * x + x
+}
+
+#[derive(askama::Template)]
+#[template(
+ source = "{{ self::double_attr_arg_helper(self.x.0 + 2) }}",
+ ext = "txt"
+)]
+struct DoubleAttrArg {
+ x: (u32,),
+}
+
+#[test]
+fn test_double_attr_arg() {
+ let t = DoubleAttrArg { x: (10,) };
+ assert_eq!(t.render().unwrap(), "156");
+}