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: