diff --git a/tpl/templates/templates_integration_test.go b/tpl/templates/templates_integration_test.go index 635d521d7..7bdcdc9f0 100644 --- a/tpl/templates/templates_integration_test.go +++ b/tpl/templates/templates_integration_test.go @@ -262,3 +262,20 @@ Line 3. b.Assert(err, qt.IsNotNil) b.Assert(err.Error(), qt.Contains, filepath.FromSlash(` "/layouts/home.html:2:11": execute of template failed`)) } + +func TestPartialReturnPanicIssue13600(t *testing.T) { + t.Parallel() + + files := ` +-- hugo.toml -- +-- layouts/home.html -- +Partial: {{ partial "p1.html" . }} +-- layouts/_partials/p1.html -- +P1. +{{ return ( delimit . ", " ) | string }} +` + + b, err := hugolib.TestE(t, files) + b.Assert(err, qt.IsNotNil) + b.Assert(err.Error(), qt.Contains, "wrong number of args for string: want 1 got 0") +} diff --git a/tpl/tplimpl/templatetransform.go b/tpl/tplimpl/templatetransform.go index cba4c6584..eca9fdad1 100644 --- a/tpl/tplimpl/templatetransform.go +++ b/tpl/tplimpl/templatetransform.go @@ -175,6 +175,9 @@ func (c *templateTransformContext) applyTransformations(n parse.Node) (bool, err } case *parse.CommandNode: + if x == nil { + return true, nil + } c.collectInner(x) keep := c.collectReturnNode(x)