summaryrefslogtreecommitdiffstats
path: root/vendor/golang.org/x/text/internal/catmsg
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/text/internal/catmsg')
-rw-r--r--vendor/golang.org/x/text/internal/catmsg/catmsg.go2
-rw-r--r--vendor/golang.org/x/text/internal/catmsg/catmsg_test.go26
-rwxr-xr-xvendor/golang.org/x/text/internal/catmsg/codec.go2
3 files changed, 26 insertions, 4 deletions
diff --git a/vendor/golang.org/x/text/internal/catmsg/catmsg.go b/vendor/golang.org/x/text/internal/catmsg/catmsg.go
index 74c039f05..f8abf3704 100644
--- a/vendor/golang.org/x/text/internal/catmsg/catmsg.go
+++ b/vendor/golang.org/x/text/internal/catmsg/catmsg.go
@@ -294,7 +294,7 @@ func (r Raw) Compile(e *Encoder) (err error) {
// d.Arg(1)
// d.Render(resultOfInvites)
// d.Render(" %[2]v to ")
-// d.Arg(1)
+// d.Arg(2)
// d.Render(resultOfTheir)
// d.Render(" party.")
// where the messages for "invites" and "their" both use a plural.Select
diff --git a/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go b/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go
index d06502bff..df913a1de 100644
--- a/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go
+++ b/vendor/golang.org/x/text/internal/catmsg/catmsg_test.go
@@ -111,6 +111,10 @@ func TestCodec(t *testing.T) {
},
tests: single("foo|BAZ", ""),
}, {
+ desc: "nested value",
+ m: nestedLang{nestedLang{empty{}}},
+ tests: single("nl|nl", ""),
+ }, {
desc: "not shadowed variable",
m: seq{
&Var{"bar", String("baz")},
@@ -207,8 +211,9 @@ func TestCodec(t *testing.T) {
dec := NewDecoder(language.Und, r, macros)
for _, tc := range testCases {
t.Run(tc.desc, func(t *testing.T) {
-
- data, err := Compile(language.Und, macros, tc.m)
+ // Use a language other than Und so that we can test
+ // passing the language to nested values.
+ data, err := Compile(language.Dutch, macros, tc.m)
if failErr(err, tc.encErr) {
t.Errorf("encoding error: got %+q; want %+q", err, tc.encErr)
}
@@ -265,6 +270,23 @@ func (incomplete) Compile(e *Encoder) (err error) {
return ErrIncomplete
}
+var msgNested = Register(
+ "golang.org/x/text/internal/catmsg.nested",
+ func(d *Decoder) bool {
+ d.Render(d.DecodeString())
+ d.ExecuteMessage()
+ return true
+ })
+
+type nestedLang struct{ Message }
+
+func (n nestedLang) Compile(e *Encoder) (err error) {
+ e.EncodeMessageType(msgNested)
+ e.EncodeString(e.Language().String())
+ e.EncodeMessage(n.Message)
+ return nil
+}
+
type errorCompileMsg struct{}
var errCompileTest = errors.New("catmsg: compile error test")
diff --git a/vendor/golang.org/x/text/internal/catmsg/codec.go b/vendor/golang.org/x/text/internal/catmsg/codec.go
index e959b08f9..ab587f856 100755
--- a/vendor/golang.org/x/text/internal/catmsg/codec.go
+++ b/vendor/golang.org/x/text/internal/catmsg/codec.go
@@ -99,7 +99,7 @@ func (e *Encoder) EncodeMessageType(h Handle) {
// EncodeMessage serializes the given message inline at the current position.
func (e *Encoder) EncodeMessage(m Message) error {
- e = &Encoder{root: e.root, parent: e}
+ e = &Encoder{root: e.root, parent: e, tag: e.tag}
err := m.Compile(e)
if _, ok := m.(*Var); !ok {
e.flushTo(e.parent)