From 63b98ec7d379768d771966c6aa44de20862e0994 Mon Sep 17 00:00:00 2001 From: René Kijewski Date: Mon, 30 Jan 2023 13:09:49 +0100 Subject: Extends expects a string and nothing else --- askama_derive/src/generator.rs | 2 +- askama_derive/src/heritage.rs | 4 ++-- askama_derive/src/parser.rs | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/askama_derive/src/generator.rs b/askama_derive/src/generator.rs index 5770bd5..173fab1 100644 --- a/askama_derive/src/generator.rs +++ b/askama_derive/src/generator.rs @@ -200,7 +200,7 @@ fn find_used_templates( while let Some((path, source)) = check.pop() { for n in parse(&source, input.syntax)? { match n { - Node::Extends(Expr::StrLit(extends)) => { + Node::Extends(extends) => { let extends = input.config.find_template(extends, Some(&path))?; let dependency_path = (path.clone(), extends.clone()); if dependency_graph.contains(&dependency_path) { diff --git a/askama_derive/src/heritage.rs b/askama_derive/src/heritage.rs index 010f723..ec1997e 100644 --- a/askama_derive/src/heritage.rs +++ b/askama_derive/src/heritage.rs @@ -2,7 +2,7 @@ use std::collections::HashMap; use std::path::{Path, PathBuf}; use crate::config::Config; -use crate::parser::{Expr, Loop, Macro, Node}; +use crate::parser::{Loop, Macro, Node}; use crate::CompileError; pub(crate) struct Heritage<'a> { @@ -58,7 +58,7 @@ impl Context<'_> { while let Some(nodes) = nested.pop() { for n in nodes { match n { - Node::Extends(Expr::StrLit(extends_path)) if top => match extends { + Node::Extends(extends_path) if top => match extends { Some(_) => return Err("multiple extend blocks found".into()), None => { extends = Some(config.find_template(extends_path, Some(path))?); diff --git a/askama_derive/src/parser.rs b/askama_derive/src/parser.rs index bcf9c58..5045731 100644 --- a/askama_derive/src/parser.rs +++ b/askama_derive/src/parser.rs @@ -24,7 +24,7 @@ pub(crate) enum Node<'a> { Cond(Vec>, Ws), Match(Ws, Expr<'a>, Vec>, Ws), Loop(Loop<'a>), - Extends(Expr<'a>), + Extends(&'a str), BlockDef(Ws, &'a str, Vec>, Ws), Include(Ws, &'a str), Import(Ws, &'a str, &'a str), @@ -985,7 +985,7 @@ fn block_for<'a>(i: &'a str, s: &State<'_>) -> IResult<&'a str, Node<'a>> { } fn block_extends(i: &str) -> IResult<&str, Node<'_>> { - let (i, (_, name)) = tuple((ws(keyword("extends")), ws(expr_str_lit)))(i)?; + let (i, (_, name)) = tuple((ws(keyword("extends")), ws(str_lit)))(i)?; Ok((i, Node::Extends(name))) } -- cgit