On Thu, Oct 2, 2014 at 2:19 AM, Richard Smith <[email protected]> wrote:
> On Wed, Oct 1, 2014 at 3:12 PM, Alexander Kornienko <[email protected]> > wrote: > >> >>! In D5528#5, @doug.gregor wrote: >> > In non-macro cases, one can extract the locations of the parentheses >> using the lexer. Personally, I don't think the benefits of being able to >> extract the locations of the parentheses efficiently or in the macro cases >> outweigh the disadvantages of bloating the AST further. >> >> For the context: this patch resulted from the discussion on D5395. >> >> I understand your concerns about bloating the AST. Some locations can be >> relatively easy found by re-lexing small parts of the input. One problem >> with this approach is that everyone who needs these locations spends time >> looking for a way to get them and then writing their own implementation. Is >> there a document or a comment describing the high-level approach to what is >> considered worthy storing in the AST? >> >> Also, it may be reasonable to add utility methods in the AST classes (or >> free-standing functions in clang/AST headers) for retrieving some less >> frequently used locations of syntactic constructs in non-macro cases (e.g. >> WhileStmt::findRParenLoc() which would find the first non-comment token >> after getCond()->getLocEnd()). What do you think? >> > > At the least, we should provide a version of Lexer::findLocationAfterToken > that finds the location *of* the token, rather than skipping past it. > > >> And while you're here, one more question related to D5395: >> what is the reason why the statements ending with a semicolon do not >> include the semicolon in their source range (with exception of the >> NullStmt)? Is it feasible to extend the source range to include it? (and >> what would you expect to break in this case?) >> > > Perhaps it's time to add an ExprStmt to represent an expression-statement, > along with the location of its semicolon. > Well, what about ContinueStmt and BreakStmt which also don't include the location of the semicolon? > > >> http://reviews.llvm.org/D5528 >> >> >>
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
