On 2017-06-19 10:30 -0600, Martin Sebor wrote: > On 06/11/2017 07:34 PM, Xi Ruoyao wrote: > > This patch adds warning option -Wstring-plus-char for C/C++. > > > > +void > +warn_if_string_plus_char (location_t loc, tree ptrtype, tree inttype) > +{ > + if (POINTER_TYPE_P (ptrtype) > + && type_main_variant_is_char (TREE_TYPE (ptrtype)) > + && type_main_variant_is_char (inttype)) > + warning_at (loc, OPT_Wstring_plus_char, > + "add %qT to string pointer %qT does not append " > + "to the string", inttype, ptrtype); > > The text of the warning doesn't read like a grammatically correct > sentence. ("Adding a to b" would be correct.)
Yes. It's a typo. > That said, I wonder if it should also be made more accurate. > Based on c-c++-common/Wstring-plus-char.c for the snippet below > > char *a; > const char *b; > const char c = 'c'; > const char *d = a + c; > > it will print > > warning: add 'char' to 'char *' does not append to the string > > even though no string is apparent or need to exist in the program > (a could point to an array of chars with no terminating NUL). > I see Clang prints something similar (modulo the bad grammar) but > I think it might be clearer if the warning instead read something > like: > > adding 'char' to 'char *' does not append to a string > > or (if the warning were to trigger only for character constants > like in Clang): > > adding 'char' to 'char *' does not append 'c' to the first operand Clang 4.0 only warns for character constants. But Clang 5.0 (pre-release) also warns for variables with type char. Which option should we take? Maybe -Wstring-plus-char={1,2} ? > i.e., if the warning also included the value of the character > constant. > > Martin -- Xi Ruoyao <r...@stu.xidian.edu.cn> School of Aerospace Science and Technology, Xidian University