Skip to content

Commit ba9be23

Browse files
authored
Merge pull request #1070 from HubSpot/set-variable-of-call
Preserve the setting of a variable when calling eager macro function.
2 parents 1133893 + 5b6754b commit ba9be23

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

src/main/java/com/hubspot/jinjava/lib/tag/eager/EagerCallTag.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public String eagerInterpret(
4141
InterpretException e
4242
) {
4343
interpreter.getContext().checkNumberOfDeferredTokens();
44-
try (InterpreterScopeClosable c = interpreter.enterScope()) {
44+
try (InterpreterScopeClosable c = interpreter.enterNonStackingScope()) {
4545
MacroFunction caller = new MacroFunction(
4646
tagNode.getChildren(),
4747
"caller",

src/test/java/com/hubspot/jinjava/lib/fn/eager/EagerMacroFunctionTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,20 @@ public void itReconstructsForAliasedName() {
7777
.isEqualTo(String.format(codeFormat, fullName));
7878
}
7979

80+
@Test
81+
public void itResolvesFromSet() {
82+
String template =
83+
"{% macro foo(foobar, other) %}" +
84+
" {% do foobar.update({'a': 'b'} ) %} " +
85+
" {{ foobar }} and {{ other }}" +
86+
"{% endmacro %}" +
87+
"{% set bar = {} %}" +
88+
"{% call foo(bar, deferred) %} {% endcall %}" +
89+
"{{ bar }}";
90+
String firstPass = interpreter.render(template);
91+
assertThat(firstPass).isEqualTo(template);
92+
}
93+
8094
@Test
8195
public void itReconstructsImageWithNamedParams() {
8296
String name = "foo";

0 commit comments

Comments
 (0)