mirror of
https://github.com/askama-rs/askama.git
synced 2025-09-30 14:31:36 +00:00
Merge pull request #179 from GuillaumeGomez/rust-macro-not-prepended
Do not prepend rust macro calls with `&`
This commit is contained in:
commit
77931a774f
@ -2859,7 +2859,7 @@ fn is_copyable_within_op(expr: &Expr<'_>, within_op: bool) -> bool {
|
||||
// The result of a call likely doesn't need to be borrowed,
|
||||
// as in that case the call is more likely to return a
|
||||
// reference in the first place then.
|
||||
Expr::Call(..) | Expr::Path(..) | Expr::Filter(..) => true,
|
||||
Expr::Call(..) | Expr::Path(..) | Expr::Filter(..) | Expr::RustMacro(..) => true,
|
||||
// If the `expr` is within a `Unary` or `BinOp` then
|
||||
// an assumption can be made that the operand is copy.
|
||||
// If not, then the value is moved and adding `.clone()`
|
||||
|
23
testing/tests/let.rs
Normal file
23
testing/tests/let.rs
Normal file
@ -0,0 +1,23 @@
|
||||
use rinja::Template;
|
||||
|
||||
#[derive(Template)]
|
||||
#[template(
|
||||
source = r#"{%- let x -%}
|
||||
{%- if y -%}
|
||||
{%- let x = String::new() %}
|
||||
{%- else -%}
|
||||
{%- let x = format!("blob") %}
|
||||
{%- endif -%}
|
||||
{{ x }}"#,
|
||||
ext = "html"
|
||||
)]
|
||||
struct A {
|
||||
y: bool,
|
||||
}
|
||||
|
||||
// This test ensures that rust macro calls in `let`/`set` statements are not prepended with `&`.
|
||||
#[test]
|
||||
fn let_macro() {
|
||||
let template = A { y: false };
|
||||
assert_eq!(template.render().unwrap(), "blob")
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user