@@ -163,6 +163,7 @@ static auto execute_plan(std::mutex &mutex,
163163 sourcemeta::core::SchemaResolutionError>(
164164 entry->path , error.identifier (), error.what ());
165165 }
166+
166167 throw ;
167168 } catch (const sourcemeta::core::SchemaReferenceError &error) {
168169 const auto *entry{
@@ -173,6 +174,7 @@ static auto execute_plan(std::mutex &mutex,
173174 entry->path , error.identifier (), error.location (),
174175 error.what ());
175176 }
177+
176178 throw ;
177179 } catch (const sourcemeta::core::SchemaReferenceObjectResourceError
178180 &error) {
@@ -183,6 +185,17 @@ static auto execute_plan(std::mutex &mutex,
183185 sourcemeta::core::SchemaReferenceObjectResourceError>(
184186 entry->path , error.identifier ());
185187 }
188+
189+ throw ;
190+ } catch (const sourcemeta::core::SchemaVocabularyError &error) {
191+ const auto *entry{
192+ action.data .empty () ? nullptr : &resolver.entry (action.data )};
193+ if (entry) {
194+ throw sourcemeta::core::FileError<
195+ sourcemeta::core::SchemaVocabularyError>(
196+ entry->path , error.uri (), error.what ());
197+ }
198+
186199 throw ;
187200 }
188201
@@ -670,6 +683,12 @@ auto main(int argc, char *argv[]) noexcept -> int {
670683 } catch (const sourcemeta::blaze::LinterMissingNameError &error) {
671684 std::cerr << " error: " << error.what () << " \n " ;
672685 return EXIT_FAILURE;
686+ } catch (
687+ const sourcemeta::core::FileError<sourcemeta::core::SchemaVocabularyError>
688+ &error) {
689+ std::cerr << " error: " << error.what () << " \n at vocabulary "
690+ << error.uri () << " \n at path " << error.path ().string () << " \n " ;
691+ return EXIT_FAILURE;
673692 } catch (const sourcemeta::core::FileError<
674693 sourcemeta::core::SchemaUnknownBaseDialectError> &error) {
675694 std::cerr << " error: " << error.what () << " \n at path "
0 commit comments