diff options
author | Gabor Marton <martongabesz@gmail.com> | 2018-12-17 12:42:12 +0000 |
---|---|---|
committer | Gabor Marton <martongabesz@gmail.com> | 2018-12-17 12:42:12 +0000 |
commit | b533efb62cddf6fa272689b548fb1ab7f518bfe7 (patch) | |
tree | f6a1807f10367d8376bc89a8a2fbe0f1e53a998b /docs/LibASTMatchersReference.html | |
parent | 67d5e1ae731d8f9992a01a92cd3c47d745315af9 (diff) |
[ASTImporter] Fix redecl chain of classes and class templates
Summary:
The crux of the issue that is being fixed is that lookup could not find
previous decls of a friend class. The solution involves making the
friend declarations visible in their decl context (i.e. adding them to
the lookup table).
Also, we simplify `VisitRecordDecl` greatly.
This fix involves two other repairs (without these the unittests fail):
(1) We could not handle the addition of injected class types properly
when a redecl chain was involved, now this is fixed.
(2) DeclContext::removeDecl failed if the lookup table in Vector form
did not contain the to be removed element. This caused troubles in
ASTImporter::ImportDeclContext. This is also fixed.
Reviewers: a_sidorin, balazske, a.sidorin
Subscribers: rnkovacs, dkrupp, Szelethus, cfe-commits
Differential Revision: https://reviews.llvm.org/D53655
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@349349 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/LibASTMatchersReference.html')
-rw-r--r-- | docs/LibASTMatchersReference.html | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/docs/LibASTMatchersReference.html b/docs/LibASTMatchersReference.html index 28017cab39..27cb00b6bd 100644 --- a/docs/LibASTMatchersReference.html +++ b/docs/LibASTMatchersReference.html @@ -300,6 +300,16 @@ Example matches f </pre></td></tr> +<tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('indirectFieldDecl0')"><a name="indirectFieldDecl0Anchor">indirectFieldDecl</a></td><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1IndirectFieldDecl.html">IndirectFieldDecl</a>>...</td></tr> +<tr><td colspan="4" class="doc" id="indirectFieldDecl0"><pre>Matches indirect field declarations. + +Given + struct X { struct { int a; }; }; +indirectFieldDecl() + matches 'a'. +</pre></td></tr> + + <tr><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1Decl.html">Decl</a>></td><td class="name" onclick="toggle('labelDecl0')"><a name="labelDecl0Anchor">labelDecl</a></td><td>Matcher<<a href="https://clang.llvm.org/doxygen/classclang_1_1LabelDecl.html">LabelDecl</a>>...</td></tr> <tr><td colspan="4" class="doc" id="labelDecl0"><pre>Matches a declaration of label. |