mirror of
https://github.com/askama-rs/askama.git
synced 2025-09-27 04:50:40 +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 {
|
||||
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 {
|
||||
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 {
|
||||
syn::Ident::new("__askama_values", proc_macro2::Span::mixed_site())
|
||||
syn::Ident::new("__askama_values", proc_macro2::Span::call_site())
|
||||
}
|
||||
|
||||
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 {
|
||||
syn::Ident::new("__askama_item", proc_macro2::Span::mixed_site())
|
||||
syn::Ident::new("__askama_item", proc_macro2::Span::call_site())
|
||||
}
|
||||
|
||||
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 {
|
||||
syn::Ident::new("__askama_iter", proc_macro2::Span::mixed_site())
|
||||
syn::Ident::new("__askama_iter", proc_macro2::Span::call_site())
|
||||
}
|
||||
|
||||
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 {
|
||||
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 {
|
||||
|
@ -464,3 +464,37 @@ fn test_loop_locals() {
|
||||
let t = LoopLocalsContext { bla: 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