diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2012-05-13 03:25:18 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2012-05-13 03:25:18 +0000 |
commit | 599f1b7100745efacb7ded6c176cb7feade114a5 (patch) | |
tree | fb547a4d9cff8db46fa19d534b09fc782860c591 /lib/Sema/SemaDecl.cpp | |
parent | 420efd83934ee78f04d73880e2ed1b7fdef3328c (diff) |
Refactor all the
if (Inherited)
Attr->setInherited(true);
To a central location.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156728 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDecl.cpp')
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 43 |
1 files changed, 20 insertions, 23 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 9828c180b1..3e660b5986 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -1659,30 +1659,27 @@ DeclHasAttr(const Decl *D, const Attr *A) { } bool Sema::mergeDeclAttribute(Decl *D, InheritableAttr *Attr) { + InheritableAttr *NewAttr = NULL; if (AvailabilityAttr *AA = dyn_cast<AvailabilityAttr>(Attr)) - return mergeAvailabilityAttr(D, AA->getRange(), true, AA->getPlatform(), - AA->getIntroduced(), AA->getDeprecated(), - AA->getObsoleted(), AA->getUnavailable(), - AA->getMessage()); - - if (VisibilityAttr *VA = dyn_cast<VisibilityAttr>(Attr)) - return mergeVisibilityAttr(D, VA->getRange(), true, VA->getVisibility()); - - if (DLLImportAttr *ImportA = dyn_cast<DLLImportAttr>(Attr)) - return mergeDLLImportAttr(D, ImportA->getRange(), true); - - if (DLLExportAttr *ExportA = dyn_cast<DLLExportAttr>(Attr)) - return mergeDLLExportAttr(D, ExportA->getRange(), true); - - if (FormatAttr *FA = dyn_cast<FormatAttr>(Attr)) - return mergeFormatAttr(D, FA->getRange(), true, FA->getType(), - FA->getFormatIdx(), FA->getFirstArg()); - - if (SectionAttr *SA = dyn_cast<SectionAttr>(Attr)) - return mergeSectionAttr(D, SA->getRange(), true, SA->getName()); - - if (!DeclHasAttr(D, Attr)) { - InheritableAttr *NewAttr = cast<InheritableAttr>(Attr->clone(Context)); + NewAttr = mergeAvailabilityAttr(D, AA->getRange(), AA->getPlatform(), + AA->getIntroduced(), AA->getDeprecated(), + AA->getObsoleted(), AA->getUnavailable(), + AA->getMessage()); + else if (VisibilityAttr *VA = dyn_cast<VisibilityAttr>(Attr)) + NewAttr = mergeVisibilityAttr(D, VA->getRange(), VA->getVisibility()); + else if (DLLImportAttr *ImportA = dyn_cast<DLLImportAttr>(Attr)) + NewAttr = mergeDLLImportAttr(D, ImportA->getRange()); + else if (DLLExportAttr *ExportA = dyn_cast<DLLExportAttr>(Attr)) + NewAttr = mergeDLLExportAttr(D, ExportA->getRange()); + else if (FormatAttr *FA = dyn_cast<FormatAttr>(Attr)) + NewAttr = mergeFormatAttr(D, FA->getRange(), FA->getType(), + FA->getFormatIdx(), FA->getFirstArg()); + else if (SectionAttr *SA = dyn_cast<SectionAttr>(Attr)) + NewAttr = mergeSectionAttr(D, SA->getRange(), SA->getName()); + else if (!DeclHasAttr(D, Attr)) + NewAttr = cast<InheritableAttr>(Attr->clone(Context)); + + if (NewAttr) { NewAttr->setInherited(true); D->addAttr(NewAttr); return true; |