gc: add ... T, rework plain ...

No longer a distinct type; now a property of func types.

R=ken2
CC=golang-dev
https://golang.org/cl/197042
diff --git a/test/ddd1.go b/test/ddd1.go
new file mode 100644
index 0000000..da03a70
--- /dev/null
+++ b/test/ddd1.go
@@ -0,0 +1,28 @@
+// errchk $G -e $D/$F.go
+
+// Copyright 2010 The Go Authors.  All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+func sum(args ...int) int { return 0 }
+
+var (
+	_ = sum(1, 2, 3)
+	_ = sum()
+	_ = sum(1.0, 2.0)
+	_ = sum(1.5)      // ERROR "integer"
+	_ = sum("hello")  // ERROR "convert"
+	_ = sum([]int{1}) // ERROR "slice literal as type int"
+)
+
+type T []T
+
+func funny(args ...T) int { return 0 }
+
+var (
+	_ = funny(nil)
+	_ = funny(nil, nil)
+	_ = funny([]T{}) // ok because []T{} is a T; passes []T{[]T{}}
+)