llvm-project/clang
Douglas Gregor e9d95f1ecc Handle Objective-C type arguments.
Objective-C type arguments can be provided in angle brackets following
an Objective-C interface type. Syntactically, this is the same
position as one would provide protocol qualifiers (e.g.,
id<NSCopying>), so parse both together and let Sema sort out the
ambiguous cases. This applies both when parsing types and when parsing
the superclass of an Objective-C class, which can now be a specialized
type (e.g., NSMutableArray<T> inherits from NSArray<T>).

Check Objective-C type arguments against the type parameters of the
corresponding class. Verify the length of the type argument list and
that each type argument satisfies the corresponding bound.

Specializations of parameterized Objective-C classes are represented
in the type system as distinct types. Both specialized types (e.g.,
NSArray<NSString *> *) and unspecialized types (NSArray *) are
represented, separately.

llvm-svn: 241542
2015-07-07 03:57:35 +00:00
..
INPUTS
bindings [libclang] Add functions to get information about fields. 2015-04-13 16:55:04 +00:00
cmake/modules Make it easier to build against a pre-built Clang package with CMake 2014-11-05 23:14:59 +00:00
docs Grammar bug. NFC 2015-07-06 15:25:31 +00:00
examples Fixing a build bot break from r240400. 2015-06-23 13:29:33 +00:00
include Handle Objective-C type arguments. 2015-07-07 03:57:35 +00:00
lib Handle Objective-C type arguments. 2015-07-07 03:57:35 +00:00
runtime [UBSan] Use shared library for UBSan on OS X (Clang part). 2015-03-23 23:14:05 +00:00
test Handle Objective-C type arguments. 2015-07-07 03:57:35 +00:00
tools Handle Objective-C type arguments. 2015-07-07 03:57:35 +00:00
unittests clang-format: [JS] Properly reset parse state after parsing interface. 2015-07-06 14:26:04 +00:00
utils [TableGen] Change a couple methods to return an ArrayRef instead of a const std::vector reference. NFC 2015-07-06 06:23:06 +00:00
www DR1909: Diagnose all invalid cases of a class member sharing its name with the class. 2015-07-06 01:45:27 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore [.gitignore] ignore vim swap files harder 2015-06-17 02:21:35 +00:00
CMakeLists.txt Use Clang version numbers for the Windows VERSIONINFO resource. 2015-06-12 16:33:38 +00:00
CODE_OWNERS.TXT List Alexey Bataev as code owner for Clang's OpenMP support, as discussed offline. 2015-05-12 20:29:41 +00:00
INSTALL.txt
LICENSE.TXT Update copyright year to 2015. 2015-03-12 01:36:10 +00:00
Makefile
ModuleInfo.txt
NOTES.txt
README.txt Reverting test commit. 2015-04-10 08:43:58 +00:00

README.txt

//===----------------------------------------------------------------------===//
// C Language Family Front-end
//===----------------------------------------------------------------------===//

Welcome to Clang.  This is a compiler front-end for the C family of languages
(C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM
compiler infrastructure project.

Unlike many other compiler frontends, Clang is useful for a number of things
beyond just compiling code: we intend for Clang to be host to a number of
different source-level tools.  One example of this is the Clang Static Analyzer.

If you're interested in more (including how to build Clang) it is best to read
the relevant web sites.  Here are some pointers:

Information on Clang:              http://clang.llvm.org/
Building and using Clang:          http://clang.llvm.org/get_started.html
Clang Static Analyzer:             http://clang-analyzer.llvm.org/
Information on the LLVM project:   http://llvm.org/

If you have questions or comments about Clang, a great place to discuss them is
on the Clang development mailing list:
  http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev

If you find a bug in Clang, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/