diff --git a/src/test/rustdoc-json/nested.rs b/src/test/rustdoc-json/nested.rs index 2e0179113ac..a3d4935f496 100644 --- a/src/test/rustdoc-json/nested.rs +++ b/src/test/rustdoc-json/nested.rs @@ -7,18 +7,19 @@ // @is nested.json "$.index[*][?(@.name=='l1')].kind" \"module\" // @is - "$.index[*][?(@.name=='l1')].inner.is_crate" false // @count - "$.index[*][?(@.name=='l1')].inner.items[*]" 2 -// @set l1_id = - "$.index[*][?(@.name=='l1')].id" pub mod l1 { // @is nested.json "$.index[*][?(@.name=='l3')].kind" \"module\" // @is - "$.index[*][?(@.name=='l3')].inner.is_crate" false // @count - "$.index[*][?(@.name=='l3')].inner.items[*]" 1 // @set l3_id = - "$.index[*][?(@.name=='l3')].id" + // @has - "$.index[*][?(@.name=='l1')].inner.items[*]" $l3_id pub mod l3 { // @is nested.json "$.index[*][?(@.name=='L4')].kind" \"struct\" // @is - "$.index[*][?(@.name=='L4')].inner.struct_type" \"unit\" // @set l4_id = - "$.index[*][?(@.name=='L4')].id" + // @has - "$.index[*][?(@.name=='l3')].inner.items[*]" $l4_id pub struct L4; } // @is nested.json "$.index[*][?(@.inner.span=='l3::L4')].kind" \"import\" diff --git a/src/tools/jsondocck/src/main.rs b/src/tools/jsondocck/src/main.rs index 9f231842c60..8cb9564531a 100644 --- a/src/tools/jsondocck/src/main.rs +++ b/src/tools/jsondocck/src/main.rs @@ -207,9 +207,15 @@ fn check_command(command: Command, cache: &mut Cache) -> Result<(), CkError> { let val = cache.get_value(&command.args[0])?; match select(&val, &command.args[1]) { Ok(results) => { - let pat: Value = serde_json::from_str(&command.args[2]).unwrap(); - - !results.is_empty() && results.into_iter().any(|val| *val == pat) + // FIXME: Share the pat getting code with the `Is` branch. + let v_holder; + let pat: &Value = if command.args[2].starts_with("$") { + &cache.variables[&command.args[2][1..]] + } else { + v_holder = serde_json::from_str(&command.args[2]).unwrap(); + &v_holder + }; + !results.is_empty() && results.into_iter().any(|val| val == pat) } Err(_) => false, } @@ -234,8 +240,14 @@ fn check_command(command: Command, cache: &mut Cache) -> Result<(), CkError> { let val = cache.get_value(&command.args[0])?; match select(&val, &command.args[1]) { Ok(results) => { - let pat: Value = serde_json::from_str(&command.args[2]).unwrap(); - results.len() == 1 && *results[0] == pat + let v_holder; + let pat: &Value = if command.args[2].starts_with("$") { + &cache.variables[&command.args[2][1..]] + } else { + v_holder = serde_json::from_str(&command.args[2]).unwrap(); + &v_holder + }; + results.len() == 1 && results[0] == pat } Err(_) => false, }