3636import com .hubspot .jinjava .lib .tag .DoTag ;
3737import com .hubspot .jinjava .lib .tag .ExtendsTag ;
3838import com .hubspot .jinjava .lib .tag .eager .EagerGenericTag ;
39+ import com .hubspot .jinjava .lib .tag .eager .importing .EagerImportingStrategyFactory ;
3940import com .hubspot .jinjava .objects .serialization .PyishObjectMapper ;
4041import com .hubspot .jinjava .objects .serialization .PyishSerializable ;
4142import com .hubspot .jinjava .random .ConstantZeroRandomNumberGenerator ;
4647import com .hubspot .jinjava .tree .TreeParser ;
4748import com .hubspot .jinjava .tree .output .BlockInfo ;
4849import com .hubspot .jinjava .tree .output .BlockPlaceholderOutputNode ;
50+ import com .hubspot .jinjava .tree .output .DynamicRenderedOutputNode ;
4951import com .hubspot .jinjava .tree .output .OutputList ;
5052import com .hubspot .jinjava .tree .output .OutputNode ;
5153import com .hubspot .jinjava .tree .output .RenderedOutputNode ;
@@ -513,7 +515,10 @@ private void resolveBlockStubs(OutputList output, Stack<String> blockNames) {
513515 currentBlock = block ;
514516
515517 OutputList blockValueBuilder = new OutputList (config .getMaxOutputSize ());
518+ DynamicRenderedOutputNode prefix = new DynamicRenderedOutputNode ();
519+ blockValueBuilder .addNode (prefix );
516520 boolean pushedParentPathOntoStack = false ;
521+ int numDeferredTokensBefore = context .getDeferredTokens ().size ();
517522 if (
518523 block .getParentPath ().isPresent () &&
519524 !getContext ().getCurrentPathStack ().contains (block .getParentPath ().get ())
@@ -535,7 +540,19 @@ private void resolveBlockStubs(OutputList output, Stack<String> blockNames) {
535540 blockValueBuilder .addNode (child .render (this ));
536541 }
537542 if (pushedParentPathOntoStack ) {
538- getContext ().getCurrentPathStack ().pop ();
543+ if (context .getDeferredTokens ().size () > numDeferredTokensBefore ) {
544+ prefix .setValue (
545+ EagerImportingStrategyFactory .getSetTagForCurrentPath (this )
546+ );
547+ getContext ().getCurrentPathStack ().pop ();
548+ blockValueBuilder .addNode (
549+ new RenderedOutputNode (
550+ EagerImportingStrategyFactory .getSetTagForCurrentPath (this )
551+ )
552+ );
553+ } else {
554+ getContext ().getCurrentPathStack ().pop ();
555+ }
539556 }
540557 blockNames .push (blockPlaceholder .getBlockName ());
541558 resolveBlockStubs (blockValueBuilder , blockNames );
0 commit comments