On Tue, Jul 23, 2013 at 11:01 AM, Richard Trieu <[email protected]> wrote: > Author: rtrieu > Date: Tue Jul 23 13:01:49 2013 > New Revision: 186971 > > URL: http://llvm.org/viewvc/llvm-project?rev=186971&view=rev > Log: > Add new diagnostic messages when too many arguments are presented to a > function-like macro. Clang will attempt to correct the arguments by detecting > braced initializer lists: > > 1) If possible, suggest parentheses around arguments > containing braced lists which will give the proper number of arguments. > 2) If a braced list is detected at the start of a macro argument, it cannot be > corrected by parentheses. Instead, just point out the location of these > braced lists. > > Added: > cfe/trunk/test/Preprocessor/macro_with_initializer_list.cpp > Modified: > cfe/trunk/include/clang/Basic/Diagnostic.h > cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td > cfe/trunk/lib/Lex/PPMacroExpansion.cpp > cfe/trunk/test/Preprocessor/macro_fn.c > > Modified: cfe/trunk/include/clang/Basic/Diagnostic.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Diagnostic.h?rev=186971&r1=186970&r2=186971&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Basic/Diagnostic.h (original) > +++ cfe/trunk/include/clang/Basic/Diagnostic.h Tue Jul 23 13:01:49 2013 > @@ -990,6 +990,10 @@ public: > bool hasMaxRanges() const { > return NumRanges == DiagnosticsEngine::MaxRanges; > } > + > + bool hasMaxFixItHints() const { > + return NumFixits == DiagnosticsEngine::MaxFixItHints; > + } > }; > > inline const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, > > Modified: cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td?rev=186971&r1=186970&r2=186971&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td (original) > +++ cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td Tue Jul 23 13:01:49 > 2013 > @@ -460,6 +460,11 @@ def err_unterm_macro_invoc : Error< > "unterminated function-like macro invocation">; > def err_too_many_args_in_macro_invoc : Error< > "too many arguments provided to function-like macro invocation">; > +def note_suggest_parens_for_macro : Note< > + "parentheses are required around macro argument containing braced " > + "initializer list">; > +def note_init_list_at_beginning_of_macro_argument : Note< > + "cannot use initializer list at the beginning of an macro argument">;
Nit: s/an/a/ _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
