mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-21 23:20:20 +00:00
Meta: Make check-style.py complain if a non-AK complex header is used
LibC's complex.h should not be used in C++ code, and libc++'s version implementation does not follow the Serenity C++ style.
This commit is contained in:
parent
cccb6c7287
commit
ec636a404b
Notes:
sideshowbarker
2024-07-18 00:34:07 +09:00
Author: https://github.com/implicitfield Commit: https://github.com/SerenityOS/serenity/commit/ec636a404b Pull-request: https://github.com/SerenityOS/serenity/pull/18522 Reviewed-by: https://github.com/ADKaster ✅ Reviewed-by: https://github.com/alimpfard
1 changed files with 12 additions and 0 deletions
|
@ -47,6 +47,9 @@ GOOD_PRAGMA_ONCE_PATTERN = re.compile('(^|\\S\n\n)#pragma once(\n\n\\S.|$)')
|
||||||
# LibC is supposed to be a system library; don't mention the directory.
|
# LibC is supposed to be a system library; don't mention the directory.
|
||||||
BAD_INCLUDE_LIBC = re.compile("# *include <LibC/")
|
BAD_INCLUDE_LIBC = re.compile("# *include <LibC/")
|
||||||
|
|
||||||
|
# Serenity C++ code must not use LibC's or libc++'s complex number implementation.
|
||||||
|
BAD_INCLUDE_COMPLEX = re.compile("# *include <c[c]?omplex")
|
||||||
|
|
||||||
# Make sure that all includes are either system includes or immediately resolvable local includes
|
# Make sure that all includes are either system includes or immediately resolvable local includes
|
||||||
ANY_INCLUDE_PATTERN = re.compile('^ *# *include\\b.*[>"](?!\\)).*$', re.M)
|
ANY_INCLUDE_PATTERN = re.compile('^ *# *include\\b.*[>"](?!\\)).*$', re.M)
|
||||||
SYSTEM_INCLUDE_PATTERN = re.compile("^ *# *include *<([^>]+)>(?: /[*/].*)?$")
|
SYSTEM_INCLUDE_PATTERN = re.compile("^ *# *include *<([^>]+)>(?: /[*/].*)?$")
|
||||||
|
@ -98,6 +101,7 @@ def run():
|
||||||
errors_include_libc = []
|
errors_include_libc = []
|
||||||
errors_include_weird_format = []
|
errors_include_weird_format = []
|
||||||
errors_include_missing_local = []
|
errors_include_missing_local = []
|
||||||
|
errors_include_bad_complex = []
|
||||||
|
|
||||||
for filename in find_files_here_or_argv():
|
for filename in find_files_here_or_argv():
|
||||||
with open(filename, "r") as f:
|
with open(filename, "r") as f:
|
||||||
|
@ -121,6 +125,8 @@ def run():
|
||||||
if not is_in_prefix_list(filename, LIBC_CHECK_EXCLUDES):
|
if not is_in_prefix_list(filename, LIBC_CHECK_EXCLUDES):
|
||||||
if BAD_INCLUDE_LIBC.search(file_content):
|
if BAD_INCLUDE_LIBC.search(file_content):
|
||||||
errors_include_libc.append(filename)
|
errors_include_libc.append(filename)
|
||||||
|
if BAD_INCLUDE_COMPLEX.search(file_content):
|
||||||
|
errors_include_bad_complex.append(filename)
|
||||||
if not is_in_prefix_list(filename, INCLUDE_CHECK_EXCLUDES):
|
if not is_in_prefix_list(filename, INCLUDE_CHECK_EXCLUDES):
|
||||||
file_directory = pathlib.Path(filename).parent
|
file_directory = pathlib.Path(filename).parent
|
||||||
for include_line in ANY_INCLUDE_PATTERN.findall(file_content):
|
for include_line in ANY_INCLUDE_PATTERN.findall(file_content):
|
||||||
|
@ -173,6 +179,12 @@ def run():
|
||||||
" ".join(errors_include_missing_local),
|
" ".join(errors_include_missing_local),
|
||||||
)
|
)
|
||||||
have_errors = True
|
have_errors = True
|
||||||
|
if errors_include_bad_complex:
|
||||||
|
print(
|
||||||
|
"Files that include a non-AK complex header:",
|
||||||
|
" ".join(errors_include_bad_complex),
|
||||||
|
)
|
||||||
|
have_errors = True
|
||||||
|
|
||||||
if have_errors:
|
if have_errors:
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
Loading…
Reference in a new issue