diff --git a/clang/docs/LibASTMatchersReference.html b/clang/docs/LibASTMatchersReference.html --- a/clang/docs/LibASTMatchersReference.html +++ b/clang/docs/LibASTMatchersReference.html @@ -573,15 +573,6 @@
Matches class bases.
-
-Examples matches public virtual B.
- class B {};
- class C : public virtual B {};
-Matches attributes. Attributes may be attached with a variety of different syntaxes (including @@ -600,6 +591,15 @@
Matches class bases.
+
+Examples matches public virtual B.
+ class B {};
+ class C : public virtual B {};
+Matches constructor initializers. @@ -1160,6 +1160,16 @@ matches using namespace X
Matches using-enum declarations.
+
+Given
+ namespace X { enum x {...}; }
+ using enum X::x;
+usingEnumDecl()
+ matches using enum X::x Matches any value declaration. @@ -3031,6 +3041,10 @@
Matches constructor declarations that are move constructors. @@ -3779,7 +3793,7 @@Matcher<Decl> isExpandedFromMacro std::string MacroName @@ -5232,7 +5246,7 @@ Matches statements that are (transitively) expanded from the named macro. Does not match if only part of the statement is expanded from that macro or -if different parts of the the statement are expanded from different +if different parts of the statement are expanded from different appearances of the macro.Matcher<TypeLoc> isExpandedFromMacro std::string MacroName @@ -6060,6 +6074,16 @@ Matches statements that are (transitively) expanded from the named macro. Does not match if only part of the statement is expanded from that macro or -if different parts of the the statement are expanded from different +if different parts of the statement are expanded from different appearances of the macro.
Matches any using shadow declaration.
+
+Given
+ namespace X { void b(); }
+ using X::b;
+usingDecl(hasAnyUsingShadowDecl(hasName("b"))))
+ matches using X::b Matches if either the left hand side or the right hand side of a
binary operator matches.
@@ -7463,7 +7487,7 @@
}
}
-cxxRecordDecl(hasDeclContext(namedDecl(hasName("M")))) matches the
+cxxRcordDecl(hasDeclContext(namedDecl(hasName("M")))) matches the
declaration of class D.
Matches any using shadow declaration.
-
-Given
- namespace X { void b(); }
- using X::b;
-usingDecl(hasAnyUsingShadowDecl(hasName("b"))))
- matches using X::b Matches a using shadow declaration where the target declaration is
matched by the given matcher.
diff --git a/clang/docs/tools/dump_ast_matchers.py b/clang/docs/tools/dump_ast_matchers.py
--- a/clang/docs/tools/dump_ast_matchers.py
+++ b/clang/docs/tools/dump_ast_matchers.py
@@ -10,6 +10,12 @@
except ImportError:
from urllib2 import urlopen
+CLASS_INDEX_PAGE_URL = 'https://clang.llvm.org/doxygen/classes.html'
+try:
+ CLASS_INDEX_PAGE = urlopen(CLASS_INDEX_PAGE_URL).read()
+except Exception as e:
+ raise Exception('Unable to get %s: %s' % (CLASS_INDEX_PAGE_URL, e))
+
MATCHERS_FILE = '../../include/clang/ASTMatchers/ASTMatchers.h'
# Each matcher is documented in one row of the form:
@@ -40,15 +46,18 @@
text = re.sub(r'<', '<', text)
text = re.sub(r'>', '>', text)
def link_if_exists(m):
+ """Wrap a likely AST node name in a link to its clang docs.
+
+ We want to do this only if the page exists, in which case it will be
+ referenced from the class index page.
+ """
name = m.group(1)
url = 'https://clang.llvm.org/doxygen/classclang_1_1%s.html' % name
if url not in doxygen_probes:
- try:
- print('Probing %s...' % url)
- urlopen(url)
- doxygen_probes[url] = True
- except:
- doxygen_probes[url] = False
+ search_str = 'href="classclang_1_1%s.html"' % name
+ doxygen_probes[url] = search_str in CLASS_INDEX_PAGE
+ if not doxygen_probes[url]:
+ print('Did not find %s in class index page' % name)
if doxygen_probes[url]:
return r'Matcher<%s>' % (url, name)
else: