@@ -214,16 +214,16 @@ bool DylibVerifier::compareObjCInterfaceSymbols(const Record *R,
214
214
StringRef SymName, bool PrintAsWarning = false ) {
215
215
if (SymLinkage == RecordLinkage::Unknown)
216
216
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)
220
220
<< SymName;
221
221
});
222
222
else
223
223
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)
227
227
<< SymName;
228
228
});
229
229
};
@@ -270,16 +270,14 @@ DylibVerifier::Result DylibVerifier::compareVisibility(const Record *R,
270
270
if (R->isExported ()) {
271
271
if (!DR) {
272
272
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)
275
274
<< getAnnotatedName (R, SymCtx);
276
275
});
277
276
return Result::Invalid;
278
277
}
279
278
if (DR->isInternal ()) {
280
279
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)
283
281
<< getAnnotatedName (R, SymCtx);
284
282
});
285
283
return Result::Invalid;
@@ -306,8 +304,7 @@ DylibVerifier::Result DylibVerifier::compareVisibility(const Record *R,
306
304
Outcome = Result::Invalid;
307
305
}
308
306
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);
311
308
});
312
309
return Outcome;
313
310
}
@@ -329,15 +326,13 @@ DylibVerifier::Result DylibVerifier::compareAvailability(const Record *R,
329
326
switch (Mode) {
330
327
case VerificationMode::ErrorsAndWarnings:
331
328
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)
334
330
<< getAnnotatedName (R, SymCtx) << IsDeclAvailable << IsDeclAvailable;
335
331
});
336
332
return Result::Ignore;
337
333
case VerificationMode::Pedantic:
338
334
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)
341
336
<< getAnnotatedName (R, SymCtx) << IsDeclAvailable << IsDeclAvailable;
342
337
});
343
338
return Result::Invalid;
@@ -353,33 +348,29 @@ bool DylibVerifier::compareSymbolFlags(const Record *R, SymbolContext &SymCtx,
353
348
const Record *DR) {
354
349
if (DR->isThreadLocalValue () && !R->isThreadLocalValue ()) {
355
350
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)
358
352
<< getAnnotatedName (DR, SymCtx) << DR->isThreadLocalValue ();
359
353
});
360
354
return false ;
361
355
}
362
356
if (!DR->isThreadLocalValue () && R->isThreadLocalValue ()) {
363
357
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)
366
359
<< getAnnotatedName (R, SymCtx) << R->isThreadLocalValue ();
367
360
});
368
361
return false ;
369
362
}
370
363
371
364
if (DR->isWeakDefined () && !R->isWeakDefined ()) {
372
365
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)
375
367
<< getAnnotatedName (DR, SymCtx) << R->isWeakDefined ();
376
368
});
377
369
return false ;
378
370
}
379
371
if (!DR->isWeakDefined () && R->isWeakDefined ()) {
380
372
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)
383
374
<< getAnnotatedName (R, SymCtx) << R->isWeakDefined ();
384
375
});
385
376
return false ;
@@ -487,6 +478,14 @@ void DylibVerifier::setTarget(const Target &T) {
487
478
assignSlice (T);
488
479
}
489
480
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
+
490
489
DylibVerifier::Result DylibVerifier::verify (ObjCIVarRecord *R,
491
490
const FrontendAttrs *FA,
492
491
const StringRef SuperClass) {
0 commit comments