Skip to content

Commit cc4b6fe

Browse files
committed
internal/mcp/jsonschema: generalize error wrapping
Add a wrapf function to simplify defers that wrap errors. Change-Id: If4bedec7d3f56f609d3ca4620aebe7637a59f6bf Reviewed-on: https://go-review.googlesource.com/c/tools/+/676475 LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: Alan Donovan <[email protected]>
1 parent 82fa2c0 commit cc4b6fe

File tree

3 files changed

+9
-10
lines changed

3 files changed

+9
-10
lines changed

internal/mcp/jsonschema/json_pointer.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,7 @@ func parseJSONPointer(ptr string) (segments []string, err error) {
6969
// This implementation suffices for JSON Schema: pointers are applied only to Schemas,
7070
// and refer only to Schemas.
7171
func dereferenceJSONPointer(s *Schema, sptr string) (_ *Schema, err error) {
72-
defer func() {
73-
if err != nil {
74-
err = fmt.Errorf("JSON Pointer %q: %w", sptr, err)
75-
}
76-
}()
72+
defer wrapf(&err, "JSON Pointer %q", sptr)
7773

7874
segments, err := parseJSONPointer(sptr)
7975
if err != nil {

internal/mcp/jsonschema/util.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,3 +282,10 @@ func assert(cond bool, msg string) {
282282
panic("assertion failed: " + msg)
283283
}
284284
}
285+
286+
// wrapf wraps *errp with the given formatted message if *errp is not nil.
287+
func wrapf(errp *error, format string, args ...any) {
288+
if *errp != nil {
289+
*errp = fmt.Errorf("%s: %w", fmt.Sprintf(format, args...), *errp)
290+
}
291+
}

internal/mcp/jsonschema/validate.go

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,7 @@ type state struct {
4242

4343
// validate validates the reflected value of the instance.
4444
func (st *state) validate(instance reflect.Value, schema *Schema, callerAnns *annotations) (err error) {
45-
defer func() {
46-
if err != nil {
47-
err = fmt.Errorf("%s: %w", schema, err)
48-
}
49-
}()
45+
defer wrapf(&err, "validating %s", schema)
5046

5147
st.stack = append(st.stack, schema) // push
5248
defer func() {

0 commit comments

Comments
 (0)