I don't know why this test was written as it was.  The new test makes more
sense, and may be more correct as well.
         return NULL;
     }
 
-    if (value->type >= 0 && value->type < JSON_N_TYPES
-        && (types & (1u << value->type)
-            || (types & OP_ID
-                && value->type == JSON_STRING
-                && is_id(value->u.string))))
+    if ((value->type >= 0 && value->type < JSON_N_TYPES
+         && types & (1u << value->type))
+        || (types & OP_ID && value->type == JSON_STRING
+            && is_id(value->u.string)))
     {
         svec_add(&parser->used, name);
         return value;