aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/fmt
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2020-12-23 09:57:37 -0800
committerIan Lance Taylor <iant@golang.org>2020-12-30 15:13:24 -0800
commitcfcbb4227fb20191e04eb8d7766ae6202f526afd (patch)
treee2effea96f6f204451779f044415c2385e45042b /libgo/go/fmt
parent0696141107d61483f38482b941549959a0d7f613 (diff)
downloadgcc-cfcbb4227fb20191e04eb8d7766ae6202f526afd.zip
gcc-cfcbb4227fb20191e04eb8d7766ae6202f526afd.tar.gz
gcc-cfcbb4227fb20191e04eb8d7766ae6202f526afd.tar.bz2
libgo: update to Go1.16beta1 release
This does not yet include support for the //go:embed directive added in this release. * Makefile.am (check-runtime): Don't create check-runtime-dir. (mostlyclean-local): Don't remove check-runtime-dir. (check-go-tool, check-vet): Copy in go.mod and modules.txt. (check-cgo-test, check-carchive-test): Add go.mod file. * Makefile.in: Regenerate. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/280172
Diffstat (limited to 'libgo/go/fmt')
-rw-r--r--libgo/go/fmt/doc.go3
-rw-r--r--libgo/go/fmt/fmt_test.go8
-rw-r--r--libgo/go/fmt/print.go14
3 files changed, 11 insertions, 14 deletions
diff --git a/libgo/go/fmt/doc.go b/libgo/go/fmt/doc.go
index a711580..d05ee51 100644
--- a/libgo/go/fmt/doc.go
+++ b/libgo/go/fmt/doc.go
@@ -150,7 +150,8 @@
concrete value that it holds, and printing continues with the next rule.
2. If an operand implements the Formatter interface, it will
- be invoked. Formatter provides fine control of formatting.
+ be invoked. In this case the interpretation of verbs and flags is
+ controlled by that implementation.
3. If the %v verb is used with the # flag (%#v) and the operand
implements the GoStringer interface, that will be invoked.
diff --git a/libgo/go/fmt/fmt_test.go b/libgo/go/fmt/fmt_test.go
index 550c196..e52e5db 100644
--- a/libgo/go/fmt/fmt_test.go
+++ b/libgo/go/fmt/fmt_test.go
@@ -290,11 +290,11 @@ var fmtTests = []struct {
{"%q", '\U00000e00', `'\u0e00'`},
{"%q", '\U0010ffff', `'\U0010ffff'`},
// Runes that are not valid.
- {"%q", int32(-1), "%!q(int32=-1)"},
+ {"%q", int32(-1), `'�'`},
{"%q", 0xDC80, `'�'`},
- {"%q", rune(0x110000), "%!q(int32=1114112)"},
- {"%q", int64(0xFFFFFFFFF), "%!q(int64=68719476735)"},
- {"%q", uint64(0xFFFFFFFFF), "%!q(uint64=68719476735)"},
+ {"%q", rune(0x110000), `'�'`},
+ {"%q", int64(0xFFFFFFFFF), `'�'`},
+ {"%q", uint64(0xFFFFFFFFF), `'�'`},
// width
{"%5s", "abc", " abc"},
diff --git a/libgo/go/fmt/print.go b/libgo/go/fmt/print.go
index 5958691..8bc225f 100644
--- a/libgo/go/fmt/print.go
+++ b/libgo/go/fmt/print.go
@@ -47,11 +47,11 @@ type State interface {
Flag(c int) bool
}
-// Formatter is the interface implemented by values with a custom formatter.
-// The implementation of Format may call Sprint(f) or Fprint(f) etc.
-// to generate its output.
+// Formatter is implemented by any value that has a Format method.
+// The implementation controls how State and rune are interpreted,
+// and may call Sprint(f) or Fprint(f) etc. to generate its output.
type Formatter interface {
- Format(f State, c rune)
+ Format(f State, verb rune)
}
// Stringer is implemented by any value that has a String method,
@@ -388,11 +388,7 @@ func (p *pp) fmtInteger(v uint64, isSigned bool, verb rune) {
case 'c':
p.fmt.fmtC(v)
case 'q':
- if v <= utf8.MaxRune {
- p.fmt.fmtQc(v)
- } else {
- p.badVerb(verb)
- }
+ p.fmt.fmtQc(v)
case 'U':
p.fmt.fmtUnicode(v)
default: