poelmanc added a comment.

Just documenting here that I sent the following email to cfe-...@lists.llvm.org:

> When parsing a named declaration with an equals sign with clang -std 
> c++11/14, clang builds an initializer expression whose SourceRange covers 
> from the variable name through the end of the initial value:
> 
>   std::string foo = "bar";
>               ^~~~~~~~~~~
> 
> When parsing the same code with clang -std c++17/2x, the initializer 
> expression's SourceRange only includes the initial value itself, and not the 
> variable name or the equals sign:
> 
>   std::string foo = "bar";
>                     ^~~~~
> 
> If the string is initialized using parentheses rather than an equals sign, in 
> all of c++11/14/17/2x the initializer expression's SourceRange includes the 
> variable name and both parentheses:
> 
>   std::string foo("bar");
>               ^~~~~~~~~~
> 
> This difference has broken clang-tidy's readability-remove-redundant-string 
> for c++17 and c++2x, as described in at reviews.llvm.org/D69238 
> <https://reviews.llvm.org/D69238>. Is this SourceRange difference 
> intentional, and if not does anyone have thoughts on how to make the 
> SourceRange consistent across C++ standards? Thanks!
> 
> P.S. I've tried stepping through clang-tidy parsing the `std::string a = "";` 
> line in 
> `clang-tools-extra/test/clang-tidy/checkers/readability-redundant-string-init.cpp`
>  with -std=c++11 and again with -std=c++17. In both cases 
> `Sema::AddInitializerToDecl` seems to create a correct `InitializationKind` 
> with the `Locations[0]` properly pointing to the start of the variable name. 
> I'm not sure how or where that gets translated to the expression's 
> SourceRange later on in some way that presumably differs between c++11 and 
> c++17. If this SourceRange difference is unintentional and needs to be 
> tracked down and fixed, any tips on where to look would be appreciated.

I didn't receive any email responses, I believe it prompted @NoQ to look this 
over and comment - thanks!


Repository:
  rCTE Clang Tools Extra

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69238/new/

https://reviews.llvm.org/D69238



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to