exp/template: silence test noise (but add a flag to put it back)
Also delete a TODO and clean up a little evaluation code.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4643071
diff --git a/src/pkg/exp/template/exec.go b/src/pkg/exp/template/exec.go
index b8cfb54..6f171da 100644
--- a/src/pkg/exp/template/exec.go
+++ b/src/pkg/exp/template/exec.go
@@ -200,8 +200,7 @@
 		return s.evalFieldOrCall(data, n.ident, cmd.args, final)
 	}
 	if len(cmd.args) > 1 || final.IsValid() {
-		// TODO: functions
-		s.errorf("can't give argument to non-method %s", cmd.args[0])
+		s.errorf("can't give argument to non-function %s", cmd.args[0])
 	}
 	switch word := cmd.args[0].(type) {
 	case *dotNode:
@@ -224,9 +223,8 @@
 		}
 	case *stringNode:
 		return reflect.ValueOf(word.text)
-	default:
-		s.errorf("can't handle command %q", firstWord)
 	}
+	s.errorf("can't handle command %q", firstWord)
 	panic("not reached")
 }
 
diff --git a/src/pkg/exp/template/parse_test.go b/src/pkg/exp/template/parse_test.go
index 70c9f5a..34b0da6 100644
--- a/src/pkg/exp/template/parse_test.go
+++ b/src/pkg/exp/template/parse_test.go
@@ -5,11 +5,12 @@
 package template
 
 import (
+	"flag"
 	"fmt"
 	"testing"
 )
 
-const dumpErrors = true
+var debug = flag.Bool("debug", false, "show the errors produced by the tests")
 
 type numberTest struct {
 	text      string
@@ -193,7 +194,7 @@
 			continue
 		case err != nil && !test.ok:
 			// expected error, got one
-			if dumpErrors {
+			if *debug {
 				fmt.Printf("%s: %s\n\t%s\n", test.name, test.input, err)
 			}
 			continue
diff --git a/src/pkg/exp/template/set_test.go b/src/pkg/exp/template/set_test.go
index 873d261..c0115ec 100644
--- a/src/pkg/exp/template/set_test.go
+++ b/src/pkg/exp/template/set_test.go
@@ -49,7 +49,7 @@
 			continue
 		case err != nil && !test.ok:
 			// expected error, got one
-			if dumpErrors {
+			if *debug {
 				fmt.Printf("%s: %s\n\t%s\n", test.name, test.input, err)
 			}
 			continue