If there are no objections to the patch recalled here below, we will commit it.
Enea. Il 13/01/2012 19:21, Enea Zaffanella ha scritto: > Ping. > > Il 09/01/2012 18:32, Enea Zaffanella ha scritto: >> Hello. >> >> The current AST representations for expression nodes that possibly >> include a template-id (namely, DeclRefExpr and MemberExpr, their >> DependentScope variants and their Unresolved variants) store source >> location info for: >> - the name qualifier (NestedNameSpecifierLoc); >> - the name (DeclarationNameInfo); >> - the explicit template arguments (ASTTemplateArgumentListInfo). >> >> What was missing is the source location of the (often optional, >> sometimes mandatory) template keyword that may occur between the name >> qualifier and the name itself. >> >> We would appreciate if someone could review the attached (big, but not >> really complex) patch, which is meant to add this info so as to improve >> the source-code accuracy of the AST representation. >> >> Below we summarize the relevant changes to help in the review process. >> Comments are welcome. >> >> Enea >> >> >> >> **** Changes in the AST nodes: >> >> We extend ASTTemplateArgumentListInfo so as to allow for storing the >> additional source location of the template keyword (TemplateKWLoc). >> The new structure is called ASTTemplateKWAndArgsInfo and replaces the >> old one in all the expression nodes mentioned above. >> (Note: function template specializations keep using the old >> ASTTemplateArgumentListInfo structure). >> >> In the expression nodes, the structure is allocated if the expression is >> provided with the template keyword OR the explicit template argument >> list; previously, it was not allocated if there was no explicit template >> argument list. >> >> Other changes include: helper functions for querying the new location, >> support for its (de-)serialization, changes to the pretty printer to >> exploit the knowledge that there was a template keyword. >> >> >> **** Changes in Parse: >> >> - Added a TemplateKWLoc field to TemplateIdAnnotation; >> - Modified ParseUnqualifiedId to also return the source location of the >> optionally parsed template keyword; >> - Modified a few other Parse*Id* helpers and the relevant Sema::ActOn* >> routines to add TemplateKWLoc as an additional input argument; >> >> >> **** Changes in Sema: >> >> - Many (basically trivial) changes to Sema routines so as to propagate >> the new TemplateKWLoc input argument down to the code creating the >> relevant AST nodes. The new input argument has been kept on his own on >> purpose, since it is not really part of the name qualifier or the name >> itself. Also changed the relevant routines in TreeTransform.h so as to >> propagate the info on instantiation. > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
