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