nystudio107 / craft-templatecomments

Adds a HTML comment with performance timings to demarcate `{% block %}`s and each Twig template that is included or extended.
https://nystudio107.com/
MIT License
20 stars 1 forks source link

Throwing exception with Craft 5.4.0.1 #44

Closed dlindberg closed 2 weeks ago

dlindberg commented 2 weeks ago

Describe the bug

There looks to be a bad interaction with the Craft 5.4.0.1 update

To reproduce

Steps to reproduce the behaviour:

  1. Install 5.4.0.1
  2. Load a front end page
  3. TypeError: count(): Argument #1 ($value) must be of type Countable|array, null given in /var/www/html/vendor/twig/twig/src/Parser.php:312
    Stack trace:
    #0 /var/www/html/vendor/twig/twig/src/Extension/CoreExtension.php(1924): Twig\Parser->hasInheritance()
    #1 /var/www/html/vendor/twig/twig/src/ExpressionParser.php(476): Twig\Extension\CoreExtension::parseParentFunction()
    #2 /var/www/html/vendor/twig/twig/src/ExpressionParser.php(240): Twig\ExpressionParser->getFunctionNode()
    #3 /var/www/html/vendor/twig/twig/src/ExpressionParser.php(177): Twig\ExpressionParser->parsePrimaryExpression()
    #4 /var/www/html/vendor/twig/twig/src/ExpressionParser.php(72): Twig\ExpressionParser->getPrimary()
    #5 /var/www/html/vendor/nystudio107/craft-closure/src/twig/ClosureExpressionParser.php(27): Twig\ExpressionParser->parseExpression()
    #6 /var/www/html/vendor/nystudio107/craft-templatecomments/src/web/twig/TemplateCommentsParser.php(194): nystudio107\closure\twig\ClosureExpressionParser->parseExpression()
    #7 /var/www/html/vendor/nystudio107/craft-templatecomments/src/web/twig/tokenparsers/CommentBlockTokenParser.php(60): nystudio107\templatecomments\web\twig\TemplateCommentsParser->subparse()
    #8 /var/www/html/vendor/nystudio107/craft-templatecomments/src/web/twig/TemplateCommentsParser.php(237): nystudio107\templatecomments\web\twig\tokenparsers\CommentBlockTokenParser->parse()
    #9 /var/www/html/vendor/nystudio107/craft-templatecomments/src/web/twig/tokenparsers/CommentsTokenParser.php(46): nystudio107\templatecomments\web\twig\TemplateCommentsParser->subparse()
    #10 /var/www/html/vendor/nystudio107/craft-templatecomments/src/web/twig/TemplateCommentsParser.php(237): nystudio107\templatecomments\web\twig\tokenparsers\CommentsTokenParser->parse()
    #11 /var/www/html/vendor/nystudio107/craft-templatecomments/src/web/twig/TemplateCommentsParser.php(149): nystudio107\templatecomments\web\twig\TemplateCommentsParser->subparse()
    #12 /var/www/html/vendor/twig/twig/src/Environment.php(523): nystudio107\templatecomments\web\twig\TemplateCommentsParser->parse()
    #13 /var/www/html/vendor/twig/twig/src/Environment.php(551): Twig\Environment->parse()
    #14 /var/www/html/vendor/craftcms/cms/src/web/twig/Environment.php(39): Twig\Environment->compileSource()
    #15 /var/www/html/vendor/twig/twig/src/Environment.php(381): craft\web\twig\Environment->compileSource()
    #16 /var/www/html/vendor/twig/twig/src/Template.php(309): Twig\Environment->loadTemplate()
    #17 /var/www/html/storage/runtime/compiled_templates/26/26fd3c50aac29dd9cc0cf79c1a9d0094.php(54): Twig\Template->loadTemplate()
    #18 /var/www/html/vendor/twig/twig/src/Template.php(398): __TwigTemplate_bf6b792c8192498fe3c4e16b904fb197->doDisplay()
    #19 /var/www/html/storage/runtime/compiled_templates/97/97c3ec73fc9392371bcc0670865aaf0a.php(59): Twig\Template->yield()
    #20 /var/www/html/vendor/twig/twig/src/Template.php(398): __TwigTemplate_c9e125f144ebd161ba8ba063117f0c2c->doDisplay()
    #21 /var/www/html/storage/runtime/compiled_templates/b8/b8962d2e06d68b6775b51bebb1761f38.php(57): Twig\Template->yield()
    #22 /var/www/html/vendor/twig/twig/src/Template.php(398): __TwigTemplate_b96adecc89e890c63ccb581e3315e374->doDisplay()
    #23 /var/www/html/vendor/twig/twig/src/Template.php(354): Twig\Template->yield()
    #24 /var/www/html/vendor/twig/twig/src/Template.php(369): Twig\Template->display()
    #25 /var/www/html/vendor/twig/twig/src/TemplateWrapper.php(38): Twig\Template->render()
    #26 /var/www/html/vendor/twig/twig/src/Environment.php(306): Twig\TemplateWrapper->render()
    #27 /var/www/html/vendor/craftcms/cms/src/web/View.php(501): Twig\Environment->render()
    #28 /var/www/html/vendor/craftcms/cms/src/helpers/ElementHelper.php(957): craft\web\View->renderTemplate()
    #29 /var/www/html/vendor/craftcms/cms/src/elements/ElementCollection.php(383): craft\helpers\ElementHelper::renderElements()
    #30 /var/www/html/vendor/twig/twig/src/Extension/CoreExtension.php(1740): craft\elements\ElementCollection->render()
    #31 /var/www/html/vendor/craftcms/cms/src/helpers/Template.php(148): Twig\Extension\CoreExtension::getAttribute()
    #32 /var/www/html/storage/runtime/compiled_templates/be/be721b2748f7bbee64d32030dad37726.php(76): craft\helpers\Template::attribute()
    #33 /var/www/html/vendor/twig/twig/src/Template.php(398): __TwigTemplate_677ac780250c178a589feabd350f53e8->doDisplay()
    #34 /var/www/html/vendor/twig/twig/src/Template.php(354): Twig\Template->yield()
    #35 /var/www/html/vendor/twig/twig/src/Template.php(369): Twig\Template->display()
    #36 /var/www/html/vendor/twig/twig/src/TemplateWrapper.php(38): Twig\Template->render()
    #37 /var/www/html/vendor/twig/twig/src/Extension/CoreExtension.php(1438): Twig\TemplateWrapper->render()
    #38 /var/www/html/storage/runtime/compiled_templates/65/65cc8171d054e2c9bbc5bc981255711d.php(86): Twig\Extension\CoreExtension::include()
    #39 /var/www/html/vendor/twig/twig/src/Template.php(442): __TwigTemplate_27fe0085b99bd0ca7bdd8e9df8e70143->block_content()
    #40 /var/www/html/storage/runtime/compiled_templates/1e/1e1ebd5ef3630cd5d1fa8a31d3953895.php(79): Twig\Template->yieldBlock()
    #41 /var/www/html/vendor/twig/twig/src/Template.php(442): __TwigTemplate_99c24268df215e58f78575da5c5c3aae->block_contentsRowTwo()
    #42 /var/www/html/storage/runtime/compiled_templates/7f/7fb64441b2adb8e0b26801a9dec6347a.php(207): Twig\Template->yieldBlock()
    #43 /var/www/html/vendor/twig/twig/src/Template.php(442): __TwigTemplate_a2f6628fc34f262304173f35120d981c->block_contents()
    #44 /var/www/html/storage/runtime/compiled_templates/7f/7fb64441b2adb8e0b26801a9dec6347a.php(176): Twig\Template->yieldBlock()
    #45 /var/www/html/vendor/twig/twig/src/Template.php(442): __TwigTemplate_a2f6628fc34f262304173f35120d981c->block_contentWrapper()
    #46 /var/www/html/storage/runtime/compiled_templates/7f/7fb64441b2adb8e0b26801a9dec6347a.php(107): Twig\Template->yieldBlock()
    #47 /var/www/html/vendor/twig/twig/src/Template.php(398): __TwigTemplate_a2f6628fc34f262304173f35120d981c->doDisplay()
    #48 /var/www/html/storage/runtime/compiled_templates/1e/1e1ebd5ef3630cd5d1fa8a31d3953895.php(61): Twig\Template->yield()
    #49 /var/www/html/vendor/twig/twig/src/Template.php(398): __TwigTemplate_99c24268df215e58f78575da5c5c3aae->doDisplay()
    #50 /var/www/html/storage/runtime/compiled_templates/65/65cc8171d054e2c9bbc5bc981255711d.php(56): Twig\Template->yield()
    #51 /var/www/html/vendor/twig/twig/src/Template.php(398): __TwigTemplate_27fe0085b99bd0ca7bdd8e9df8e70143->doDisplay()
    #52 /var/www/html/vendor/twig/twig/src/Template.php(354): Twig\Template->yield()
    #53 /var/www/html/vendor/twig/twig/src/Template.php(369): Twig\Template->display()
    #54 /var/www/html/vendor/twig/twig/src/TemplateWrapper.php(38): Twig\Template->render()
    #55 /var/www/html/vendor/twig/twig/src/Environment.php(306): Twig\TemplateWrapper->render()
    #56 /var/www/html/vendor/craftcms/cms/src/web/View.php(501): Twig\Environment->render()
    #57 /var/www/html/vendor/craftcms/cms/src/helpers/ElementHelper.php(957): craft\web\View->renderTemplate()
    #58 /var/www/html/vendor/craftcms/cms/src/base/Element.php(6346): craft\helpers\ElementHelper::renderElements()
    #59 /var/www/html/modules/sitemodule/src/helpers/TemplateHelper.php(70): craft\base\Element->render()
    #60 /var/www/html/storage/runtime/compiled_templates/79/798fb9f74bb07ec34ecfb53e2136fd2a.php(47): modules\sitemodule\helpers\TemplateHelper::viewForEntry()
    #61 /var/www/html/vendor/twig/twig/src/Template.php(398): __TwigTemplate_9202eb81ac37deef0fa8aefe9ab636f2->doDisplay()
    #62 /var/www/html/vendor/twig/twig/src/Template.php(354): Twig\Template->yield()
    #63 /var/www/html/vendor/twig/twig/src/Template.php(369): Twig\Template->display()
    #64 /var/www/html/vendor/twig/twig/src/TemplateWrapper.php(38): Twig\Template->render()
    #65 /var/www/html/vendor/twig/twig/src/Environment.php(306): Twig\TemplateWrapper->render()
    #66 /var/www/html/vendor/craftcms/cms/src/web/View.php(501): Twig\Environment->render()
    #67 /var/www/html/vendor/craftcms/cms/src/web/View.php(554): craft\web\View->renderTemplate()
    #68 /var/www/html/vendor/craftcms/cms/src/web/TemplateResponseFormatter.php(57): craft\web\View->renderPageTemplate()
    #69 /var/www/html/vendor/yiisoft/yii2/web/Response.php(1109): craft\web\TemplateResponseFormatter->format()
    #70 /var/www/html/vendor/craftcms/cms/src/web/Response.php(339): yii\web\Response->prepare()
    #71 /var/www/html/vendor/yiisoft/yii2/web/Response.php(340): craft\web\Response->prepare()
    #72 /var/www/html/vendor/yiisoft/yii2/base/Application.php(390): yii\web\Response->send()
    #73 /var/www/html/web/index.php(12): yii\base\Application->run()
    #74 {main}

Disabling template comments resolves the issue, so I think that is the problem and not the closure plugin but I'm not certain

Versions

khalwat commented 2 weeks ago

I just updated to Craft 5.4.0.1, and using Template Comments 5.0.1, I can't reproduce the issue.

So I'm guessing there might be something more involved here, does it do this for every template on your project?

khalwat commented 2 weeks ago

My bad -- I had devMode off in local dev whilst testing another issue, and obviously Template Comments doesn't even load in that case.

I am indeed able to reproduce the issue.

khalwat commented 2 weeks ago

Fixed & released as 5.0.2 -> https://github.com/nystudio107/craft-templatecomments/releases/tag/5.0.2