mirror of
https://github.com/askama-rs/askama.git
synced 2025-10-02 07:20:55 +00:00
Fix wrong span context for askama variables
This commit is contained in:
parent
756717c2f7
commit
885e0f7de1
@ -583,39 +583,39 @@ fn field_new(name: &str, span: proc_macro2::Span) -> TokenStream {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn var_writer() -> Ident {
|
fn var_writer() -> Ident {
|
||||||
syn::Ident::new("__askama_writer", proc_macro2::Span::mixed_site())
|
syn::Ident::new("__askama_writer", proc_macro2::Span::call_site())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn var_filter_source() -> Ident {
|
fn var_filter_source() -> Ident {
|
||||||
syn::Ident::new("__askama_filter_block", proc_macro2::Span::mixed_site())
|
syn::Ident::new("__askama_filter_block", proc_macro2::Span::call_site())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn var_values() -> Ident {
|
fn var_values() -> Ident {
|
||||||
syn::Ident::new("__askama_values", proc_macro2::Span::mixed_site())
|
syn::Ident::new("__askama_values", proc_macro2::Span::call_site())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn var_arg() -> Ident {
|
fn var_arg() -> Ident {
|
||||||
syn::Ident::new("__askama_arg", proc_macro2::Span::mixed_site())
|
syn::Ident::new("__askama_arg", proc_macro2::Span::call_site())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn var_item() -> Ident {
|
fn var_item() -> Ident {
|
||||||
syn::Ident::new("__askama_item", proc_macro2::Span::mixed_site())
|
syn::Ident::new("__askama_item", proc_macro2::Span::call_site())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn var_len() -> Ident {
|
fn var_len() -> Ident {
|
||||||
syn::Ident::new("__askama_len", proc_macro2::Span::mixed_site())
|
syn::Ident::new("__askama_len", proc_macro2::Span::call_site())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn var_iter() -> Ident {
|
fn var_iter() -> Ident {
|
||||||
syn::Ident::new("__askama_iter", proc_macro2::Span::mixed_site())
|
syn::Ident::new("__askama_iter", proc_macro2::Span::call_site())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn var_cycle() -> Ident {
|
fn var_cycle() -> Ident {
|
||||||
syn::Ident::new("__askama_cycle", proc_macro2::Span::mixed_site())
|
syn::Ident::new("__askama_cycle", proc_macro2::Span::call_site())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn var_did_loop() -> Ident {
|
fn var_did_loop() -> Ident {
|
||||||
syn::Ident::new("__askama_did_loop", proc_macro2::Span::mixed_site())
|
syn::Ident::new("__askama_did_loop", proc_macro2::Span::call_site())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn var_expr_n(n: usize, span: proc_macro2::Span) -> Ident {
|
fn var_expr_n(n: usize, span: proc_macro2::Span) -> Ident {
|
||||||
|
@ -464,3 +464,37 @@ fn test_loop_locals() {
|
|||||||
let t = LoopLocalsContext { bla: 10 };
|
let t = LoopLocalsContext { bla: 10 };
|
||||||
assert_eq!(t.render().unwrap(), "10");
|
assert_eq!(t.render().unwrap(), "10");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This test ensures that the span used for generating askama idents
|
||||||
|
// is working correctly when derive happens with literals coming from
|
||||||
|
// another scope.
|
||||||
|
//
|
||||||
|
// Regression test for <https://github.com/askama-rs/askama/issues/564>.
|
||||||
|
#[test]
|
||||||
|
fn test_loop_span_scope() {
|
||||||
|
macro_rules! looper {
|
||||||
|
($l:literal) => {
|
||||||
|
#[derive(Template)]
|
||||||
|
#[template(source = $l, ext = "txt")]
|
||||||
|
pub struct X;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
looper!(
|
||||||
|
r#"
|
||||||
|
{%- macro column(idx) -%}
|
||||||
|
{{ idx }}
|
||||||
|
{%- endmacro -%}
|
||||||
|
|
||||||
|
{%- macro nested_arr(arr) -%}
|
||||||
|
{% for e in arr -%}
|
||||||
|
{{- loop.index0 }}
|
||||||
|
{{~ column(loop.index0) -}}
|
||||||
|
{% endfor -%}
|
||||||
|
{% endmacro -%}
|
||||||
|
|
||||||
|
{{ nested_arr([1, 2, 3]) }}"#
|
||||||
|
);
|
||||||
|
|
||||||
|
assert_eq!(X.render().unwrap(), "0\n01\n12\n2");
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user