1616#include " llvm/Support/MemoryBuffer.h"
1717#include " swift/Basic/JSONSerialization.h"
1818#include " swift/IDE/APIDigesterData.h"
19+ #include " swift/AST/DiagnosticEngine.h"
20+ #include " swift/AST/DiagnosticsDriver.h"
1921
2022using namespace swift ;
2123using namespace ide ;
@@ -481,6 +483,7 @@ serialize(llvm::raw_ostream &os, ArrayRef<NameCorrectionInfo> Items) {
481483
482484struct swift ::ide::api::APIDiffItemStore::Implementation {
483485private:
486+ DiagnosticEngine &Diags;
484487 llvm::SmallVector<std::unique_ptr<llvm::MemoryBuffer>, 2 > AllBuffer;
485488 llvm::BumpPtrAllocator Allocator;
486489
@@ -500,6 +503,7 @@ struct swift::ide::api::APIDiffItemStore::Implementation {
500503 }
501504
502505public:
506+ Implementation (DiagnosticEngine &Diags): Diags(Diags) {}
503507 llvm::StringMap<std::vector<APIDiffItem*>> Data;
504508 bool PrintUsr;
505509 std::vector<APIDiffItem*> AllItems;
@@ -509,7 +513,9 @@ struct swift::ide::api::APIDiffItemStore::Implementation {
509513 {
510514 auto FileBufOrErr = llvm::MemoryBuffer::getFileOrSTDIN (FileName);
511515 if (!FileBufOrErr) {
512- llvm_unreachable (" Failed to read JSON file" );
516+ Diags.diagnose (SourceLoc (), diag::cannot_find_migration_script,
517+ FileName);
518+ return ;
513519 }
514520 pMemBuffer = FileBufOrErr->get ();
515521 AllBuffer.push_back (std::move (FileBufOrErr.get ()));
@@ -546,8 +552,8 @@ getDiffItems(StringRef Key) const {
546552ArrayRef<APIDiffItem*> swift::ide::api::APIDiffItemStore::
547553getAllDiffItems () const { return Impl.AllItems ; }
548554
549- swift::ide::api::APIDiffItemStore::APIDiffItemStore () :
550- Impl(*new Implementation()) {}
555+ swift::ide::api::APIDiffItemStore::APIDiffItemStore (DiagnosticEngine &Diags ) :
556+ Impl(*new Implementation(Diags )) {}
551557
552558swift::ide::api::APIDiffItemStore::~APIDiffItemStore () { delete &Impl; }
553559
0 commit comments