Fix RenderFilter's handling of deferred values #1258
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently when using
|renderfilter and encountering aDeferredValueas part of theinterpreter.renderFlat, a DeferredToken will be created and the output will be correct, but it will lose the indication that there was a deferred value.Similar to #920
Currently results in:
Because RenderFilter did not have any indication that the filter chain could not keep going. This is fixes as a DeferredInvocationResollutionException is now thrown. This results in the rendered value getting stored in a temporary value and substituted for the
|renderfilter.I also replaced some usages of
DeferredParsingExceptionwithDeferredValueExceptionin this PR because those usages didn't do anything beneficial and removing that logic makes the code ever so slightly less complex.