• Rob Pike's avatar
    text/template: allow .Field access to parenthesized expressions · 9050550c
    Rob Pike authored
    Change the grammar so that field access is a proper operator.
    This introduces a new node, ChainNode, into the public (but
    actually internal) API of text/template/parse. For
    compatibility, we only use the new node type for the specific
    construct, which was not parseable before. Therefore this
    should be backward-compatible.
    
    Before, .X.Y was a token in the lexer; this CL breaks it out
    into .Y applied to .X. But for compatibility we mush them
    back together before delivering. One day we might remove
    that hack; it's the simple TODO in parse.go/operand.
    
    This change also provides grammatical distinction between
            f
    and
            (f)
    which might permit function values later, but not now.
    
    Fixes #3999.
    
    R=golang-dev, dsymonds, gri, rsc, mikesamuel
    CC=golang-dev
    https://golang.org/cl/6494119
    9050550c
lex_test.go 9.88 KB