llvm-project/clang/lib/Lex
Douglas Gregor 9bda6cff20 C++ support for Objective-C lightweight generics.
Teach C++'s tentative parsing to handle specializations of Objective-C
class types (e.g., NSArray<NSString *>) as well as Objective-C
protocol qualifiers (id<NSCopying>) by extending type-annotation
tokens to handle this case. As part of this, remove Objective-C
protocol qualifiers from the declaration specifiers, which never
really made sense: instead, provide Sema entry points to make them
part of the type annotation token. Among other things, this properly
diagnoses bogus types such as "<NSCopying> id" which should have been
written as "id <NSCopying>".

Implements template instantiation support for, e.g., NSArray<T>*
in C++. Note that parameterized classes are not templates in the C++
sense, so that cannot (for example) be used as a template argument for
a template template parameter. Part of rdar://problem/6294649.

llvm-svn: 241545
2015-07-07 03:58:14 +00:00
..
CMakeLists.txt [CMake] Use LINK_LIBS instead of target_link_libraries(). 2014-02-26 06:41:29 +00:00
HeaderMap.cpp Make VFS and FileManager match the current MemoryBuffer API. 2014-10-26 22:44:13 +00:00
HeaderSearch.cpp [Modules] Be consistent about finding a module for framework headers 2015-07-02 13:19:48 +00:00
Lexer.cpp Replace a few std::string& with StringRef. NFC. 2015-06-01 20:00:16 +00:00
LiteralSupport.cpp [lex] Don't read past the end of the buffer 2015-03-29 14:11:37 +00:00
MacroArgs.cpp [modules] Stop trying to fake up a linear MacroDirective history. 2015-04-29 23:20:19 +00:00
MacroInfo.cpp [modules] Add a mechanism to dump information about a macro. 2015-04-30 23:10:40 +00:00
Makefile
ModuleMap.cpp [Modules] Be consistent about finding a module for framework headers 2015-07-02 13:19:48 +00:00
PPCaching.cpp Fix the build break introduced by r195799 by restoring two close 2013-11-27 01:40:12 +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 [modules] Make the include guard optimization fire a bit more when considering 2015-07-01 01:51:38 +00:00
PPExpressions.cpp Revert r240270 ("Fixed/added namespace ending comments using clang-tidy"). 2015-06-22 23:07:51 +00:00
PPLexerChange.cpp [modules] Make sure macros get made visible in the top-level file if we've got 2015-06-30 21:29:55 +00:00
PPMacroExpansion.cpp C++ support for Objective-C lightweight generics. 2015-07-07 03:58:14 +00:00
PTHLexer.cpp Revert r240270 ("Fixed/added namespace ending comments using clang-tidy"). 2015-06-22 23:07:51 +00:00
Pragma.cpp Revert r240270 ("Fixed/added namespace ending comments using clang-tidy"). 2015-06-22 23:07:51 +00:00
PreprocessingRecord.cpp Revert r240270 ("Fixed/added namespace ending comments using clang-tidy"). 2015-06-22 23:07:51 +00:00
Preprocessor.cpp [Preprocessor] Iterating over all macros should include those from modules. 2015-06-24 19:27:02 +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 [clang] Refactoring of conditions so they use isOneOf() instead of multiple is(). 2015-06-18 10:59:26 +00:00
UnicodeCharSets.h Header guard canonicalization, clang part. 2014-08-13 16:25:19 +00:00