Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.Sign up
GitHub is where the world builds software
Millions of developers and companies build, ship, and maintain their software on GitHub — the largest and most advanced development platform in the world.
text/template, html/template: nil argument to function yields wrong number of args error #18716
What version of Go are you using (
I updated the description since this is not specific to maps, per se. Passing nil in any way to template-evaluated function causes it to exit early rather than type-checking the argument and giving the error you expect. Consider the following example: https://play.golang.org/p/PkAsQyklDW.
It seems like it might be a good idea to try to allow
This is unchanged since 1.4 and probably the beginning, so no urgency but it is annoying. Not a regression, in other words.
Looks like a bug to me, might be hard to fix because nil is poorly handled by reflect and the template code doesn't do much to improve the situation.
CL 95215 changed text/template so that untyped nil arguments were no longer ignored, but were instead passed to functions as expected. This had an unexpected effect on html/template, where all data is implicitly passed to functions: originally untyped nil arguments were not passed and were thus effectively ignored, but after CL 95215 they were passed and were printed, typically as an escaped version of "<nil>". This CL restores some of the behavior of html/template by ignoring untyped nil arguments passed implicitly to escaper functions. While eliminating one change to html/template relative to earlier releases, this unfortunately introduces a different one: originally values of interface type with the value nil were printed as an escaped version of "<nil>". With this CL they are ignored as though they were untyped nil values. My judgement is that this is a less common case. We'll see. This CL adds some tests of typed and untyped nil values to html/template and text/template to capture the current behavior. Updates #18716 Fixes #25875 Change-Id: I5912983ca32b31ece29e929e72d503b54d7b0cac Reviewed-on: https://go-review.googlesource.com/121815 Run-TryBot: Ian Lance Taylor <firstname.lastname@example.org> Reviewed-by: Daniel Martí <email@example.com> Reviewed-by: Russ Cox <firstname.lastname@example.org> TryBot-Result: Gobot Gobot <email@example.com>