@@ -351,12 +351,41 @@ func (loader *Loader) resolveComponent(doc *T, ref string, path *url.URL, resolv
351351 return nil
352352 }
353353 if err := codec (cursor , resolved ); err != nil {
354- return nil , nil , fmt .Errorf ("bad data in %q" , ref )
354+ return nil , nil , fmt .Errorf ("bad data in %q (expecting %s) " , ref , readableType ( resolved ) )
355355 }
356356 return componentDoc , componentPath , nil
357357
358358 default :
359- return nil , nil , fmt .Errorf ("bad data in %q" , ref )
359+ return nil , nil , fmt .Errorf ("bad data in %q (expecting %s)" , ref , readableType (resolved ))
360+ }
361+ }
362+
363+ func readableType (x interface {}) string {
364+ switch x .(type ) {
365+ case * Callback :
366+ return "callback object"
367+ case * CallbackRef :
368+ return "ref to callback object"
369+ case * ExampleRef :
370+ return "ref to example object"
371+ case * HeaderRef :
372+ return "ref to header object"
373+ case * LinkRef :
374+ return "ref to link object"
375+ case * ParameterRef :
376+ return "ref to parameter object"
377+ case * PathItem :
378+ return "pathItem object"
379+ case * RequestBodyRef :
380+ return "ref to requestBody object"
381+ case * ResponseRef :
382+ return "ref to response object"
383+ case * SchemaRef :
384+ return "ref to schema object"
385+ case * SecuritySchemeRef :
386+ return "ref to securityScheme object"
387+ default :
388+ panic (fmt .Sprintf ("unreachable %T" , x ))
360389 }
361390}
362391
0 commit comments