case *parse.PipeNode:
                return s.validateType(s.evalPipeline(dot, arg), typ)
        case *parse.IdentifierNode:
-               return s.evalFunction(dot, arg, arg, nil, zero)
+               return s.validateType(s.evalFunction(dot, arg, arg, nil, zero), typ)
        case *parse.ChainNode:
                return s.validateType(s.evalChainNode(dot, arg, nil, zero), typ)
        }
 
        {"bug14a", "{{(nil).True}}", "", tVal, false},
        {"bug14b", "{{$x := nil}}{{$x.anything}}", "", tVal, false},
        {"bug14c", `{{$x := (1.0)}}{{$y := ("hello")}}{{$x.anything}}{{$y.true}}`, "", tVal, false},
+       // Didn't call validateType on function results. Issue 10800.
+       {"bug15", "{{valueString returnInt}}", "", tVal, false},
 }
 
 func zeroArgs() string {
        return "value is ignored"
 }
 
+// returnInt returns an int
+func returnInt() int {
+       return 7
+}
+
 func add(args ...int) int {
        sum := 0
        for _, x := range args {
                "makemap":     makemap,
                "mapOfThree":  mapOfThree,
                "oneArg":      oneArg,
+               "returnInt":   returnInt,
                "stringer":    stringer,
                "typeOf":      typeOf,
                "valueString": valueString,