Skip to content

Commit 09a4217

Browse files
committed
Parse symbols with qualified name (not sure if it works in this revision)
1 parent 8538819 commit 09a4217

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

clang/tools/include-mapping/cppreference_parser.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def _HasClass(tag, *classes):
4040
return False
4141

4242

43-
def _ParseSymbolPage(symbol_page_html, symbol_name):
43+
def _ParseSymbolPage(symbol_page_html, symbol_name, qual_name):
4444
"""Parse symbol page and retrieve the include header defined in this page.
4545
The symbol page provides header for the symbol, specifically in
4646
"Defined in header <header>" section. An example:
@@ -69,7 +69,7 @@ def _ParseSymbolPage(symbol_page_html, symbol_name):
6969
was_decl = True
7070
# Symbols are in the first cell.
7171
found_symbols = row.find("td").stripped_strings
72-
if not symbol_name in found_symbols:
72+
if not (symbol_name in found_symbols or qual_name in found_symbols):
7373
continue
7474
headers.update(current_headers)
7575
elif _HasClass(row, "t-dsc-header"):
@@ -137,9 +137,9 @@ def _ParseIndexPage(index_page_html):
137137
return symbols
138138

139139

140-
def _ReadSymbolPage(path, name):
140+
def _ReadSymbolPage(path, name, qual_name):
141141
with open(path) as f:
142-
return _ParseSymbolPage(f.read(), name)
142+
return _ParseSymbolPage(f.read(), name, qual_name)
143143

144144

145145
def _GetSymbols(pool, root_dir, index_page_name, namespace, variants_to_accept):
@@ -161,8 +161,9 @@ def _GetSymbols(pool, root_dir, index_page_name, namespace, variants_to_accept):
161161
for symbol_name, symbol_page_path, variant in _ParseIndexPage(f.read()):
162162
# Variant symbols (e.g. the std::locale version of isalpha) add ambiguity.
163163
# FIXME: use these as a fallback rather than ignoring entirely.
164+
qualified_symbol_name = (namespace or "") + symbol_name
164165
variants_for_symbol = variants_to_accept.get(
165-
(namespace or "") + symbol_name, ()
166+
qualified_symbol_name, ()
166167
)
167168
if variant and variant not in variants_for_symbol:
168169
continue
@@ -171,7 +172,7 @@ def _GetSymbols(pool, root_dir, index_page_name, namespace, variants_to_accept):
171172
results.append(
172173
(
173174
symbol_name,
174-
pool.apply_async(_ReadSymbolPage, (path, symbol_name)),
175+
pool.apply_async(_ReadSymbolPage, (path, symbol_name, qualified_symbol_name)),
175176
)
176177
)
177178
else:

0 commit comments

Comments
 (0)