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 | 7df342a4d1a6400646d7403104f840c218b0661d (patch) | |
tree | 63f41e4161256fd8108ec54d7fb5254dfa8c4631 /clang/docs | |
parent | e913b956aa90a2ab7b9723b804617548827c11d7 (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
llvm-svn: 349349
Diffstat (limited to 'clang/docs')
-rw-r--r-- | clang/docs/LibASTMatchersReference.html | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/clang/docs/LibASTMatchersReference.html b/clang/docs/LibASTMatchersReference.html index 28017cab39d5..27cb00b6bdfc 100644 --- a/clang/docs/LibASTMatchersReference.html +++ b/clang/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. |