Commit 2ee420fa authored by Russ Cox's avatar Russ Cox

... changes

R=golang-dev, gri
CC=golang-dev
https://golang.org/cl/2273042
parent 75dd8fdb
...@@ -67,7 +67,7 @@ func run(stdin []byte, argv []string) (stdout, stderr []byte, ok bool) { ...@@ -67,7 +67,7 @@ func run(stdin []byte, argv []string) (stdout, stderr []byte, ok bool) {
// Die with an error message. // Die with an error message.
func fatal(msg string, args ...interface{}) { func fatal(msg string, args ...interface{}) {
fmt.Fprintf(os.Stderr, msg+"\n", args) fmt.Fprintf(os.Stderr, msg+"\n", args...)
os.Exit(2) os.Exit(2)
} }
...@@ -79,7 +79,7 @@ func error(pos token.Position, msg string, args ...interface{}) { ...@@ -79,7 +79,7 @@ func error(pos token.Position, msg string, args ...interface{}) {
if pos.IsValid() { if pos.IsValid() {
fmt.Fprintf(os.Stderr, "%s: ", pos) fmt.Fprintf(os.Stderr, "%s: ", pos)
} }
fmt.Fprintf(os.Stderr, msg, args) fmt.Fprintf(os.Stderr, msg, args...)
fmt.Fprintf(os.Stderr, "\n") fmt.Fprintf(os.Stderr, "\n")
} }
......
...@@ -3052,7 +3052,7 @@ func create(s string, m uint32) *bufio.Writer { ...@@ -3052,7 +3052,7 @@ func create(s string, m uint32) *bufio.Writer {
// //
func error(s string, v ...interface{}) { func error(s string, v ...interface{}) {
nerrors++ nerrors++
fmt.Fprintf(stderr, s, v) fmt.Fprintf(stderr, s, v...)
fmt.Fprintf(stderr, ": %v:%v\n", infile, lineno) fmt.Fprintf(stderr, ": %v:%v\n", infile, lineno)
if fatfl != 0 { if fatfl != 0 {
summary() summary()
......
...@@ -34,7 +34,7 @@ var bigtest = pairs[len(pairs)-1] ...@@ -34,7 +34,7 @@ var bigtest = pairs[len(pairs)-1]
func testEqual(t *testing.T, msg string, args ...interface{}) bool { func testEqual(t *testing.T, msg string, args ...interface{}) bool {
if args[len(args)-2] != args[len(args)-1] { if args[len(args)-2] != args[len(args)-1] {
t.Errorf(msg, args) t.Errorf(msg, args...)
return false return false
} }
return true return true
......
...@@ -48,7 +48,7 @@ var bigtest = testpair{ ...@@ -48,7 +48,7 @@ var bigtest = testpair{
func testEqual(t *testing.T, msg string, args ...interface{}) bool { func testEqual(t *testing.T, msg string, args ...interface{}) bool {
if args[len(args)-2] != args[len(args)-1] { if args[len(args)-2] != args[len(args)-1] {
t.Errorf(msg, args) t.Errorf(msg, args...)
return false return false
} }
return true return true
......
...@@ -17,7 +17,7 @@ type testpair struct { ...@@ -17,7 +17,7 @@ type testpair struct {
func testEqual(t *testing.T, msg string, args ...interface{}) bool { func testEqual(t *testing.T, msg string, args ...interface{}) bool {
if args[len(args)-2] != args[len(args)-1] { if args[len(args)-2] != args[len(args)-1] {
t.Errorf(msg, args) t.Errorf(msg, args...)
return false return false
} }
return true return true
......
...@@ -697,7 +697,7 @@ func (f Format) Eval(env Environment, args ...interface{}) ([]byte, os.Error) { ...@@ -697,7 +697,7 @@ func (f Format) Eval(env Environment, args ...interface{}) ([]byte, os.Error) {
// written and an os.Error, if any. // written and an os.Error, if any.
// //
func (f Format) Fprint(w io.Writer, env Environment, args ...interface{}) (int, os.Error) { func (f Format) Fprint(w io.Writer, env Environment, args ...interface{}) (int, os.Error) {
data, err := f.Eval(env, args) data, err := f.Eval(env, args...)
if err != nil { if err != nil {
// TODO should we print partial result in case of error? // TODO should we print partial result in case of error?
return 0, err return 0, err
...@@ -711,7 +711,7 @@ func (f Format) Fprint(w io.Writer, env Environment, args ...interface{}) (int, ...@@ -711,7 +711,7 @@ func (f Format) Fprint(w io.Writer, env Environment, args ...interface{}) (int,
// number of bytes written and an os.Error, if any. // number of bytes written and an os.Error, if any.
// //
func (f Format) Print(args ...interface{}) (int, os.Error) { func (f Format) Print(args ...interface{}) (int, os.Error) {
return f.Fprint(os.Stdout, nil, args) return f.Fprint(os.Stdout, nil, args...)
} }
...@@ -722,7 +722,7 @@ func (f Format) Print(args ...interface{}) (int, os.Error) { ...@@ -722,7 +722,7 @@ func (f Format) Print(args ...interface{}) (int, os.Error) {
// //
func (f Format) Sprint(args ...interface{}) string { func (f Format) Sprint(args ...interface{}) string {
var buf bytes.Buffer var buf bytes.Buffer
_, err := f.Fprint(&buf, nil, args) _, err := f.Fprint(&buf, nil, args...)
if err != nil { if err != nil {
var i interface{} = args var i interface{} = args
fmt.Fprintf(&buf, "--- Sprint(%s) failed: %v", fmt.Sprint(i), err) fmt.Fprintf(&buf, "--- Sprint(%s) failed: %v", fmt.Sprint(i), err)
......
...@@ -24,7 +24,7 @@ func verify(t *testing.T, f Format, expected string, args ...interface{}) { ...@@ -24,7 +24,7 @@ func verify(t *testing.T, f Format, expected string, args ...interface{}) {
if f == nil { if f == nil {
return // allow other tests to run return // allow other tests to run
} }
result := f.Sprint(args) result := f.Sprint(args...)
if result != expected { if result != expected {
t.Errorf( t.Errorf(
"result : `%s`\nexpected: `%s`\n\n", "result : `%s`\nexpected: `%s`\n\n",
...@@ -97,7 +97,7 @@ func check(t *testing.T, form, expected string, args ...interface{}) { ...@@ -97,7 +97,7 @@ func check(t *testing.T, form, expected string, args ...interface{}) {
if f == nil { if f == nil {
return // allow other tests to run return // allow other tests to run
} }
result := f.Sprint(args) result := f.Sprint(args...)
if result != expected { if result != expected {
t.Errorf( t.Errorf(
"format : %s\nresult : `%s`\nexpected: `%s`\n\n", "format : %s\nresult : `%s`\nexpected: `%s`\n\n",
......
...@@ -28,7 +28,7 @@ type compiler struct { ...@@ -28,7 +28,7 @@ type compiler struct {
} }
func (a *compiler) diagAt(pos positioned, format string, args ...interface{}) { func (a *compiler) diagAt(pos positioned, format string, args ...interface{}) {
a.errors.Error(pos.Pos(), fmt.Sprintf(format, args)) a.errors.Error(pos.Pos(), fmt.Sprintf(format, args...))
a.numErrors++ a.numErrors++
} }
......
...@@ -65,7 +65,7 @@ func (a *exprInfo) newExpr(t Type, desc string) *expr { ...@@ -65,7 +65,7 @@ func (a *exprInfo) newExpr(t Type, desc string) *expr {
} }
func (a *exprInfo) diag(format string, args ...interface{}) { func (a *exprInfo) diag(format string, args ...interface{}) {
a.diagAt(&a.pos, format, args) a.diagAt(&a.pos, format, args...)
} }
func (a *exprInfo) diagOpType(op token.Token, vt Type) { func (a *exprInfo) diagOpType(op token.Token, vt Type) {
......
...@@ -28,7 +28,7 @@ type stmtCompiler struct { ...@@ -28,7 +28,7 @@ type stmtCompiler struct {
} }
func (a *stmtCompiler) diag(format string, args ...interface{}) { func (a *stmtCompiler) diag(format string, args ...interface{}) {
a.diagAt(&a.pos, format, args) a.diagAt(&a.pos, format, args...)
} }
/* /*
......
...@@ -146,7 +146,7 @@ func Fprintf(w io.Writer, format string, a ...interface{}) (n int, error os.Erro ...@@ -146,7 +146,7 @@ func Fprintf(w io.Writer, format string, a ...interface{}) (n int, error os.Erro
// Printf formats according to a format specifier and writes to standard output. // Printf formats according to a format specifier and writes to standard output.
// It returns the number of bytes written and any write error encountered. // It returns the number of bytes written and any write error encountered.
func Printf(format string, a ...interface{}) (n int, errno os.Error) { func Printf(format string, a ...interface{}) (n int, errno os.Error) {
n, errno = Fprintf(os.Stdout, format, a) n, errno = Fprintf(os.Stdout, format, a...)
return n, errno return n, errno
} }
...@@ -176,7 +176,7 @@ func Fprint(w io.Writer, a ...interface{}) (n int, error os.Error) { ...@@ -176,7 +176,7 @@ func Fprint(w io.Writer, a ...interface{}) (n int, error os.Error) {
// Spaces are added between operands when neither is a string. // Spaces are added between operands when neither is a string.
// It returns the number of bytes written and any write error encountered. // It returns the number of bytes written and any write error encountered.
func Print(a ...interface{}) (n int, errno os.Error) { func Print(a ...interface{}) (n int, errno os.Error) {
n, errno = Fprint(os.Stdout, a) n, errno = Fprint(os.Stdout, a...)
return n, errno return n, errno
} }
...@@ -209,7 +209,7 @@ func Fprintln(w io.Writer, a ...interface{}) (n int, error os.Error) { ...@@ -209,7 +209,7 @@ func Fprintln(w io.Writer, a ...interface{}) (n int, error os.Error) {
// Spaces are always added between operands and a newline is appended. // Spaces are always added between operands and a newline is appended.
// It returns the number of bytes written and any write error encountered. // It returns the number of bytes written and any write error encountered.
func Println(a ...interface{}) (n int, errno os.Error) { func Println(a ...interface{}) (n int, errno os.Error) {
n, errno = Fprintln(os.Stdout, a) n, errno = Fprintln(os.Stdout, a...)
return n, errno return n, errno
} }
......
...@@ -60,20 +60,20 @@ type Scanner interface { ...@@ -60,20 +60,20 @@ type Scanner interface {
// as space. It returns the number of items successfully scanned. // as space. It returns the number of items successfully scanned.
// If that is less than the number of arguments, err will report why. // If that is less than the number of arguments, err will report why.
func Scan(a ...interface{}) (n int, err os.Error) { func Scan(a ...interface{}) (n int, err os.Error) {
return Fscan(os.Stdin, a) return Fscan(os.Stdin, a...)
} }
// Scanln is similar to Scan, but stops scanning at a newline and // Scanln is similar to Scan, but stops scanning at a newline and
// after the final item there must be a newline or EOF. // after the final item there must be a newline or EOF.
func Scanln(a ...interface{}) (n int, err os.Error) { func Scanln(a ...interface{}) (n int, err os.Error) {
return Fscanln(os.Stdin, a) return Fscanln(os.Stdin, a...)
} }
// Scanf scans text read from standard input, storing successive // Scanf scans text read from standard input, storing successive
// space-separated values into successive arguments as determined by // space-separated values into successive arguments as determined by
// the format. It returns the number of items successfully scanned. // the format. It returns the number of items successfully scanned.
func Scanf(format string, a ...interface{}) (n int, err os.Error) { func Scanf(format string, a ...interface{}) (n int, err os.Error) {
return Fscanf(os.Stdin, format, a) return Fscanf(os.Stdin, format, a...)
} }
// Sscan scans the argument string, storing successive space-separated // Sscan scans the argument string, storing successive space-separated
...@@ -81,20 +81,20 @@ func Scanf(format string, a ...interface{}) (n int, err os.Error) { ...@@ -81,20 +81,20 @@ func Scanf(format string, a ...interface{}) (n int, err os.Error) {
// returns the number of items successfully scanned. If that is less // returns the number of items successfully scanned. If that is less
// than the number of arguments, err will report why. // than the number of arguments, err will report why.
func Sscan(str string, a ...interface{}) (n int, err os.Error) { func Sscan(str string, a ...interface{}) (n int, err os.Error) {
return Fscan(strings.NewReader(str), a) return Fscan(strings.NewReader(str), a...)
} }
// Sscanln is similar to Sscan, but stops scanning at a newline and // Sscanln is similar to Sscan, but stops scanning at a newline and
// after the final item there must be a newline or EOF. // after the final item there must be a newline or EOF.
func Sscanln(str string, a ...interface{}) (n int, err os.Error) { func Sscanln(str string, a ...interface{}) (n int, err os.Error) {
return Fscanln(strings.NewReader(str), a) return Fscanln(strings.NewReader(str), a...)
} }
// Sscanf scans the argument string, storing successive space-separated // Sscanf scans the argument string, storing successive space-separated
// values into successive arguments as determined by the format. It // values into successive arguments as determined by the format. It
// returns the number of items successfully parsed. // returns the number of items successfully parsed.
func Sscanf(str string, format string, a ...interface{}) (n int, err os.Error) { func Sscanf(str string, format string, a ...interface{}) (n int, err os.Error) {
return Fscanf(strings.NewReader(str), format, a) return Fscanf(strings.NewReader(str), format, a...)
} }
// Fscan scans text read from r, storing successive space-separated // Fscan scans text read from r, storing successive space-separated
......
...@@ -124,7 +124,7 @@ type localError struct { ...@@ -124,7 +124,7 @@ type localError struct {
// printf is a convenience wrapper that takes care of print errors. // printf is a convenience wrapper that takes care of print errors.
func (p *printer) printf(format string, args ...interface{}) { func (p *printer) printf(format string, args ...interface{}) {
n, err := fmt.Fprintf(p, format, args) n, err := fmt.Fprintf(p, format, args...)
p.written += n p.written += n
if err != nil { if err != nil {
panic(localError{err}) panic(localError{err})
......
...@@ -90,7 +90,7 @@ func (p *parser) printTrace(a ...interface{}) { ...@@ -90,7 +90,7 @@ func (p *parser) printTrace(a ...interface{}) {
fmt.Print(dots) fmt.Print(dots)
} }
fmt.Print(dots[0:i]) fmt.Print(dots[0:i])
fmt.Println(a) fmt.Println(a...)
} }
......
...@@ -105,7 +105,7 @@ func (p *printer) init(output io.Writer, cfg *Config) { ...@@ -105,7 +105,7 @@ func (p *printer) init(output io.Writer, cfg *Config) {
func (p *printer) internalError(msg ...interface{}) { func (p *printer) internalError(msg ...interface{}) {
if debug { if debug {
fmt.Print(p.pos.String() + ": ") fmt.Print(p.pos.String() + ": ")
fmt.Println(msg) fmt.Println(msg...)
panic("go/printer") panic("go/printer")
} }
} }
......
...@@ -70,7 +70,7 @@ type typechecker struct { ...@@ -70,7 +70,7 @@ type typechecker struct {
func (tc *typechecker) Errorf(pos token.Position, format string, args ...interface{}) { func (tc *typechecker) Errorf(pos token.Position, format string, args ...interface{}) {
tc.Error(pos, fmt.Sprintf(format, args)) tc.Error(pos, fmt.Sprintf(format, args...))
} }
......
...@@ -150,32 +150,32 @@ func (l *Logger) Output(calldepth int, s string) os.Error { ...@@ -150,32 +150,32 @@ func (l *Logger) Output(calldepth int, s string) os.Error {
// Logf is analogous to Printf() for a Logger. // Logf is analogous to Printf() for a Logger.
func (l *Logger) Logf(format string, v ...interface{}) { func (l *Logger) Logf(format string, v ...interface{}) {
l.Output(2, fmt.Sprintf(format, v)) l.Output(2, fmt.Sprintf(format, v...))
} }
// Log is analogous to Print() for a Logger. // Log is analogous to Print() for a Logger.
func (l *Logger) Log(v ...interface{}) { l.Output(2, fmt.Sprintln(v)) } func (l *Logger) Log(v ...interface{}) { l.Output(2, fmt.Sprintln(v...)) }
// Stdout is a helper function for easy logging to stdout. It is analogous to Print(). // Stdout is a helper function for easy logging to stdout. It is analogous to Print().
func Stdout(v ...interface{}) { stdout.Output(2, fmt.Sprint(v)) } func Stdout(v ...interface{}) { stdout.Output(2, fmt.Sprint(v...)) }
// Stderr is a helper function for easy logging to stderr. It is analogous to Fprint(os.Stderr). // Stderr is a helper function for easy logging to stderr. It is analogous to Fprint(os.Stderr).
func Stderr(v ...interface{}) { stderr.Output(2, fmt.Sprintln(v)) } func Stderr(v ...interface{}) { stderr.Output(2, fmt.Sprintln(v...)) }
// Stdoutf is a helper functions for easy formatted logging to stdout. It is analogous to Printf(). // Stdoutf is a helper functions for easy formatted logging to stdout. It is analogous to Printf().
func Stdoutf(format string, v ...interface{}) { stdout.Output(2, fmt.Sprintf(format, v)) } func Stdoutf(format string, v ...interface{}) { stdout.Output(2, fmt.Sprintf(format, v...)) }
// Stderrf is a helper function for easy formatted logging to stderr. It is analogous to Fprintf(os.Stderr). // Stderrf is a helper function for easy formatted logging to stderr. It is analogous to Fprintf(os.Stderr).
func Stderrf(format string, v ...interface{}) { stderr.Output(2, fmt.Sprintf(format, v)) } func Stderrf(format string, v ...interface{}) { stderr.Output(2, fmt.Sprintf(format, v...)) }
// Exit is equivalent to Stderr() followed by a call to os.Exit(1). // Exit is equivalent to Stderr() followed by a call to os.Exit(1).
func Exit(v ...interface{}) { exit.Output(2, fmt.Sprintln(v)) } func Exit(v ...interface{}) { exit.Output(2, fmt.Sprintln(v...)) }
// Exitf is equivalent to Stderrf() followed by a call to os.Exit(1). // Exitf is equivalent to Stderrf() followed by a call to os.Exit(1).
func Exitf(format string, v ...interface{}) { exit.Output(2, fmt.Sprintf(format, v)) } func Exitf(format string, v ...interface{}) { exit.Output(2, fmt.Sprintf(format, v...)) }
// Crash is equivalent to Stderr() followed by a call to panic(). // Crash is equivalent to Stderr() followed by a call to panic().
func Crash(v ...interface{}) { crash.Output(2, fmt.Sprintln(v)) } func Crash(v ...interface{}) { crash.Output(2, fmt.Sprintln(v...)) }
// Crashf is equivalent to Stderrf() followed by a call to panic(). // Crashf is equivalent to Stderrf() followed by a call to panic().
func Crashf(format string, v ...interface{}) { crash.Output(2, fmt.Sprintf(format, v)) } func Crashf(format string, v ...interface{}) { crash.Output(2, fmt.Sprintf(format, v...)) }
...@@ -113,7 +113,7 @@ func Dial(network, addr string) (*Conn, os.Error) { ...@@ -113,7 +113,7 @@ func Dial(network, addr string) (*Conn, os.Error) {
func (c *Conn) Cmd(format string, args ...interface{}) (id uint, err os.Error) { func (c *Conn) Cmd(format string, args ...interface{}) (id uint, err os.Error) {
id = c.Next() id = c.Next()
c.StartRequest(id) c.StartRequest(id)
err = c.PrintfLine(format, args) err = c.PrintfLine(format, args...)
c.EndRequest(id) c.EndRequest(id)
if err != nil { if err != nil {
return 0, err return 0, err
......
...@@ -29,7 +29,7 @@ var dotcrnl = []byte{'.', '\r', '\n'} ...@@ -29,7 +29,7 @@ var dotcrnl = []byte{'.', '\r', '\n'}
// PrintfLine writes the formatted output followed by \r\n. // PrintfLine writes the formatted output followed by \r\n.
func (w *Writer) PrintfLine(format string, args ...interface{}) os.Error { func (w *Writer) PrintfLine(format string, args ...interface{}) os.Error {
w.closeDot() w.closeDot()
fmt.Fprintf(w.W, format, args) fmt.Fprintf(w.W, format, args...)
w.W.Write(crnl) w.W.Write(crnl)
return w.W.Flush() return w.W.Flush()
} }
......
...@@ -34,7 +34,7 @@ import ( ...@@ -34,7 +34,7 @@ import (
// expLog is a logging convenience function. The first argument must be a string. // expLog is a logging convenience function. The first argument must be a string.
func expLog(args ...interface{}) { func expLog(args ...interface{}) {
args[0] = "netchan export: " + args[0].(string) args[0] = "netchan export: " + args[0].(string)
log.Stderr(args) log.Stderr(args...)
} }
// An Exporter allows a set of channels to be published on a single // An Exporter allows a set of channels to be published on a single
......
...@@ -17,7 +17,7 @@ import ( ...@@ -17,7 +17,7 @@ import (
// impLog is a logging convenience function. The first argument must be a string. // impLog is a logging convenience function. The first argument must be a string.
func impLog(args ...interface{}) { func impLog(args ...interface{}) {
args[0] = "netchan import: " + args[0].(string) args[0] = "netchan import: " + args[0].(string)
log.Stderr(args) log.Stderr(args...)
} }
// An Importer allows a set of channels to be imported from a single // An Importer allows a set of channels to be imported from a single
......
...@@ -270,7 +270,7 @@ func (c *Conn) cmd(expectCode uint, format string, args ...interface{}) (code ui ...@@ -270,7 +270,7 @@ func (c *Conn) cmd(expectCode uint, format string, args ...interface{}) (code ui
} }
c.br = nil c.br = nil
} }
if _, err := fmt.Fprintf(c.conn, format+"\r\n", args); err != nil { if _, err := fmt.Fprintf(c.conn, format+"\r\n", args...); err != nil {
return 0, "", err return 0, "", err
} }
line, err = c.r.ReadString('\n') line, err = c.r.ReadString('\n')
......
...@@ -118,7 +118,7 @@ var jointests = []JoinTest{ ...@@ -118,7 +118,7 @@ var jointests = []JoinTest{
// join takes a []string and passes it to Join. // join takes a []string and passes it to Join.
func join(elem []string, args ...string) string { func join(elem []string, args ...string) string {
args = elem args = elem
return Join(args) return Join(args...)
} }
func TestJoin(t *testing.T) { func TestJoin(t *testing.T) {
......
...@@ -185,13 +185,13 @@ func New(fmap FormatterMap) *Template { ...@@ -185,13 +185,13 @@ func New(fmap FormatterMap) *Template {
// Report error and stop executing. The line number must be provided explicitly. // Report error and stop executing. The line number must be provided explicitly.
func (t *Template) execError(st *state, line int, err string, args ...interface{}) { func (t *Template) execError(st *state, line int, err string, args ...interface{}) {
panic(&Error{line, fmt.Sprintf(err, args)}) panic(&Error{line, fmt.Sprintf(err, args...)})
} }
// Report error, panic to terminate parsing. // Report error, panic to terminate parsing.
// The line number comes from the template state. // The line number comes from the template state.
func (t *Template) parseError(err string, args ...interface{}) { func (t *Template) parseError(err string, args ...interface{}) {
panic(&Error{t.linenum, fmt.Sprintf(err, args)}) panic(&Error{t.linenum, fmt.Sprintf(err, args...)})
} }
// -- Lexical analysis // -- Lexical analysis
......
...@@ -89,35 +89,35 @@ func (t *T) FailNow() { ...@@ -89,35 +89,35 @@ func (t *T) FailNow() {
// Log formats its arguments using default formatting, analogous to Print(), // Log formats its arguments using default formatting, analogous to Print(),
// and records the text in the error log. // and records the text in the error log.
func (t *T) Log(args ...interface{}) { t.errors += "\t" + tabify(fmt.Sprintln(args)) } func (t *T) Log(args ...interface{}) { t.errors += "\t" + tabify(fmt.Sprintln(args...)) }
// Log formats its arguments according to the format, analogous to Printf(), // Log formats its arguments according to the format, analogous to Printf(),
// and records the text in the error log. // and records the text in the error log.
func (t *T) Logf(format string, args ...interface{}) { func (t *T) Logf(format string, args ...interface{}) {
t.errors += "\t" + tabify(fmt.Sprintf(format, args)) t.errors += "\t" + tabify(fmt.Sprintf(format, args...))
} }
// Error is equivalent to Log() followed by Fail(). // Error is equivalent to Log() followed by Fail().
func (t *T) Error(args ...interface{}) { func (t *T) Error(args ...interface{}) {
t.Log(args) t.Log(args...)
t.Fail() t.Fail()
} }
// Errorf is equivalent to Logf() followed by Fail(). // Errorf is equivalent to Logf() followed by Fail().
func (t *T) Errorf(format string, args ...interface{}) { func (t *T) Errorf(format string, args ...interface{}) {
t.Logf(format, args) t.Logf(format, args...)
t.Fail() t.Fail()
} }
// Fatal is equivalent to Log() followed by FailNow(). // Fatal is equivalent to Log() followed by FailNow().
func (t *T) Fatal(args ...interface{}) { func (t *T) Fatal(args ...interface{}) {
t.Log(args) t.Log(args...)
t.FailNow() t.FailNow()
} }
// Fatalf is equivalent to Logf() followed by FailNow(). // Fatalf is equivalent to Logf() followed by FailNow().
func (t *T) Fatalf(format string, args ...interface{}) { func (t *T) Fatalf(format string, args ...interface{}) {
t.Logf(format, args) t.Logf(format, args...)
t.FailNow() t.FailNow()
} }
......
...@@ -100,7 +100,7 @@ func eliminate_digit(d int64) { ...@@ -100,7 +100,7 @@ func eliminate_digit(d int64) {
func printf(s string, arg ...interface{}) { func printf(s string, arg ...interface{}) {
if !*silent { if !*silent {
fmt.Printf(s, arg) fmt.Printf(s, arg...)
} }
} }
......
...@@ -14,13 +14,13 @@ func sum(args ...int) int { ...@@ -14,13 +14,13 @@ func sum(args ...int) int {
return s return s
} }
func sumC(args ...int) int { return func() int { return sum(args) }() } func sumC(args ...int) int { return func() int { return sum(args...) }() }
var sumD = func(args ...int) int { return sum(args) } var sumD = func(args ...int) int { return sum(args...) }
var sumE = func() func(...int) int { return func(args ...int) int { return sum(args) } }() var sumE = func() func(...int) int { return func(args ...int) int { return sum(args...) } }()
var sumF = func(args ...int) func() int { return func() int { return sum(args) } } var sumF = func(args ...int) func() int { return func() int { return sum(args...) } }
func sumA(args []int) int { func sumA(args []int) int {
s := 0 s := 0
...@@ -30,7 +30,7 @@ func sumA(args []int) int { ...@@ -30,7 +30,7 @@ func sumA(args []int) int {
return s return s
} }
func sum2(args ...int) int { return 2 * sum(args) } func sum2(args ...int) int { return 2 * sum(args...) }
func sum3(args ...int) int { return 3 * sumA(args) } func sum3(args ...int) int { return 3 * sumA(args) }
...@@ -46,9 +46,9 @@ type T []T ...@@ -46,9 +46,9 @@ type T []T
func ln(args ...T) int { return len(args) } func ln(args ...T) int { return len(args) }
func ln2(args ...T) int { return 2 * ln(args) } func ln2(args ...T) int { return 2 * ln(args...) }
func (*T) Sum(args ...int) int { return sum(args) } func (*T) Sum(args ...int) int { return sum(args...) }
type U struct { type U struct {
*T *T
......
...@@ -26,7 +26,7 @@ func test1() { ...@@ -26,7 +26,7 @@ func test1() {
} }
} }
func addDotDotDot(v ...interface{}) { result += fmt.Sprint(v) } func addDotDotDot(v ...interface{}) { result += fmt.Sprint(v...) }
func test2helper() { func test2helper() {
for i := 0; i < 10; i++ { for i := 0; i < 10; i++ {
......
...@@ -7,9 +7,9 @@ ...@@ -7,9 +7,9 @@
package main package main
func f(args ...int) { func f(args ...int) {
g(args) // ERROR "[.][.][.] mismatch" g(args) // ERROR "[.][.][.]"
} }
func g(args ...interface{}) { func g(args ...interface{}) {
f(args) // ERROR "[.][.][.] mismatch" f(args) // ERROR "[.][.][.]"
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment