Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(624)

Unified Diff: common/config/validation/validation.go

Issue 2951393002: [errors] de-specialize Transient in favor of Tags. (Closed)
Patch Set: more refactor Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: common/config/validation/validation.go
diff --git a/common/config/validation/validation.go b/common/config/validation/validation.go
index c5e8d433684eb56edcbd653f4e98ae479414af40..6263fecfb5fafb80bf430378df6e0799355b8967 100644
--- a/common/config/validation/validation.go
+++ b/common/config/validation/validation.go
@@ -44,6 +44,33 @@ type Context struct {
element []string // logical path of a sub-element we validate, see Enter
}
+type fileTagType struct{ Key errors.TagKey }
+
+func (f fileTagType) With(name string) errors.TagValue { return errors.MkTagValue(f.Key, name) }
+func (f fileTagType) In(err error) (v string, ok bool) {
+ d, ok := errors.TagValueIn(f.Key, err)
+ if ok {
+ v = d.(string)
+ }
+ return
+}
+
+type elementTagType struct{ Key errors.TagKey }
+
+func (e elementTagType) With(elements []string) errors.TagValue {
+ return errors.MkTagValue(e.Key, append([]string(nil), elements...))
+}
+func (e elementTagType) In(err error) (v []string, ok bool) {
+ d, ok := errors.TagValueIn(e.Key, err)
+ if ok {
+ v = d.([]string)
+ }
+ return
+}
+
+var fileTag = fileTagType{errors.NewTagKey("holds the file name for tests")}
+var elementTag = elementTagType{errors.NewTagKey("holds the elements for tests")}
+
// Error records a validation error.
func (v *Context) Error(msg string, args ...interface{}) {
ctx := ""
@@ -67,8 +94,7 @@ func (v *Context) Error(msg string, args ...interface{}) {
// Make the file and the logical path also usable through error inspection.
err := errors.Reason(fmt.Sprintf(msg, args...)).
- D("file", v.file).
- D("element", append([]string{}, v.element...)).Err()
+ Tag(fileTag.With(v.file), elementTag.With(v.element)).Err()
v.errors = append(v.errors, err)
}

Powered by Google App Engine
This is Rietveld 408576698