Hi Richard, For attribute declarations, are they appertaining to the translation unit in which they are declared? If true then maybe TranslationUnitDecl is a place to store the AST nodes for these attributes? If not what would be the right place to store these attributes in AST? I am interested to work on this as I need declare attributes at TU scope then retrieve them later from AST.
Michael. On Wed, Feb 20, 2013 at 11:22 AM, Richard Smith <[email protected]>wrote: > Author: rsmith > Date: Wed Feb 20 13:22:51 2013 > New Revision: 175649 > > URL: http://llvm.org/viewvc/llvm-project?rev=175649&view=rev > Log: > Process and handle attributes on conditions and for loop variables. > Process and > diagnose attributes on alias declarations, using directives, and attribute > declarations. > > Modified: > cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td > cfe/trunk/include/clang/Parse/Parser.h > cfe/trunk/include/clang/Sema/Sema.h > cfe/trunk/lib/Parse/ParseDecl.cpp > cfe/trunk/lib/Parse/ParseDeclCXX.cpp > cfe/trunk/lib/Parse/ParseExprCXX.cpp > cfe/trunk/lib/Parse/ParseStmt.cpp > cfe/trunk/lib/Parse/Parser.cpp > cfe/trunk/lib/Sema/SemaDeclCXX.cpp > cfe/trunk/lib/Sema/SemaType.cpp > cfe/trunk/test/Parser/cxx0x-attributes.cpp > > > > ============================================================================== > --- cfe/trunk/lib/Parse/Parser.cpp (original) > +++ cfe/trunk/lib/Parse/Parser.cpp Wed Feb 20 13:22:51 2013 > @@ -566,7 +566,6 @@ bool Parser::ParseTopLevelDecl(DeclGroup > /// external-declaration: [C99 6.9], declaration: [C++ dcl.dcl] > /// function-definition > /// declaration > -/// [C++0x] empty-declaration > /// [GNU] asm-definition > /// [GNU] __extension__ external-declaration > /// [OBJC] objc-class-definition > @@ -578,8 +577,10 @@ bool Parser::ParseTopLevelDecl(DeclGroup > /// [C++] linkage-specification > /// [GNU] asm-definition: > /// simple-asm-expr ';' > +/// [C++11] empty-declaration > +/// [C++11] attribute-declaration > /// > -/// [C++0x] empty-declaration: > +/// [C++11] empty-declaration: > /// ';' > /// > /// [C++0x/GNU] 'extern' 'template' declaration > @@ -624,6 +625,13 @@ Parser::ParseExternalDeclaration(ParsedA > HandlePragmaOpenCLExtension(); > return DeclGroupPtrTy(); > case tok::semi: > + // Either a C++11 empty-declaration or attribute-declaration. > + if (attrs.Range.isValid()) { > + // FIXME: Add an AST representation for this. > + Actions.ActOnAttributeDeclaration(attrs.getList()); > + return DeclGroupPtrTy(); > + } > + > ConsumeExtraSemi(OutsideFunction); > // TODO: Invoke action for top-level semicolon. > return DeclGroupPtrTy(); > >
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
