aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2012-05-13 03:25:18 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2012-05-13 03:25:18 +0000
commit599f1b7100745efacb7ded6c176cb7feade114a5 (patch)
treefb547a4d9cff8db46fa19d534b09fc782860c591 /lib/Sema/SemaDecl.cpp
parent420efd83934ee78f04d73880e2ed1b7fdef3328c (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.cpp43
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;