forked from OSchip/llvm-project
Sema::getOwningModule - take const Decl* type.
Fixes static analyzer warning that const_cast was being used despite only const methods being called.
This commit is contained in:
parent
0b91e78a71
commit
7af67259cd
|
@ -1725,7 +1725,9 @@ private:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/// Get the module owning an entity.
|
/// Get the module owning an entity.
|
||||||
Module *getOwningModule(Decl *Entity) { return Entity->getOwningModule(); }
|
Module *getOwningModule(const Decl *Entity) {
|
||||||
|
return Entity->getOwningModule();
|
||||||
|
}
|
||||||
|
|
||||||
/// Make a merged definition of an existing hidden definition \p ND
|
/// Make a merged definition of an existing hidden definition \p ND
|
||||||
/// visible at the specified location.
|
/// visible at the specified location.
|
||||||
|
|
|
@ -9673,8 +9673,7 @@ bool Sema::isEquivalentInternalLinkageDeclaration(const NamedDecl *A,
|
||||||
// entity in different modules.
|
// entity in different modules.
|
||||||
if (!VA->getDeclContext()->getRedeclContext()->Equals(
|
if (!VA->getDeclContext()->getRedeclContext()->Equals(
|
||||||
VB->getDeclContext()->getRedeclContext()) ||
|
VB->getDeclContext()->getRedeclContext()) ||
|
||||||
getOwningModule(const_cast<ValueDecl *>(VA)) ==
|
getOwningModule(VA) == getOwningModule(VB) ||
|
||||||
getOwningModule(const_cast<ValueDecl *>(VB)) ||
|
|
||||||
VA->isExternallyVisible() || VB->isExternallyVisible())
|
VA->isExternallyVisible() || VB->isExternallyVisible())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -9711,12 +9710,12 @@ void Sema::diagnoseEquivalentInternalLinkageDeclarations(
|
||||||
SourceLocation Loc, const NamedDecl *D, ArrayRef<const NamedDecl *> Equiv) {
|
SourceLocation Loc, const NamedDecl *D, ArrayRef<const NamedDecl *> Equiv) {
|
||||||
Diag(Loc, diag::ext_equivalent_internal_linkage_decl_in_modules) << D;
|
Diag(Loc, diag::ext_equivalent_internal_linkage_decl_in_modules) << D;
|
||||||
|
|
||||||
Module *M = getOwningModule(const_cast<NamedDecl*>(D));
|
Module *M = getOwningModule(D);
|
||||||
Diag(D->getLocation(), diag::note_equivalent_internal_linkage_decl)
|
Diag(D->getLocation(), diag::note_equivalent_internal_linkage_decl)
|
||||||
<< !M << (M ? M->getFullModuleName() : "");
|
<< !M << (M ? M->getFullModuleName() : "");
|
||||||
|
|
||||||
for (auto *E : Equiv) {
|
for (auto *E : Equiv) {
|
||||||
Module *M = getOwningModule(const_cast<NamedDecl*>(E));
|
Module *M = getOwningModule(E);
|
||||||
Diag(E->getLocation(), diag::note_equivalent_internal_linkage_decl)
|
Diag(E->getLocation(), diag::note_equivalent_internal_linkage_decl)
|
||||||
<< !M << (M ? M->getFullModuleName() : "");
|
<< !M << (M ? M->getFullModuleName() : "");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue