about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNixon Enraght-Moony <nixon.emoony@gmail.com>2021-02-22 10:33:33 +0000
committerNixon Enraght-Moony <nixon.emoony@gmail.com>2021-02-22 10:33:33 +0000
commit4c949a455df81924b37dc41f2edf1071ea329fb5 (patch)
treee05ed110b95f601f12129d3162d65bf5ac1feaeb
parentba22a69d964283d388a362830e73a992f024a6bf (diff)
downloadrust-4c949a455df81924b37dc41f2edf1071ea329fb5.tar.gz
rust-4c949a455df81924b37dc41f2edf1071ea329fb5.zip
Simplify Error Handling.
-rw-r--r--src/tools/jsondocck/src/main.rs50
1 files changed, 21 insertions, 29 deletions
diff --git a/src/tools/jsondocck/src/main.rs b/src/tools/jsondocck/src/main.rs
index e3334e559db..5020a4917a0 100644
--- a/src/tools/jsondocck/src/main.rs
+++ b/src/tools/jsondocck/src/main.rs
@@ -197,22 +197,15 @@ fn check_command(command: Command, cache: &mut Cache) -> Result<(), CkError> {
                 // @has <path> <jsonpath> = check path exists
                 2 => {
                     let val = cache.get_value(&command.args[0])?;
-
-                    match select(&val, &command.args[1]) {
-                        Ok(results) => !results.is_empty(),
-                        Err(_) => false,
-                    }
+                    let results = select(&val, &command.args[1]).unwrap();
+                    !results.is_empty()
                 }
                 // @has <path> <jsonpath> <value> = check *any* item matched by path equals value
                 3 => {
                     let val = cache.get_value(&command.args[0])?;
-                    match select(&val, &command.args[1]) {
-                        Ok(results) => {
-                            let pat = string_to_value(&command.args[2], cache);
-                            results.contains(&pat.as_ref())
-                        }
-                        Err(_) => false,
-                    }
+                    let results = select(&val, &command.args[1]).unwrap();
+                    let pat = string_to_value(&command.args[2], cache);
+                    results.contains(&pat.as_ref())
                 }
                 _ => unreachable!(),
             }
@@ -223,38 +216,37 @@ fn check_command(command: Command, cache: &mut Cache) -> Result<(), CkError> {
             let expected: usize = command.args[2].parse().unwrap();
 
             let val = cache.get_value(&command.args[0])?;
-            match select(&val, &command.args[1]) {
-                Ok(results) => results.len() == expected,
-                Err(_) => false,
-            }
+            let results = select(&val, &command.args[1]).unwrap();
+            results.len() == expected
         }
         CommandKind::Is => {
             // @has <path> <jsonpath> <value> = check *exactly one* item matched by path, and it equals value
             assert_eq!(command.args.len(), 3);
             let val = cache.get_value(&command.args[0])?;
-            match select(&val, &command.args[1]) {
-                Ok(results) => {
-                    let pat = string_to_value(&command.args[2], cache);
-                    results.len() == 1 && results[0] == pat.as_ref()
-                }
-                Err(_) => false,
-            }
+            let results = select(&val, &command.args[1]).unwrap();
+            let pat = string_to_value(&command.args[2], cache);
+            results.len() == 1 && results[0] == pat.as_ref()
         }
-        // FIXME, Figure out semantics for @!set
         CommandKind::Set => {
             // @set <name> = <path> <jsonpath>
             assert_eq!(command.args.len(), 4);
             assert_eq!(command.args[1], "=", "Expected an `=`");
             let val = cache.get_value(&command.args[2])?;
-
-            match select(&val, &command.args[3]) {
-                Ok(results) => {
-                    assert_eq!(results.len(), 1);
+            let results = select(&val, &command.args[3]).unwrap();
+            assert_eq!(results.len(), 1);
+            match results.len() {
+                0 => false,
+                1 => {
                     let r = cache.variables.insert(command.args[0].clone(), results[0].clone());
                     assert!(r.is_none(), "Name collision: {} is duplicated", command.args[0]);
                     true
                 }
-                Err(_) => false,
+                _ => {
+                    panic!(
+                        "Got multiple results in `@set` for `{}`: {:?}",
+                        &command.args[3], results
+                    );
+                }
             }
         }
     };