[clang] [include-cleaner] Support multi-header symbols in mapping generator (PR #147720)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 28 02:36:03 PDT 2025
=?utf-8?q?Ildikó?= Cseri <cseriildiko at icloud.com>,
=?utf-8?q?Ildikó?= Cseri <cseriildiko at icloud.com>
Message-ID:
In-Reply-To: <llvm.org/llvm/llvm-project/pull/147720 at github.com>
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {darker}-->
:warning: Python code formatter, darker found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
darker --check --diff -r HEAD~1...HEAD clang/tools/include-mapping/cppreference_parser.py clang/tools/include-mapping/gen_std.py clang/tools/include-mapping/test.py
``````````
</details>
<details>
<summary>
View the diff from darker here.
</summary>
``````````diff
--- cppreference_parser.py 2025-07-24 11:15:44.000000 +0000
+++ cppreference_parser.py 2025-07-28 09:35:35.335551 +0000
@@ -196,11 +196,13 @@
# Build map from symbol name to a set of headers.
symbol_headers = collections.defaultdict(list)
for symbol_name, lazy_headers in results:
headers = lazy_headers.get()
- if symbol_name in symbol_headers and set(symbol_headers[symbol_name]) != set(headers):
+ if symbol_name in symbol_headers and set(
+ symbol_headers[symbol_name]
+ ) != set(headers):
symbol_headers[symbol_name] = []
continue
for header in headers:
if header not in symbol_headers[symbol_name]:
symbol_headers[symbol_name].append(header)
--- gen_std.py 2025-07-24 11:15:44.000000 +0000
+++ gen_std.py 2025-07-28 09:35:35.403800 +0000
@@ -231,25 +231,32 @@
return
if len(symbol.headers) == 1:
augmented_symbols = [symbol]
else:
- augmented_symbols = [cppreference_parser.Symbol(
- symbol.name,
- None if header.endswith(".h>") else symbol.namespace,
- [header])
- for header in symbol.headers]
+ augmented_symbols = [
+ cppreference_parser.Symbol(
+ symbol.name,
+ None if header.endswith(".h>") else symbol.namespace,
+ [header],
+ )
+ for header in symbol.headers
+ ]
# Add C compatibility symbols
- augmented_symbols.extend([csymbol
- for s in augmented_symbols
- for csymbol in GetCCompatibilitySymbols(s)])
+ augmented_symbols.extend(
+ [csymbol for s in augmented_symbols for csymbol in GetCCompatibilitySymbols(s)]
+ )
# Add additional headers for IO symbols
- augmented_symbols.extend([cppreference_parser.Symbol(s.name, s.namespace, [header])
- for s in augmented_symbols
- for header in AdditionalHeadersForIOSymbols(s)])
+ augmented_symbols.extend(
+ [
+ cppreference_parser.Symbol(s.name, s.namespace, [header])
+ for s in augmented_symbols
+ for header in AdditionalHeadersForIOSymbols(s)
+ ]
+ )
for s in augmented_symbols:
# SYMBOL(unqualified_name, namespace, header)
print("SYMBOL(%s, %s, %s)" % (s.name, s.namespace, s.headers[0]))
@@ -286,12 +293,14 @@
(symbol_index_root, "macro.html", None),
]
elif args.symbols == "c":
page_root = os.path.join(args.cppreference, "en", "c")
symbol_index_root = os.path.join(page_root, "symbol_index")
- parse_pages = [(page_root, "index.html", None),
- (symbol_index_root, "macro.html", None)]
+ parse_pages = [
+ (page_root, "index.html", None),
+ (symbol_index_root, "macro.html", None),
+ ]
if not os.path.exists(symbol_index_root):
exit("Path %s doesn't exist!" % symbol_index_root)
symbols = cppreference_parser.GetSymbols(parse_pages)
--- test.py 2025-07-24 11:15:44.000000 +0000
+++ test.py 2025-07-28 09:35:35.432213 +0000
@@ -143,12 +143,10 @@
<td>this is matched</td>
</tr>
</tbody></table>
"""
self.assertEqual(_ParseSymbolPage(html, "int8_t", "int8_t"), ["<cstdint>"])
- self.assertEqual(
- _ParseSymbolPage(html, "int16_t", "int16_t"), ["<cstdint>"]
- )
+ self.assertEqual(_ParseSymbolPage(html, "int16_t", "int16_t"), ["<cstdint>"])
if __name__ == "__main__":
unittest.main()
``````````
</details>
https://github.com/llvm/llvm-project/pull/147720
More information about the cfe-commits
mailing list