error fixes
diff --git a/decode.go b/decode.go index 4bb5130..3d4b128 100644 --- a/decode.go +++ b/decode.go
@@ -7,9 +7,9 @@ import "C" import ( - "unsafe" "reflect" "strconv" + "unsafe" ) const ( @@ -34,7 +34,6 @@ return C.GoString((*C.char)(unsafe.Pointer(s))) } - // ---------------------------------------------------------------------------- // Parser, produces a node tree out of a libyaml event stream. @@ -196,7 +195,6 @@ return n } - // ---------------------------------------------------------------------------- // Decoder, unmarshals a node into a provided value. @@ -292,7 +290,7 @@ } d.aliases[n.value] = true good = d.unmarshal(an, out) - d.aliases[n.value] = false, false + delete(d.aliases, n.value) return good } @@ -357,7 +355,7 @@ good = true } case reflect.Ptr: - switch resolved := resolved.(type) { + switch resolved.(type) { case nil: out.Set(reflect.Zero(out.Type())) good = true
diff --git a/decode_test.go b/decode_test.go index bd73dd4..36699d3 100644 --- a/decode_test.go +++ b/decode_test.go
@@ -1,14 +1,12 @@ package goyaml_test - import ( . "launchpad.net/gocheck" "launchpad.net/goyaml" - "reflect" "math" + "reflect" ) - var unmarshalIntTest = 123 var unmarshalTests = []struct { @@ -131,7 +129,6 @@ {"a: &a [1, 2]\nb: *a", &struct{ B []int }{[]int{1, 2}}}, } - func (s *S) TestUnmarshal(c *C) { for i, item := range unmarshalTests { t := reflect.ValueOf(item.value).Type() @@ -163,7 +160,7 @@ for _, item := range unmarshalErrorTests { var value interface{} err := goyaml.Unmarshal([]byte(item.data), &value) - c.Assert(err, Matches, item.error, Bug("Partial unmarshal: %#v", value)) + c.Assert(err, ErrorMatches, item.error, Bug("Partial unmarshal: %#v", value)) } } @@ -226,8 +223,8 @@ setterResult[2] = false setterResult[4] = false defer func() { - setterResult[2] = false, false - setterResult[4] = false, false + delete(setterResult, 2) + delete(setterResult, 4) }() m := map[string]*typeWithSetter{}
diff --git a/encode.go b/encode.go index ad414e2..666258d 100644 --- a/encode.go +++ b/encode.go
@@ -5,11 +5,10 @@ import ( "reflect" - "unsafe" "strconv" + "unsafe" ) - type encoder struct { emitter C.yaml_emitter_t event C.yaml_event_t @@ -19,7 +18,6 @@ flow bool } - //export outputHandler func outputHandler(data unsafe.Pointer, buffer *C.uchar, size C.size_t) C.int { e := (*encoder)(data) @@ -253,7 +251,7 @@ } func (e *encoder) emitScalar(value, anchor, tag string, -style C.yaml_scalar_style_t) { + style C.yaml_scalar_style_t) { var canchor, ctag, cvalue *C.yaml_char_t var cimplicit C.int var free func()
diff --git a/encode_test.go b/encode_test.go index 3fd69c5..a37adf9 100644 --- a/encode_test.go +++ b/encode_test.go
@@ -1,6 +1,5 @@ package goyaml_test - import ( . "launchpad.net/gocheck" "launchpad.net/goyaml" @@ -94,7 +93,6 @@ }{struct{ B string }{"c"}}}, } - func (s *S) TestMarshal(c *C) { for _, item := range marshalTests { data, err := goyaml.Marshal(item.value)
diff --git a/goyaml.go b/goyaml.go index 7c2d98e..e7ba7a3 100644 --- a/goyaml.go +++ b/goyaml.go
@@ -10,15 +10,15 @@ package goyaml import ( + "errors" "fmt" "reflect" "runtime" "strings" "sync" - "os" ) -func handleErr(err *os.Error) { +func handleErr(err *error) { if r := recover(); r != nil { if _, ok := r.(runtime.Error); ok { panic(r) @@ -27,8 +27,8 @@ } else if _, ok := r.(externalPanic); ok { panic(r) } else if s, ok := r.(string); ok { - *err = os.NewError("YAML error: " + s) - } else if e, ok := r.(os.Error); ok { + *err = errors.New("YAML error: " + s) + } else if e, ok := r.(error); ok { *err = e } else { panic(r) @@ -84,7 +84,7 @@ // var T t // goyaml.Unmarshal([]byte("a: 1\nb: 2"), &t) // -func Unmarshal(in []byte, out interface{}) (err os.Error) { +func Unmarshal(in []byte, out interface{}) (err error) { defer handleErr(&err) d := newDecoder() p := newParser(in) @@ -128,7 +128,7 @@ // goyaml.Marshal(&T{B: 2}) // Returns "b: 2\n" // goyaml.Marshal(&T{F: 1}} // Returns "a: 1\nb: 0\n" // -func Marshal(in interface{}) (out []byte, err os.Error) { +func Marshal(in interface{}) (out []byte, err error) { defer handleErr(&err) e := newEncoder() defer e.destroy() @@ -138,7 +138,6 @@ return } - // -------------------------------------------------------------------------- // Maintain a mapping of keys to structure field indexes @@ -165,7 +164,7 @@ return string(e) } -func getStructFields(st reflect.Type) (*structFields, os.Error) { +func getStructFields(st reflect.Type) (*structFields, error) { path := st.PkgPath() name := st.Name() @@ -235,7 +234,7 @@ if _, found = fieldsMap[info.Key]; found { msg := "Duplicated key '" + info.Key + "' in struct " + st.String() - return nil, os.NewError(msg) + return nil, errors.New(msg) } fieldsList[len(fieldsMap)] = info
diff --git a/resolve.go b/resolve.go index 36f43ff..577e1b9 100644 --- a/resolve.go +++ b/resolve.go
@@ -1,12 +1,11 @@ package goyaml import ( + "math" "strconv" "strings" - "math" ) - // TODO: merge, timestamps, base 60 floats, omap. @@ -18,7 +17,6 @@ var resolveTable = make([]byte, 256) var resolveMap = make(map[string]resolveMapItem) - func init() { t := resolveTable t[int('+')] = 'S' // Sign
diff --git a/suite_test.go b/suite_test.go index 03359cd..963ab0b 100644 --- a/suite_test.go +++ b/suite_test.go
@@ -1,6 +1,5 @@ package goyaml_test - import ( . "launchpad.net/gocheck" "testing"