Skip to content

Commit b642429

Browse files
committed
When not using eager execution, don't modify the non-meta context
variables
1 parent ab82426 commit b642429

File tree

2 files changed

+20
-13
lines changed

2 files changed

+20
-13
lines changed

src/main/java/com/hubspot/jinjava/lib/tag/ForTag.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,6 @@ public String renderForCollection(
163163
) {
164164
ForLoop loop = ObjectIterator.getLoop(collection);
165165

166-
interpreter.getContext().addNonMetaContextVariables(loopVars);
167166
try (InterpreterScopeClosable c = interpreter.enterScope()) {
168167
if (interpreter.isValidationMode() && !loop.hasNext()) {
169168
loop = ObjectIterator.getLoop(new DummyObject());
@@ -292,8 +291,6 @@ public String renderForCollection(
292291
}
293292
}
294293
return checkLoopVariable(interpreter, buff);
295-
} finally {
296-
interpreter.getContext().removeNonMetaContextVariables(loopVars);
297294
}
298295
}
299296

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

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,26 @@ public String innerInterpret(TagNode tagNode, JinjavaInterpreter interpreter) {
5656
EagerExecutionResult result = EagerContextWatcher.executeInChildContext(
5757
eagerInterpreter -> {
5858
EagerExpressionResult expressionResult = EagerExpressionResult.fromSupplier(
59-
() ->
60-
getTag()
61-
.renderForCollection(
62-
tagNode,
63-
eagerInterpreter,
64-
loopVarsAndExpression.getLeft(),
65-
!collectionResult.getResult().toList().isEmpty()
66-
? collectionResult.getResult().toList().get(0)
67-
: Collections.emptyList()
68-
),
59+
() -> {
60+
try {
61+
interpreter
62+
.getContext()
63+
.addNonMetaContextVariables(loopVarsAndExpression.getLeft());
64+
return getTag()
65+
.renderForCollection(
66+
tagNode,
67+
eagerInterpreter,
68+
loopVarsAndExpression.getLeft(),
69+
!collectionResult.getResult().toList().isEmpty()
70+
? collectionResult.getResult().toList().get(0)
71+
: Collections.emptyList()
72+
);
73+
} finally {
74+
interpreter
75+
.getContext()
76+
.removeNonMetaContextVariables(loopVarsAndExpression.getLeft());
77+
}
78+
},
6979
eagerInterpreter
7080
);
7181
addedTokens.addAll(eagerInterpreter.getContext().getDeferredTokens());

0 commit comments

Comments
 (0)