diff --git a/src/lib.rs b/src/lib.rs index 30f8c280784bf42b2408f8f2116fc6e26526cc17..ed249908bfba1de226ffd6a3519e3ae27155bbc7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -81,12 +81,15 @@ impl SchemaInspector { /// to retrieve them from the root schemas object fn resolve_references(schemas: &Map<String, Value>, val: &mut Value) -> Result<(), InitError> { if let Some(target) = Self::extract_ref(val) { - *val = schemas + let mut resolved_schema = schemas .get(&target) .ok_or(InitError::ResolutionFailure(format!( "{target} not found in the given schemas" )))? .clone(); + // resolve any references within the resolved schema + Self::resolve_references(schemas, &mut resolved_schema)?; + *val = resolved_schema; } match val { Value::Object(ref mut map) => {