@@ -214,16 +214,16 @@ bool DylibVerifier::compareObjCInterfaceSymbols(const Record *R,
214214 StringRef SymName, bool PrintAsWarning = false ) {
215215 if (SymLinkage == RecordLinkage::Unknown)
216216 Ctx.emitDiag ([&]() {
217- Ctx.Diag ->Report (SymCtx.FA ->D -> getLocation (),
218- PrintAsWarning ? diag::warn_library_missing_symbol
219- : diag::err_library_missing_symbol)
217+ Ctx.Diag ->Report (SymCtx.FA ->Loc , PrintAsWarning
218+ ? diag::warn_library_missing_symbol
219+ : diag::err_library_missing_symbol)
220220 << SymName;
221221 });
222222 else
223223 Ctx.emitDiag ([&]() {
224- Ctx.Diag ->Report (SymCtx.FA ->D -> getLocation (),
225- PrintAsWarning ? diag::warn_library_hidden_symbol
226- : diag::err_library_hidden_symbol)
224+ Ctx.Diag ->Report (SymCtx.FA ->Loc , PrintAsWarning
225+ ? diag::warn_library_hidden_symbol
226+ : diag::err_library_hidden_symbol)
227227 << SymName;
228228 });
229229 };
@@ -270,16 +270,14 @@ DylibVerifier::Result DylibVerifier::compareVisibility(const Record *R,
270270 if (R->isExported ()) {
271271 if (!DR) {
272272 Ctx.emitDiag ([&]() {
273- Ctx.Diag ->Report (SymCtx.FA ->D ->getLocation (),
274- diag::err_library_missing_symbol)
273+ Ctx.Diag ->Report (SymCtx.FA ->Loc , diag::err_library_missing_symbol)
275274 << getAnnotatedName (R, SymCtx);
276275 });
277276 return Result::Invalid;
278277 }
279278 if (DR->isInternal ()) {
280279 Ctx.emitDiag ([&]() {
281- Ctx.Diag ->Report (SymCtx.FA ->D ->getLocation (),
282- diag::err_library_hidden_symbol)
280+ Ctx.Diag ->Report (SymCtx.FA ->Loc , diag::err_library_hidden_symbol)
283281 << getAnnotatedName (R, SymCtx);
284282 });
285283 return Result::Invalid;
@@ -306,8 +304,7 @@ DylibVerifier::Result DylibVerifier::compareVisibility(const Record *R,
306304 Outcome = Result::Invalid;
307305 }
308306 Ctx.emitDiag ([&]() {
309- Ctx.Diag ->Report (SymCtx.FA ->D ->getLocation (), ID)
310- << getAnnotatedName (R, SymCtx);
307+ Ctx.Diag ->Report (SymCtx.FA ->Loc , ID) << getAnnotatedName (R, SymCtx);
311308 });
312309 return Outcome;
313310 }
@@ -329,15 +326,13 @@ DylibVerifier::Result DylibVerifier::compareAvailability(const Record *R,
329326 switch (Mode) {
330327 case VerificationMode::ErrorsAndWarnings:
331328 Ctx.emitDiag ([&]() {
332- Ctx.Diag ->Report (SymCtx.FA ->D ->getLocation (),
333- diag::warn_header_availability_mismatch)
329+ Ctx.Diag ->Report (SymCtx.FA ->Loc , diag::warn_header_availability_mismatch)
334330 << getAnnotatedName (R, SymCtx) << IsDeclAvailable << IsDeclAvailable;
335331 });
336332 return Result::Ignore;
337333 case VerificationMode::Pedantic:
338334 Ctx.emitDiag ([&]() {
339- Ctx.Diag ->Report (SymCtx.FA ->D ->getLocation (),
340- diag::err_header_availability_mismatch)
335+ Ctx.Diag ->Report (SymCtx.FA ->Loc , diag::err_header_availability_mismatch)
341336 << getAnnotatedName (R, SymCtx) << IsDeclAvailable << IsDeclAvailable;
342337 });
343338 return Result::Invalid;
@@ -353,33 +348,29 @@ bool DylibVerifier::compareSymbolFlags(const Record *R, SymbolContext &SymCtx,
353348 const Record *DR) {
354349 if (DR->isThreadLocalValue () && !R->isThreadLocalValue ()) {
355350 Ctx.emitDiag ([&]() {
356- Ctx.Diag ->Report (SymCtx.FA ->D ->getLocation (),
357- diag::err_dylib_symbol_flags_mismatch)
351+ Ctx.Diag ->Report (SymCtx.FA ->Loc , diag::err_dylib_symbol_flags_mismatch)
358352 << getAnnotatedName (DR, SymCtx) << DR->isThreadLocalValue ();
359353 });
360354 return false ;
361355 }
362356 if (!DR->isThreadLocalValue () && R->isThreadLocalValue ()) {
363357 Ctx.emitDiag ([&]() {
364- Ctx.Diag ->Report (SymCtx.FA ->D ->getLocation (),
365- diag::err_header_symbol_flags_mismatch)
358+ Ctx.Diag ->Report (SymCtx.FA ->Loc , diag::err_header_symbol_flags_mismatch)
366359 << getAnnotatedName (R, SymCtx) << R->isThreadLocalValue ();
367360 });
368361 return false ;
369362 }
370363
371364 if (DR->isWeakDefined () && !R->isWeakDefined ()) {
372365 Ctx.emitDiag ([&]() {
373- Ctx.Diag ->Report (SymCtx.FA ->D ->getLocation (),
374- diag::err_dylib_symbol_flags_mismatch)
366+ Ctx.Diag ->Report (SymCtx.FA ->Loc , diag::err_dylib_symbol_flags_mismatch)
375367 << getAnnotatedName (DR, SymCtx) << R->isWeakDefined ();
376368 });
377369 return false ;
378370 }
379371 if (!DR->isWeakDefined () && R->isWeakDefined ()) {
380372 Ctx.emitDiag ([&]() {
381- Ctx.Diag ->Report (SymCtx.FA ->D ->getLocation (),
382- diag::err_header_symbol_flags_mismatch)
373+ Ctx.Diag ->Report (SymCtx.FA ->Loc , diag::err_header_symbol_flags_mismatch)
383374 << getAnnotatedName (R, SymCtx) << R->isWeakDefined ();
384375 });
385376 return false ;
@@ -487,6 +478,14 @@ void DylibVerifier::setTarget(const Target &T) {
487478 assignSlice (T);
488479}
489480
481+ void DylibVerifier::setSourceManager (
482+ IntrusiveRefCntPtr<SourceManager> SourceMgr) {
483+ if (!Ctx.Diag )
484+ return ;
485+ SourceManagers.push_back (std::move (SourceMgr));
486+ Ctx.Diag ->setSourceManager (SourceManagers.back ().get ());
487+ }
488+
490489DylibVerifier::Result DylibVerifier::verify (ObjCIVarRecord *R,
491490 const FrontendAttrs *FA,
492491 const StringRef SuperClass) {
0 commit comments