llvm-project/clang
Manuel Klimek 696e505278 Unify and simplify the behavior of the hasDeclaration matcher.
Originally, we weren't able to match on Type nodes themselves (only QualType),
so the hasDeclaration matcher was initially written to give what we thought are
reasonable results for QualType matches.

When we chagned the matchers to allow matching on Type nodes, it turned out
that the hasDeclaration matcher was by chance written templated enough to now
allow hasDeclaration to also match on (some) Type nodes.

This patch change the hasDeclaration matcher to:
a) work the same on Type and QualType nodes,
b) be completely explicit about what nodes we can match instead of just allowing
   anything with a getDecl() to match,
c) explicitly control desugaring only one level in very specific instances.
d) adds hasSpecializedTemplate and tagType matchers to allow migrating
  existing use cases that now need more explicit matchers

Note: This patch breaks clang-tools-extra. The corresponding patch there
is approved and will land in a subsequent patch.

Differential Revision: https://reviews.llvm.org/D27104

llvm-svn: 309809
2017-08-02 13:04:44 +00:00
..
INPUTS
bindings [libclang] Support for querying whether an enum is scoped 2017-07-12 11:35:11 +00:00
cmake [CMake] Include llvm-objcopy tool in Fuchsia toolchain 2017-08-02 02:49:09 +00:00
docs Unify and simplify the behavior of the hasDeclaration matcher. 2017-08-02 13:04:44 +00:00
examples Add LLVMOption to clang-interpreter, corresponding to r291938. 2017-01-14 08:54:05 +00:00
include Unify and simplify the behavior of the hasDeclaration matcher. 2017-08-02 13:04:44 +00:00
lib [StaticAnalyzer] Fix false positives for unreachable code in macros. 2017-08-02 08:26:56 +00:00
runtime [sanitizer] Passthrough CMAKE_OSX_DEPLOYMENT_TARGET and CMAKE_OSX_SYSROOT when building compiler-rt from clang/runtime/CMakeLists.txt 2016-12-15 23:20:54 +00:00
test [StaticAnalyzer] Fix false positives for unreachable code in macros. 2017-08-02 08:26:56 +00:00
tools [CMake][Modules] libclang: Ignore _CINDEX_LIB_ and CLANG_TOOL_EXTRA_BUILD for -fmodules. 2017-07-31 11:45:20 +00:00
unittests Unify and simplify the behavior of the hasDeclaration matcher. 2017-08-02 13:04:44 +00:00
utils [Bash-autocompletion] Show HelpText with possible flags 2017-07-26 13:36:58 +00:00
www [analyzer] Add missing documentation for static analyzer checkers 2017-07-18 00:34:57 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt [CMake] NFC. Add clang-tablegen-targets utility target 2017-07-28 15:33:47 +00:00
CODE_OWNERS.TXT
INSTALL.txt
LICENSE.TXT
ModuleInfo.txt
NOTES.txt
README.txt Remove test commit. 2017-06-30 03:03:28 +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.llvm.org/mailman/listinfo/cfe-dev

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