Index: common/errors/tags.go |
diff --git a/common/errors/tags.go b/common/errors/tags.go |
index b80f135c94bda7fa9280987201735df73a0155ed..ce963d88a7c8a15eb41c49372cb4fc630c79f62f 100644 |
--- a/common/errors/tags.go |
+++ b/common/errors/tags.go |
@@ -4,12 +4,9 @@ |
package errors |
-type ( |
- // TagKeyOrValue is used for functions taking either a TagKey or a TagValue. |
- TagKeyOrValue interface { |
- isTagKeyOrValue() |
- } |
+import "sort" |
+type ( |
tagDescription struct { |
description string |
} |
@@ -18,6 +15,8 @@ type ( |
// errors. See NewTag for details. |
TagKey *tagDescription |
+ tagKeySlice []TagKey |
+ |
// TagValue represents a (tag, value) to be used with Annotate.Tag, or may be |
// applied to an error directly with the Apply method. |
// |
@@ -36,6 +35,12 @@ type ( |
} |
) |
+var _ sort.Interface = tagKeySlice(nil) |
+ |
+func (s tagKeySlice) Swap(i, j int) { s[i], s[j] = s[j], s[i] } |
+func (s tagKeySlice) Len() int { return len(s) } |
+func (s tagKeySlice) Less(i, j int) bool { return s[i].description < s[j].description } |
+ |
// TagValueIn will retrieve the tagged value from the error that's associated |
// with this key, and a boolean indicating if the tag was present or not. |
func TagValueIn(t TagKey, err error) (value interface{}, ok bool) { |
@@ -54,7 +59,7 @@ func TagValueIn(t TagKey, err error) (value interface{}, ok bool) { |
func (t TagValue) GenerateErrorTagValue() TagValue { return t } |
// Apply applies this tag value (key+value) directly to the error. This is |
-// a shortcut for `errors.Annotate(err).Tag(t).Err()`. |
+// a shortcut for `errors.Annotate(err, "").Tag(t).Err()`. |
func (t TagValue) Apply(err error) error { |
if err == nil { |
return nil |
@@ -63,11 +68,6 @@ func (t TagValue) Apply(err error) error { |
return a.Tag(t).Err() |
} |
-// MkTagValue is a shortcut for errors.TagValue{Key: key, Value: val}. |
-func MkTagValue(key TagKey, val interface{}) TagValue { |
- return TagValue{key, val} |
-} |
- |
// BoolTag is an error tag implementation which holds a boolean value. |
// |
// It should be constructed like: |
@@ -118,7 +118,7 @@ func (b BoolTag) In(err error) bool { |
// type SomeType int |
// type myTag struct { Key errors.TagKey } |
// func (m myTag) With(value SomeType) errors.TagValue { |
-// return errors.MkTagValue(vm.Key, value) |
+// return errors.TagValue{Key: vm.Key, Value: value} |
// } |
// func (m myTag) In(err error) (v SomeType, ok bool) { |
// d, ok := errors.TagValueIn(m.Key, err) |