]> Cypherpunks repositories - gostls13.git/commitdiff
text/template: variables do not take arguments
authorRob Pike <r@golang.org>
Tue, 13 Mar 2012 23:46:21 +0000 (10:46 +1100)
committerRob Pike <r@golang.org>
Tue, 13 Mar 2012 23:46:21 +0000 (10:46 +1100)
R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/5821044

src/pkg/text/template/exec.go
src/pkg/text/template/exec_test.go

index ad0118e4e6821a16890552dc5759325a9c4295b2..9a720cf43e3743cf8db17423c4e995f5a0f42791 100644 (file)
@@ -369,6 +369,7 @@ func (s *state) evalVariableNode(dot reflect.Value, v *parse.VariableNode, args
        // $x.Field has $x as the first ident, Field as the second. Eval the var, then the fields.
        value := s.varValue(v.Ident[0])
        if len(v.Ident) == 1 {
+               s.notAFunction(args, final)
                return value
        }
        return s.evalFieldChain(dot, value, v.Ident[1:], args, final)
index 70ab39cad20b20900413acc5de3045d492ae8364..5446027ff7ad0ae78425871a12fb81345bd57089 100644 (file)
@@ -466,6 +466,10 @@ var execTests = []execTest{
        {"bug6b", "{{vfunc .V0 .V0}}", "vfunc", tVal, true},
        {"bug6c", "{{vfunc .V1 .V0}}", "vfunc", tVal, true},
        {"bug6d", "{{vfunc .V1 .V1}}", "vfunc", tVal, true},
+       // Legal parse but illegal execution: non-function should have no arguments.
+       {"bug7a", "{{3 2}}", "", tVal, false},
+       {"bug7b", "{{$x := 1}}{{$x 2}}", "", tVal, false},
+       {"bug7c", "{{$x := 1}}{{3 | $x}}", "", tVal, false},
 }
 
 func zeroArgs() string {