llvm-project/clang/lib/Lex
Andy Gibbs 50b6ceff1f Consolidate and improve the handling of built-in feature-like macros
Summary:
The parsing logic has been separated out from the macro implementation logic, leading to a number of improvements:

* Gracefully handle unexpected/invalid tokens, too few, too many and nested parameters
* Provide consistent behaviour between all built-in feature-like macros
* Simplify the implementation of macro logic
* Fix __is_identifier to correctly return '0' for non-identifiers

Reviewers: doug.gregor, rsmith

Subscribers: rsmith, cfe-commits

Differential Revision: http://reviews.llvm.org/D17149

llvm-svn: 265381
2016-04-05 08:36:47 +00:00
..
CMakeLists.txt [CMake] Use LINK_LIBS instead of target_link_libraries(). 2014-02-26 06:41:29 +00:00
HeaderMap.cpp Lex: Return "" when HeaderMap::lookupFilename fails 2016-02-23 00:48:16 +00:00
HeaderSearch.cpp Move LocInfoType from Sema to AST. 2016-02-01 17:42:01 +00:00
Lexer.cpp [Lexer] Let the compiler infer string lengths. No functionality change intended. 2016-04-01 10:04:07 +00:00
LiteralSupport.cpp Update diagnostics now that hexadecimal literals look likely to be part of C++17. 2016-03-04 22:32:06 +00:00
MacroArgs.cpp [modules] Stop trying to fake up a linear MacroDirective history. 2015-04-29 23:20:19 +00:00
MacroInfo.cpp Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 19:38:18 +00:00
ModuleMap.cpp [CrashReproducer] Add a module map callback for added headers 2016-03-30 23:54:25 +00:00
PPCaching.cpp [Parser] Update CachedTokens while parsing ObjectiveC template argument list 2016-01-31 00:47:51 +00:00
PPCallbacks.cpp
PPConditionalDirectiveRecord.cpp Switch PPCallbacks to take the new MacroDefinition instead of MacroDirective*, in order to preserve full information on module macro expansion. 2015-05-04 03:15:40 +00:00
PPDirectives.cpp Diagnose missing macro argument following charize operator. 2016-04-01 19:02:20 +00:00
PPExpressions.cpp Remove use of builtin comma operator. 2016-02-18 22:34:54 +00:00
PPLexerChange.cpp PR24667: fix quadratic runtime if textually-included modular headers define large numbers of macros. 2016-02-23 23:20:51 +00:00
PPMacroExpansion.cpp Consolidate and improve the handling of built-in feature-like macros 2016-04-05 08:36:47 +00:00
PTHLexer.cpp Roll-back r250822. 2015-10-20 13:23:58 +00:00
Pragma.cpp Add a PragmaHandler Registry for plugins to add PragmaHandlers to 2016-04-04 14:22:58 +00:00
PreprocessingRecord.cpp Roll-back r250822. 2015-10-20 13:23:58 +00:00
Preprocessor.cpp AnnotateFunctions: Tweak for mingw. 2016-04-04 15:30:44 +00:00
PreprocessorLexer.cpp Make Preprocessor::Lex non-recursive. 2013-09-19 00:41:32 +00:00
ScratchBuffer.cpp MSan told me that we actually dump the entire scratch buffer into PCH files, initialize it. 2015-04-06 20:01:49 +00:00
TokenConcatenation.cpp [clang] Refactoring of conditions so they use isOneOf() instead of multiple is(). 2015-06-18 10:59:26 +00:00
TokenLexer.cpp Fix remaining Clang-tidy readability-redundant-control-flow warnings; other minor fixes. 2016-02-12 22:53:10 +00:00
UnicodeCharSets.h Header guard canonicalization, clang part. 2014-08-13 16:25:19 +00:00