mirror of
https://github.com/golang/go
synced 2024-11-21 20:14:52 -07:00
... changes
R=golang-dev, gri CC=golang-dev https://golang.org/cl/2273042
This commit is contained in:
parent
75dd8fdb34
commit
2ee420fa5e
@ -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{}) {
|
|||||||
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 {
|
|||||||
//
|
//
|
||||||
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]
|
|||||||
|
|
||||||
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{
|
|||||||
|
|
||||||
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 {
|
|||||||
|
|
||||||
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) {
|
|||||||
// 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,
|
|||||||
// 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) {
|
|||||||
//
|
//
|
||||||
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{}) {
|
|||||||
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{}) {
|
|||||||
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 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
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
|
|||||||
// 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) {
|
|||||||
// 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) {
|
|||||||
// 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 {
|
|||||||
// 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) {
|
|||||||
// 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 {
|
|||||||
|
|
||||||
// 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{}) {
|
|||||||
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) {
|
|||||||
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 {
|
|||||||
|
|
||||||
|
|
||||||
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 {
|
|||||||
|
|
||||||
// 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) {
|
|||||||
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'}
|
|||||||
// 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 (
|
|||||||
// 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 (
|
|||||||
// 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
|
|||||||
}
|
}
|
||||||
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{
|
|||||||
// 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 {
|
|||||||
|
|
||||||
// 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() {
|
|||||||
|
|
||||||
// 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) {
|
|||||||
|
|
||||||
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
test/ddd.go
14
test/ddd.go
@ -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 {
|
|||||||
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
|
|||||||
|
|
||||||
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() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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 @@
|
|||||||
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 "[.][.][.]"
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user