llvm-project/clang
Douglas Gregor 10dc9d80cb Warn when an intended Objective-C specialization was actually a useless protocol qualification.
Warn in cases where one has provided redundant protocol qualification
that might be a typo for a specialization, e.g., NSArray<NSObject>,
which is pointless (NSArray declares that it conforms to NSObject) and
is likely to be a typo for NSArray<NSObject *>, i.e., an array of
NSObject pointers. This warning is very narrow, only applying when the
base type being qualified is parameterized, has the same number of
parameters as their are protocols listed, all of the names can also
refer to types (including Objective-C class types, of course), and at
least one of those types is an Objective-C class (making this a typo
for a missing '*'). The limitations are partly for performance reasons
(we don't want to do redundant name lookup unless we really need to),
and because we want the warning to apply in very limited cases to
limit false positives.

Part of rdar://problem/6294649.

llvm-svn: 241547
2015-07-07 03:58:28 +00:00
..
INPUTS
bindings [libclang] Add functions to get information about fields. 2015-04-13 16:55:04 +00:00
cmake/modules
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 Warn when an intended Objective-C specialization was actually a useless protocol qualification. 2015-07-07 03:58:28 +00:00
lib Warn when an intended Objective-C specialization was actually a useless protocol qualification. 2015-07-07 03:58:28 +00:00
runtime [UBSan] Use shared library for UBSan on OS X (Clang part). 2015-03-23 23:14:05 +00:00
test Warn when an intended Objective-C specialization was actually a useless protocol qualification. 2015-07-07 03:58:28 +00:00
tools C++ support for Objective-C lightweight generics. 2015-07-07 03:58:14 +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/