etienneb requested changes to this revision. etienneb added a comment. This revision now requires changes to proceed.
If the 'original' size is available, the checkers should by-pass the heuristic. Can you check if there is a way to get the original size. ================ Comment at: clang-tidy/misc/SuspiciousMissingCommaCheck.cpp:106 @@ +105,3 @@ + if (InitializerList->hasArrayFiller()) { + diag(InitializerList->getExprLoc(), + "wrong string array initialization: " ---------------- szdominik wrote: > etienneb wrote: > > The error should still be reported to the missing comma (concatenated > > token): > > ConcatenatedLiteral->getLocStart(), > > > > We could add a NOTE to point to the array, stating that the size mismatch. > > > > What do you think? > Interesting question (the first idea was that we can't decide that the comma > is missing or the size is wrong, so report to the array, that's a more secure > solution), but I agree that the note could be more effective. > And... it's still a suspicious-missing-comma checker, not a > wrong-string-array-size checker :) How can you be sure the size was provided by the user? And not inferred by the type system? For the following examples: ``` const char* listA[] = {"a", "b" }; const char* listB[5] = {"a", "b" }; ``` We've got this: ``` VarDecl 0x5e9d840 <C:\src\llvm\examples\hello_world.cc:11:1, col:33> col:13 listA 'const char *[2]' cinit `-InitListExpr 0x5e9d950 <col:23, col:33> 'const char *[2]' |-ImplicitCastExpr 0x5e9d978 <col:24> 'const char *' <ArrayToPointerDecay> | `-StringLiteral 0x5e9d8d8 <col:24> 'const char [2]' lvalue "a" `-ImplicitCastExpr 0x5e9d988 <col:29> 'const char *' <ArrayToPointerDecay> `-StringLiteral 0x5e9d8fc <col:29> 'const char [2]' lvalue "b" ``` ``` VarDecl 0x5e9d840 <C:\src\llvm\examples\hello_world.cc:11:1, col:33> col:13 listA 'const char *[2]' cinit `-InitListExpr 0x5e9d950 <col:23, col:33> 'const char *[2]' |-ImplicitCastExpr 0x5e9d978 <col:24> 'const char *' <ArrayToPointerDecay> | `-StringLiteral 0x5e9d8d8 <col:24> 'const char [2]' lvalue "a" `-ImplicitCastExpr 0x5e9d988 <col:29> 'const char *' <ArrayToPointerDecay> `-StringLiteral 0x5e9d8fc <col:29> 'const char [2]' lvalue "b" ``` How can I tell the "size" was written by the user? How can you get the "5" and not the "2". http://reviews.llvm.org/D19769 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits