From 66599c40709cb74da2e3ae243e1f42ac9bacf263 Mon Sep 17 00:00:00 2001 From: Gustavo Niemeyer Date: Tue, 24 Jan 2012 21:51:15 -0200 Subject: [PATCH] encoding/xml: remove Marshaler support Marshaler has a number of open areas that need further thought (e.g. it doesn't handle attributes, it's supposed to handle tag names internally but has no information to do so, etc). We're removing it now and will bring it back with an interface that covers these aspects, after Go 1. Related to issue 2771, but doesn't fix it. R=golang-dev, rsc CC=golang-dev https://golang.org/cl/5574057 --- src/pkg/encoding/xml/marshal.go | 20 -------------------- src/pkg/encoding/xml/marshal_test.go | 13 ------------- 2 files changed, 33 deletions(-) diff --git a/src/pkg/encoding/xml/marshal.go b/src/pkg/encoding/xml/marshal.go index 4ef2a50eaca..7a05a1bb10e 100644 --- a/src/pkg/encoding/xml/marshal.go +++ b/src/pkg/encoding/xml/marshal.go @@ -21,16 +21,8 @@ const ( Header = `` + "\n" ) -// A Marshaler can produce well-formatted XML representing its internal state. -type Marshaler interface { - MarshalXML() ([]byte, error) -} - // Marshal returns the XML encoding of v. // -// If v implements Marshaler, then Marshal calls its MarshalXML method. -// Otherwise, Marshal uses the following procedure to create the XML. -// // Marshal handles an array or slice by marshalling each of the elements. // Marshal handles a pointer by marshalling the value it points at or, if the // pointer is nil, by writing nothing. Marshal handles an interface value by @@ -128,18 +120,6 @@ func (p *printer) marshalValue(val reflect.Value, finfo *fieldInfo) error { kind := val.Kind() typ := val.Type() - // Try Marshaler - if typ.NumMethod() > 0 { - if marshaler, ok := val.Interface().(Marshaler); ok { - bytes, err := marshaler.MarshalXML() - if err != nil { - return err - } - p.Write(bytes) - return nil - } - } - // Drill into pointers/interfaces if kind == reflect.Ptr || kind == reflect.Interface { if val.IsNil() { diff --git a/src/pkg/encoding/xml/marshal_test.go b/src/pkg/encoding/xml/marshal_test.go index 3bdfa55c80b..e0be3320086 100644 --- a/src/pkg/encoding/xml/marshal_test.go +++ b/src/pkg/encoding/xml/marshal_test.go @@ -34,12 +34,6 @@ type Ship struct { secret string } -type RawXML string - -func (rx RawXML) MarshalXML() ([]byte, error) { - return []byte(rx), nil -} - type NamedType string type Port struct { @@ -298,13 +292,6 @@ var marshalTests = []struct { UnmarshalOnly: true, }, - // Test marshaller interface - { - Value: RawXML(""), - ExpectXML: ``, - MarshalOnly: true, - }, - // Test structs {Value: &Port{Type: "ssl", Number: "443"}, ExpectXML: `443`}, {Value: &Port{Number: "443"}, ExpectXML: `443`},