• Ian Lance Taylor's avatar
    html/template: ignore untyped nil arguments to default escapers · c5cb4843
    Ian Lance Taylor authored
    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 <iant@golang.org>
    Reviewed-by: 's avatarDaniel Martí <mvdan@mvdan.cc>
    Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    c5cb4843
escape_test.go 50.3 KB