@@ -188,10 +188,7 @@ auto Resolver::operator()(
188188 auto &subschema{sourcemeta::core::get (schema, entry.second .pointer )};
189189 if (subschema.is_object ()) {
190190 const auto maybe_ref{subschema.try_at (" $ref" , ref_hash)};
191- if (maybe_ref) {
192- // This is safe, as at this point we have validated all schemas
193- // against their meta-schemas
194- assert (maybe_ref->is_string ());
191+ if (maybe_ref && maybe_ref->is_string ()) {
195192 normalise_ref (*result->second .collection , entry.second .base ,
196193 subschema, " $ref" , maybe_ref->to_string ());
197194 }
@@ -200,10 +197,7 @@ auto Resolver::operator()(
200197 sourcemeta::core::SchemaBaseDialect::JSON_Schema_2020_12) {
201198 const auto maybe_dynamic_ref{
202199 subschema.try_at (" $dynamicRef" , dynamic_ref_hash)};
203- if (maybe_dynamic_ref) {
204- // This is safe, as at this point we have validated all schemas
205- // against their meta-schemas
206- assert (maybe_dynamic_ref->is_string ());
200+ if (maybe_dynamic_ref && maybe_dynamic_ref->is_string ()) {
207201 normalise_ref (*result->second .collection , entry.second .base ,
208202 subschema, " $dynamicRef" ,
209203 maybe_dynamic_ref->to_string ());
@@ -237,7 +231,9 @@ auto Resolver::add(const sourcemeta::core::JSON::String &server_url,
237231 // ///////////////////////////////////////////////////////////////////////////
238232 assert (path.is_absolute ());
239233 const auto schema{sourcemeta::core::read_yaml_or_json (path)};
240- assert (sourcemeta::core::is_schema (schema));
234+ if (!sourcemeta::core::is_schema (schema)) {
235+ throw ResolverNotASchemaError (path);
236+ }
241237
242238 const std::string default_dialect_str{
243239 collection.default_dialect .value_or (" " )};
@@ -296,8 +292,9 @@ auto Resolver::add(const sourcemeta::core::JSON::String &server_url,
296292 // ///////////////////////////////////////////////////////////////////////////
297293 const auto raw_dialect{
298294 sourcemeta::core::dialect (schema, default_dialect_str)};
299- // If we couldn't determine the dialect, we would be in trouble!
300- assert (!raw_dialect.empty ());
295+ if (raw_dialect.empty ()) {
296+ throw sourcemeta::core::SchemaUnknownDialectError ();
297+ }
301298 const auto is_official_dialect{
302299 sourcemeta::core::is_known_schema (raw_dialect)};
303300 auto current_dialect{is_official_dialect
0 commit comments