From 642c3eb2029bdb86d407f19ffd04c26bffcec595 Mon Sep 17 00:00:00 2001 From: Balakrishna Avulapati Date: Tue, 24 Jun 2025 14:53:44 +0530 Subject: [PATCH 1/4] style(clang-tidy): fix bugprone-unchecked-optional-access Signed-off-by: Balakrishna Avulapati --- src/core/jsonschema/frame.cc | 14 ++++++++------ src/core/jsonschema/jsonschema.cc | 6 ++++-- src/core/jsonschema/walker.cc | 13 ++++++++----- src/core/uri/uri.cc | 1 + 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/core/jsonschema/frame.cc b/src/core/jsonschema/frame.cc index e204ab931..64e6c500e 100644 --- a/src/core/jsonschema/frame.cc +++ b/src/core/jsonschema/frame.cc @@ -75,9 +75,10 @@ auto find_anchors(const sourcemeta::core::JSON &schema, assert(schema.at("$id").is_string()); const sourcemeta::core::URI identifier(schema.at("$id").to_string()); if (identifier.is_fragment_only()) { - result.insert( - {sourcemeta::core::JSON::String{identifier.fragment().value()}, - AnchorType::Static}); + result.insert({sourcemeta::core::JSON::String{ + identifier.fragment() ? identifier.fragment().value() + : "what should we have here?"}, + AnchorType::Static}); } } } @@ -90,9 +91,10 @@ auto find_anchors(const sourcemeta::core::JSON &schema, assert(schema.at("id").is_string()); const sourcemeta::core::URI identifier(schema.at("id").to_string()); if (identifier.is_fragment_only()) { - result.insert( - {sourcemeta::core::JSON::String{identifier.fragment().value()}, - AnchorType::Static}); + result.insert({sourcemeta::core::JSON::String{ + identifier.fragment() ? identifier.fragment().value() + : "what should we have here?"}, + AnchorType::Static}); } } } diff --git a/src/core/jsonschema/jsonschema.cc b/src/core/jsonschema/jsonschema.cc index 6cd0c1201..c61f16817 100644 --- a/src/core/jsonschema/jsonschema.cc +++ b/src/core/jsonschema/jsonschema.cc @@ -62,8 +62,10 @@ static auto id_keyword(const std::string &base_dialect) -> std::string { auto sourcemeta::core::identify( const sourcemeta::core::JSON &schema, const SchemaResolver &resolver, const SchemaIdentificationStrategy strategy, - const std::optional &default_dialect, - const std::optional &default_id) + const std::optional + &default_dialect, // NOLINT(bugprone-easily-swappable-parameters) + const std::optional + &default_id) // NOLINT(bugprone-easily-swappable-parameters) -> std::optional { std::optional maybe_base_dialect; diff --git a/src/core/jsonschema/walker.cc b/src/core/jsonschema/walker.cc index ec5492831..8cfb50457 100644 --- a/src/core/jsonschema/walker.cc +++ b/src/core/jsonschema/walker.cc @@ -1,3 +1,4 @@ +#include #include #include // std::max, std::sort @@ -44,11 +45,13 @@ auto walk(const std::optional &parent, const auto is_schema_resource{level == 0 || id.has_value()}; const auto current_dialect{is_schema_resource ? maybe_current_dialect.value() : dialect}; - const auto current_base_dialect{ - is_schema_resource - ? sourcemeta::core::base_dialect(subschema, resolver, current_dialect) - .value() - : base_dialect}; + const auto opt_current_base_dialect = + sourcemeta::core::base_dialect(subschema, resolver, current_dialect); + const auto current_base_dialect{is_schema_resource + ? (opt_current_base_dialect + ? opt_current_base_dialect.value() + : base_dialect) + : base_dialect}; const auto vocabularies{sourcemeta::core::vocabularies( resolver, current_base_dialect, current_dialect)}; diff --git a/src/core/uri/uri.cc b/src/core/uri/uri.cc index c91780e68..6b70f0b5d 100644 --- a/src/core/uri/uri.cc +++ b/src/core/uri/uri.cc @@ -620,6 +620,7 @@ auto URI::relative_to(const URI &base) -> URI & { return *this; } +// NOLINTNEXTLINE(bugprone-easily-swappable-parameters) auto URI::rebase(const URI &base, const URI &new_base) -> URI & { this->relative_to(base); if (!this->is_relative()) { From 6915b6dd687a5aab327b3d2437464c541f0303d8 Mon Sep 17 00:00:00 2001 From: Balakrishna Avulapati Date: Tue, 24 Jun 2025 14:58:10 +0530 Subject: [PATCH 2/4] remove irrelevant comments Signed-off-by: Balakrishna Avulapati --- src/core/jsonschema/jsonschema.cc | 6 ++---- src/core/uri/uri.cc | 1 - 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/core/jsonschema/jsonschema.cc b/src/core/jsonschema/jsonschema.cc index c61f16817..6cd0c1201 100644 --- a/src/core/jsonschema/jsonschema.cc +++ b/src/core/jsonschema/jsonschema.cc @@ -62,10 +62,8 @@ static auto id_keyword(const std::string &base_dialect) -> std::string { auto sourcemeta::core::identify( const sourcemeta::core::JSON &schema, const SchemaResolver &resolver, const SchemaIdentificationStrategy strategy, - const std::optional - &default_dialect, // NOLINT(bugprone-easily-swappable-parameters) - const std::optional - &default_id) // NOLINT(bugprone-easily-swappable-parameters) + const std::optional &default_dialect, + const std::optional &default_id) -> std::optional { std::optional maybe_base_dialect; diff --git a/src/core/uri/uri.cc b/src/core/uri/uri.cc index 6b70f0b5d..c91780e68 100644 --- a/src/core/uri/uri.cc +++ b/src/core/uri/uri.cc @@ -620,7 +620,6 @@ auto URI::relative_to(const URI &base) -> URI & { return *this; } -// NOLINTNEXTLINE(bugprone-easily-swappable-parameters) auto URI::rebase(const URI &base, const URI &new_base) -> URI & { this->relative_to(base); if (!this->is_relative()) { From 19c685c880c4d1084967b195e26134b1ab44f91f Mon Sep 17 00:00:00 2001 From: Balakrishna Avulapati Date: Tue, 24 Jun 2025 21:18:44 +0530 Subject: [PATCH 3/4] address review comments and sign-off Signed-off-by: Balakrishna Avulapati --- src/core/jsonschema/frame.cc | 22 ++++++++++++++-------- src/core/jsonschema/walker.cc | 12 +++++------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/core/jsonschema/frame.cc b/src/core/jsonschema/frame.cc index 9feb92065..3cf96e796 100644 --- a/src/core/jsonschema/frame.cc +++ b/src/core/jsonschema/frame.cc @@ -75,10 +75,13 @@ auto find_anchors(const sourcemeta::core::JSON &schema, assert(schema.at("$id").is_string()); const sourcemeta::core::URI identifier(schema.at("$id").to_string()); if (identifier.is_fragment_only()) { - result.insert({sourcemeta::core::JSON::String{ - identifier.fragment() ? identifier.fragment().value() - : "what should we have here?"}, - AnchorType::Static}); + result.insert( + {sourcemeta::core::JSON::String{ + identifier.fragment() + .value()}, // NOLINT(bugprone-unchecked-optional-access): + // Check for optional is happening + // inside is_fragment_only() + AnchorType::Static}); } } } @@ -91,10 +94,13 @@ auto find_anchors(const sourcemeta::core::JSON &schema, assert(schema.at("id").is_string()); const sourcemeta::core::URI identifier(schema.at("id").to_string()); if (identifier.is_fragment_only()) { - result.insert({sourcemeta::core::JSON::String{ - identifier.fragment() ? identifier.fragment().value() - : "what should we have here?"}, - AnchorType::Static}); + result.insert( + {sourcemeta::core::JSON::String{ + identifier.fragment() + .value()}, // NOLINT(bugprone-unchecked-optional-access): + // Check for optional is happening + // inside is_fragment_only() + AnchorType::Static}); } } } diff --git a/src/core/jsonschema/walker.cc b/src/core/jsonschema/walker.cc index f37ba68a5..d764e0ad0 100644 --- a/src/core/jsonschema/walker.cc +++ b/src/core/jsonschema/walker.cc @@ -45,13 +45,11 @@ auto walk(const std::optional &parent, const auto is_schema_resource{level == 0 || id.has_value()}; const auto current_dialect{is_schema_resource ? maybe_current_dialect.value() : dialect}; - const auto opt_current_base_dialect = - sourcemeta::core::base_dialect(subschema, resolver, current_dialect); - const auto current_base_dialect{is_schema_resource - ? (opt_current_base_dialect - ? opt_current_base_dialect.value() - : base_dialect) - : base_dialect}; + const auto current_base_dialect{ + is_schema_resource + ? sourcemeta::core::base_dialect(subschema, resolver, current_dialect) + .value_or(base_dialect) + : base_dialect}; const auto vocabularies{sourcemeta::core::vocabularies( resolver, current_base_dialect, current_dialect)}; From 8f429ef93b495a586bccbf23180cd44ed655547b Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Thu, 26 Jun 2025 16:08:09 -0400 Subject: [PATCH 4/4] Update src/core/jsonschema/walker.cc Signed-off-by: Juan Cruz Viotti --- src/core/jsonschema/walker.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/src/core/jsonschema/walker.cc b/src/core/jsonschema/walker.cc index d764e0ad0..285c68a3e 100644 --- a/src/core/jsonschema/walker.cc +++ b/src/core/jsonschema/walker.cc @@ -1,4 +1,3 @@ -#include #include #include // std::max, std::sort