From 183056096703beb377751398360dcd76cf5408ac Mon Sep 17 00:00:00 2001 From: Al Muthanna Athamina Date: Fri, 24 Jan 2020 15:33:16 +0100 Subject: [PATCH] Remove the #undef check from the Presubmit for .cc files This CL attempts to remove the #undef check from the Presubmit for .cc files because we are removing Jumbo support. Bug: chromium:994387 Change-Id: I1bb6d22393c1b533f23dd586e5028ecc6d254c99 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2013119 Reviewed-by: Clemens Backes Reviewed-by: Wez Reviewed-by: Michael Achenbach Commit-Queue: Almothana Athamneh Cr-Commit-Position: refs/heads/master@{#65978} --- PRESUBMIT.py | 63 ---------------------------------------------------- 1 file changed, 63 deletions(-) diff --git a/PRESUBMIT.py b/PRESUBMIT.py index f1df3abc74..9b03f631c5 100644 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py @@ -391,7 +391,6 @@ def _CommonChecks(input_api, output_api): _CheckHeadersHaveIncludeGuards, _CheckNoInlineHeaderIncludesInNormalHeaders, _CheckJSONFiles, - _CheckMacroUndefs, _CheckNoexceptAnnotations, _RunTestsWithVPythonSpec, ] @@ -454,68 +453,6 @@ def _CheckJSONFiles(input_api, output_api): return [output_api.PresubmitError(r) for r in results] -def _CheckMacroUndefs(input_api, output_api): - """ - Checks that each #define in a .cc file is eventually followed by an #undef. - - TODO(clemensb): This check should eventually be enabled for all cc files via - tools/presubmit.py (https://crbug.com/v8/6811). - """ - def FilterFile(affected_file): - # Skip header files, as they often define type lists which are used in - # other files. - white_list = (r'.+\.cc',r'.+\.cpp',r'.+\.c') - return input_api.FilterSourceFile(affected_file, white_list=white_list) - - def Touches(line): - return line.startswith('+') or line.startswith('-') - - def InvolvesMacros(text): - return define_pattern.match(text) or undef_pattern.match(text) - - def TouchesMacros(f): - return any(Touches(line) and InvolvesMacros(line[1:]) - for line in f.GenerateScmDiff().splitlines()) - - def CollectUndefsWithNoDef(defined_macros, errors, f, line, line_nr): - define_match = define_pattern.match(line) - if define_match: - name = define_match.group(1) - defined_macros[name] = line_nr - undef_match = undef_pattern.match(line) - if undef_match and not "// NOLINT" in line: - name = undef_match.group(1) - if name in defined_macros: - del defined_macros[name] - else: - errors.append('{}:{}: Macro named \'{}\' was not defined before.' - .format(f.LocalPath(), line_nr, name)) - - define_pattern = input_api.re.compile(r'#define (\w+)') - undef_pattern = input_api.re.compile(r'#undef (\w+)') - errors = [] - for f in input_api.AffectedFiles( - file_filter=FilterFile, include_deletes=False): - if not TouchesMacros(f): - continue - - defined_macros = dict() - with open(f.LocalPath()) as fh: - for line_nr, line in enumerate(fh, start=1): - CollectUndefsWithNoDef(defined_macros, errors, f, line, line_nr) - - for name, line_nr in sorted(defined_macros.items(), key=lambda e: e[1]): - errors.append('{}:{}: Macro missing #undef: {}' - .format(f.LocalPath(), line_nr, name)) - - if errors: - return [output_api.PresubmitPromptOrNotify( - 'Detected mismatches in #define / #undef in the file(s) where you ' - 'modified preprocessor macros.', - errors)] - return [] - - def _CheckNoexceptAnnotations(input_api, output_api): """ Checks that all user-defined constructors and assignment operators are marked