mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Merge pull request #37196 from bnbarham/warn-on-invalid-sourceinfo
[Serialization] Add warning when .swiftsourceinfo is malformed
This commit is contained in:
@@ -687,10 +687,16 @@ LoadedFile *SerializedModuleLoaderBase::loadAST(
|
||||
std::unique_ptr<llvm::MemoryBuffer> moduleSourceInfoInputBuffer,
|
||||
bool isFramework) {
|
||||
assert(moduleInputBuffer);
|
||||
|
||||
// The buffers are moved into the shared core, so grab their IDs now in case
|
||||
// they're needed for diagnostics later.
|
||||
StringRef moduleBufferID = moduleInputBuffer->getBufferIdentifier();
|
||||
StringRef moduleDocBufferID;
|
||||
if (moduleDocInputBuffer)
|
||||
moduleDocBufferID = moduleDocInputBuffer->getBufferIdentifier();
|
||||
StringRef moduleSourceInfoID;
|
||||
if (moduleSourceInfoInputBuffer)
|
||||
moduleSourceInfoID = moduleSourceInfoInputBuffer->getBufferIdentifier();
|
||||
|
||||
if (moduleInputBuffer->getBufferSize() % 4 != 0) {
|
||||
if (diagLoc)
|
||||
@@ -743,6 +749,12 @@ LoadedFile *SerializedModuleLoaderBase::loadAST(
|
||||
(Ctx.LangOpts.AllowModuleWithCompilerErrors &&
|
||||
(loadInfo.status == serialization::Status::TargetTooNew ||
|
||||
loadInfo.status == serialization::Status::TargetIncompatible))) {
|
||||
if (loadedModuleFile->hasSourceInfoFile() &&
|
||||
!loadedModuleFile->hasSourceInfo())
|
||||
Ctx.Diags.diagnose(diagLocOrInvalid,
|
||||
diag::serialization_malformed_sourceinfo,
|
||||
moduleSourceInfoID);
|
||||
|
||||
Ctx.bumpGeneration();
|
||||
LoadedModuleFiles.emplace_back(std::move(loadedModuleFile),
|
||||
Ctx.getCurrentGeneration());
|
||||
|
||||
Reference in New Issue
Block a user