[cfe-dev] DeclGroup Stuff

Chris Lattner clattner at apple.com
Sun Mar 29 09:59:51 PDT 2009


Hi All,

I just landed a bunch of declgroup stuff (yay), but there are two  
outstanding issues:

1) Ted, now that DeclGroups have landed, there is no need to chase the  
NextDeclarator chain in StmtIterator.  I think it can be substantially  
simplified, I did a minimal hack and added a fixme. Please investigate  
to see if it can get even simpler.

2) Doug (and other C++ folks), I added a truly awful hack to  
SemaTemplate.cpp, which only works because of the current bit layout  
of DeclPtrTy and DeclGroupPtrTy.  The basic issue is that clang  
currently accepts malformed code like:

template<typename X> int Y, Z;

(and similar examples with one variable, for that matter).

I am pretty sure that you can never have multiple declarators after a  
template specifier like this.  However, the code in ParseTemplate.cpp  
that handles this just calls into  
ParseDeclarationOrFunctionDefinition, which can parse multiple  
declarators like the above.

I think the best thing to do here is to change  
ParseTemplateDeclarationOrSpecialization to call something like  
ParseDeclarationOrFunctionDefinition that is known to never return  
multiple decls.  This could be typed as returning DeclPtrTy instead of  
DeclGroupPtrTy.

Another approach would be to call  
ParseDeclarationOrFunctionDefinition, then doing some sema to make  
sure that there is only one decl in it.  The sema action would take  
the DeclGroup returned by ParseDeclarationOrFunctionDefinition,  
validate it, then returns a single Decl back.

Can you take a look? :)

-Chris



More information about the cfe-dev mailing list