aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaDeclAttr.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-06-28 23:58:55 +0000
committerChris Lattner <sabre@nondot.org>2008-06-28 23:58:55 +0000
commitf2e4bd51aa7dc095cefcbcfec573d6bb29f04c5a (patch)
tree0304f3ded1e502676cee45e5cf42deebb85b6abd /lib/Sema/SemaDeclAttr.cpp
parent49e2d34f74f98bef23e37c415ce90cd783cdea24 (diff)
more attribute refactoring/renaming, no functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52874 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDeclAttr.cpp')
-rw-r--r--lib/Sema/SemaDeclAttr.cpp67
1 files changed, 35 insertions, 32 deletions
diff --git a/lib/Sema/SemaDeclAttr.cpp b/lib/Sema/SemaDeclAttr.cpp
index 3fda03145c..752a0fb3e1 100644
--- a/lib/Sema/SemaDeclAttr.cpp
+++ b/lib/Sema/SemaDeclAttr.cpp
@@ -54,62 +54,65 @@ static inline bool isNSStringType(QualType T, ASTContext &Ctx) {
ClsName == &Ctx.Idents.get("NSMutableString");
}
-void Sema::HandleDeclAttributes(Decl *New, const AttributeList *DeclSpecAttrs,
- const AttributeList *DeclaratorAttrs) {
+void Sema::ProcessDeclAttributes(Decl *D, const AttributeList *DeclSpecAttrs,
+ const AttributeList *DeclaratorAttrs) {
if (DeclSpecAttrs == 0 && DeclaratorAttrs == 0) return;
-
- while (DeclSpecAttrs) {
- HandleDeclAttribute(New, *DeclSpecAttrs);
- DeclSpecAttrs = DeclSpecAttrs->getNext();
- }
+
+ ProcessDeclAttributeList(D, DeclSpecAttrs);
// If there are any type attributes that were in the declarator, apply them to
// its top level type.
- if (ValueDecl *VD = dyn_cast<ValueDecl>(New)) {
+ if (ValueDecl *VD = dyn_cast<ValueDecl>(D)) {
QualType DT = VD->getType();
ProcessTypeAttributes(DT, DeclaratorAttrs);
VD->setType(DT);
- } else if (TypedefDecl *TD = dyn_cast<TypedefDecl>(New)) {
+ } else if (TypedefDecl *TD = dyn_cast<TypedefDecl>(D)) {
QualType DT = TD->getUnderlyingType();
ProcessTypeAttributes(DT, DeclaratorAttrs);
TD->setUnderlyingType(DT);
}
- while (DeclaratorAttrs) {
- HandleDeclAttribute(New, *DeclaratorAttrs);
- DeclaratorAttrs = DeclaratorAttrs->getNext();
+ ProcessDeclAttributeList(D, DeclaratorAttrs);
+}
+
+/// ProcessDeclAttributeList - Apply all the decl attributes in the specified
+/// attribute list to the specified decl, ignoring any type attributes.
+void Sema::ProcessDeclAttributeList(Decl *D, const AttributeList *AttrList) {
+ while (AttrList) {
+ ProcessDeclAttribute(D, *AttrList);
+ AttrList = AttrList->getNext();
}
}
/// HandleDeclAttribute - Apply the specific attribute to the specified decl if
/// the attribute applies to decls. If the attribute is a type attribute, just
/// silently ignore it.
-void Sema::HandleDeclAttribute(Decl *New, const AttributeList &Attr) {
+void Sema::ProcessDeclAttribute(Decl *D, const AttributeList &Attr) {
switch (Attr.getKind()) {
case AttributeList::AT_address_space:
// Ignore this, this is a type attribute, handled by ProcessTypeAttributes.
break;
- case AttributeList::AT_vector_size:HandleVectorSizeAttribute(New, Attr);break;
- case AttributeList::AT_ext_vector_type:
- HandleExtVectorTypeAttribute(New, Attr);
+ case AttributeList::AT_vector_size: HandleVectorSizeAttribute(D, Attr); break;
+ case AttributeList::AT_ext_vector_type:
+ HandleExtVectorTypeAttribute(D, Attr);
break;
- case AttributeList::AT_mode: HandleModeAttribute(New, Attr); break;
- case AttributeList::AT_alias: HandleAliasAttribute(New, Attr); break;
- case AttributeList::AT_deprecated: HandleDeprecatedAttribute(New, Attr);break;
- case AttributeList::AT_visibility: HandleVisibilityAttribute(New, Attr);break;
- case AttributeList::AT_weak: HandleWeakAttribute(New, Attr); break;
- case AttributeList::AT_dllimport: HandleDLLImportAttribute(New, Attr); break;
- case AttributeList::AT_dllexport: HandleDLLExportAttribute(New, Attr); break;
- case AttributeList::AT_nothrow: HandleNothrowAttribute(New, Attr); break;
- case AttributeList::AT_stdcall: HandleStdCallAttribute(New, Attr); break;
- case AttributeList::AT_fastcall: HandleFastCallAttribute(New, Attr); break;
- case AttributeList::AT_aligned: HandleAlignedAttribute(New, Attr); break;
- case AttributeList::AT_packed: HandlePackedAttribute(New, Attr); break;
- case AttributeList::AT_annotate: HandleAnnotateAttribute(New, Attr); break;
- case AttributeList::AT_noreturn: HandleNoReturnAttribute(New, Attr); break;
- case AttributeList::AT_format: HandleFormatAttribute(New, Attr); break;
+ case AttributeList::AT_mode: HandleModeAttribute(D, Attr); break;
+ case AttributeList::AT_alias: HandleAliasAttribute(D, Attr); break;
+ case AttributeList::AT_deprecated: HandleDeprecatedAttribute(D, Attr);break;
+ case AttributeList::AT_visibility: HandleVisibilityAttribute(D, Attr);break;
+ case AttributeList::AT_weak: HandleWeakAttribute(D, Attr); break;
+ case AttributeList::AT_dllimport: HandleDLLImportAttribute(D, Attr); break;
+ case AttributeList::AT_dllexport: HandleDLLExportAttribute(D, Attr); break;
+ case AttributeList::AT_nothrow: HandleNothrowAttribute(D, Attr); break;
+ case AttributeList::AT_stdcall: HandleStdCallAttribute(D, Attr); break;
+ case AttributeList::AT_fastcall: HandleFastCallAttribute(D, Attr); break;
+ case AttributeList::AT_aligned: HandleAlignedAttribute(D, Attr); break;
+ case AttributeList::AT_packed: HandlePackedAttribute(D, Attr); break;
+ case AttributeList::AT_annotate: HandleAnnotateAttribute(D, Attr); break;
+ case AttributeList::AT_noreturn: HandleNoReturnAttribute(D, Attr); break;
+ case AttributeList::AT_format: HandleFormatAttribute(D, Attr); break;
case AttributeList::AT_transparent_union:
- HandleTransparentUnionAttribute(New, Attr);
+ HandleTransparentUnionAttribute(D, Attr);
break;
default:
#if 0