aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--askama_derive/src/generator.rs2
-rw-r--r--testing/tests/vars.rs14
2 files changed, 15 insertions, 1 deletions
diff --git a/askama_derive/src/generator.rs b/askama_derive/src/generator.rs
index b0630df..8f2866e 100644
--- a/askama_derive/src/generator.rs
+++ b/askama_derive/src/generator.rs
@@ -1116,7 +1116,7 @@ impl<'a> Generator<'a> {
}
fn visit_var(&mut self, buf: &mut Buffer, s: &str) -> DisplayWrap {
- if self.locals.contains(s) {
+ if self.locals.contains(s) || s == "self" {
buf.write(s);
} else {
buf.write("self.");
diff --git a/testing/tests/vars.rs b/testing/tests/vars.rs
index 04f9ff2..da8aef6 100644
--- a/testing/tests/vars.rs
+++ b/testing/tests/vars.rs
@@ -43,3 +43,17 @@ fn test_let_decl() {
};
assert_eq!(t.render().unwrap(), "bar");
}
+
+#[derive(Template)]
+#[template(
+ source = "{% for v in self.0 %}{{ v }}{% endfor %}",
+ ext = "txt",
+ print = "code"
+)]
+struct SelfIterTemplate(Vec<usize>);
+
+#[test]
+fn test_self_iter() {
+ let t = SelfIterTemplate(vec![1, 2, 3]);
+ assert_eq!(t.render().unwrap(), "123");
+}