Skip to content

Commit 8279528

Browse files
authored
Handle SchemaVocabularyError with file paths during indexing (#791)
Signed-off-by: Juan Cruz Viotti <[email protected]>
1 parent 27a390b commit 8279528

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

src/index/index.cc

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)