• Bjørn Erik Pedersen's avatar
    text/template: fix truth handling of typed interface nils in if and with · 45d74aad
    Bjørn Erik Pedersen authored
    Before this commit, the two logically equivalent conditionals below would
    produce different output:
    
        {{ if not .NonEmptyInterfaceTypedNil }}OK{{ else }}{{ end }}
        {{ if .NonEmptyInterfaceTypedNil }}{{ else }}OK{{ end }}
    
    The functions `not`, `or`, and `and` all use the same `truth` function, which
    unwraps any concrete interface value before passing it to `isTrue`.
    
    `if` and `with` also use `isTrue` to establish truth, but was missing the
    interface indirect call.
    
    Fixes #30501
    
    Change-Id: I9c49eed41e737d8f162e39bef1c3b82fd5518fed
    GitHub-Last-Rev: 95fc2c82f26d24a457de4deaa7e5756718fbf07c
    GitHub-Pull-Request: golang/go#30534
    Reviewed-on: https://go-review.googlesource.com/c/go/+/164958Reviewed-by: default avatarRuss Cox <rsc@golang.org>
    Run-TryBot: Russ Cox <rsc@golang.org>
    45d74aad
exec.go 29.7 KB