diff --git a/PRESUBMIT.py b/PRESUBMIT.py index 927ec2b1c0faf2..48493fcf789f1c 100644 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py @@ -1400,6 +1400,40 @@ def _CheckForAnonymousVariables(input_api, output_api): return [] +def _CheckUniquePtr(input_api, output_api): + file_inclusion_pattern = r'.+%s' % _IMPLEMENTATION_EXTENSIONS + sources = lambda affected_file: input_api.FilterSourceFile( + affected_file, + black_list=(_EXCLUDED_PATHS + _TEST_CODE_EXCLUDED_PATHS + + input_api.DEFAULT_BLACK_LIST), + white_list=(file_inclusion_pattern,)) + return_construct_pattern = input_api.re.compile( + r'(=|\breturn)\s*std::unique_ptr<.*?(?\([^)]+\)') + null_construct_pattern = input_api.re.compile( + r'\b(?\(\)') + errors = [] + for f in input_api.AffectedSourceFiles(sources): + for line_number, line in f.ChangedContents(): + # Disallow: + # return std::unique_ptr(foo); + # bar = std::unique_ptr(foo); + # But allow: + # return std::unique_ptr(foo); + # bar = std::unique_ptr(foo); + if return_construct_pattern.search(line): + errors.append(output_api.PresubmitError( + ('%s:%d uses explicit std::unique_ptr constructor. ' + + 'Use std::make_unique() instead.') % + (f.LocalPath(), line_number))) + # Disallow: + # std::unique_ptr() + if null_construct_pattern.search(line): + errors.append(output_api.PresubmitError( + '%s:%d uses std::unique_ptr(). Use nullptr instead.' % + (f.LocalPath(), line_number))) + return errors + + def _CheckUserActionUpdate(input_api, output_api): """Checks if any new user action has been added.""" if any('actions.xml' == input_api.os_path.basename(f) for f in @@ -2531,6 +2565,7 @@ def _CommonChecks(input_api, output_api): source_file_filter=lambda x: x.LocalPath().endswith('.grd'))) results.extend(_CheckSpamLogging(input_api, output_api)) results.extend(_CheckForAnonymousVariables(input_api, output_api)) + results.extend(_CheckUniquePtr(input_api, output_api)) results.extend(_CheckUserActionUpdate(input_api, output_api)) results.extend(_CheckNoDeprecatedCss(input_api, output_api)) results.extend(_CheckNoDeprecatedJs(input_api, output_api)) diff --git a/cc/PRESUBMIT.py b/cc/PRESUBMIT.py index d160eac29fe467..26909c0b294ecb 100644 --- a/cc/PRESUBMIT.py +++ b/cc/PRESUBMIT.py @@ -144,34 +144,6 @@ def CheckDoubleAngles(input_api, output_api, white_list=CC_SOURCE_FILES, return [output_api.PresubmitError('Use >> instead of > >:', items=errors)] return [] -def CheckUniquePtr(input_api, output_api, - white_list=CC_SOURCE_FILES, black_list=None): - black_list = tuple(black_list or input_api.DEFAULT_BLACK_LIST) - source_file_filter = lambda x: input_api.FilterSourceFile(x, - white_list, - black_list) - errors = [] - for f in input_api.AffectedSourceFiles(source_file_filter): - for line_number, line in f.ChangedContents(): - # Disallow: - # return std::unique_ptr(foo); - # bar = std::unique_ptr(foo); - # But allow: - # return std::unique_ptr(foo); - # bar = std::unique_ptr(foo); - if re.search(r'(=|\breturn)\s*std::unique_ptr<.*?(?\([^)]+\)', line): - errors.append(output_api.PresubmitError( - ('%s:%d uses explicit std::unique_ptr constructor. ' + - 'Use std::make_unique() instead.') % - (f.LocalPath(), line_number))) - # Disallow: - # std::unique_ptr() - if re.search(r'\bstd::unique_ptr<.*?>\(\)', line): - errors.append(output_api.PresubmitError( - '%s:%d uses std::unique_ptr(). Use nullptr instead.' % - (f.LocalPath(), line_number))) - return errors - def FindUnquotedQuote(contents, pos): match = re.search(r"(?\")", contents[pos:]) return -1 if not match else match.start("quote") + pos @@ -330,7 +302,6 @@ def CheckChangeOnUpload(input_api, output_api): results += CheckChangeLintsClean(input_api, output_api) results += CheckTodos(input_api, output_api) results += CheckDoubleAngles(input_api, output_api) - results += CheckUniquePtr(input_api, output_api) results += CheckNamespace(input_api, output_api) results += CheckForUseOfWrongClock(input_api, output_api) results += FindUselessIfdefs(input_api, output_api) diff --git a/components/viz/presubmit_checks.py b/components/viz/presubmit_checks.py index ec43826f09527d..e73bdfce58d20d 100644 --- a/components/viz/presubmit_checks.py +++ b/components/viz/presubmit_checks.py @@ -138,34 +138,6 @@ def CheckDoubleAngles(input_api, output_api, white_list, return [output_api.PresubmitError('Use >> instead of > >:', items=errors)] return [] -def CheckUniquePtr(input_api, output_api, - white_list, black_list=None): - black_list = tuple(black_list or input_api.DEFAULT_BLACK_LIST) - source_file_filter = lambda x: input_api.FilterSourceFile(x, - white_list, - black_list) - errors = [] - for f in input_api.AffectedSourceFiles(source_file_filter): - for line_number, line in f.ChangedContents(): - # Disallow: - # return std::unique_ptr(foo); - # bar = std::unique_ptr(foo); - # But allow: - # return std::unique_ptr(foo); - # bar = std::unique_ptr(foo); - if re.search(r'(=|\breturn)\s*std::unique_ptr<.*?(?\([^)]+\)', line): - errors.append(output_api.PresubmitError( - ('%s:%d uses explicit std::unique_ptr constructor. ' + - 'Use std::make_unique() instead.') % - (f.LocalPath(), line_number))) - # Disallow: - # std::unique_ptr() - if re.search(r'\bstd::unique_ptr<.*?>\(\)', line): - errors.append(output_api.PresubmitError( - '%s:%d uses std::unique_ptr(). Use nullptr instead.' % - (f.LocalPath(), line_number))) - return errors - def FindUnquotedQuote(contents, pos): match = re.search(r"(?\")", contents[pos:]) return -1 if not match else match.start("quote") + pos @@ -331,7 +303,6 @@ def RunAllChecks(input_api, output_api, white_list): results += CheckChangeLintsClean(input_api, output_api, white_list) results += CheckTodos(input_api, output_api) results += CheckDoubleAngles(input_api, output_api, white_list) - results += CheckUniquePtr(input_api, output_api, white_list) results += CheckNamespace(input_api, output_api) results += CheckMojoms(input_api, output_api) results += CheckForUseOfWrongClock(input_api, output_api, white_list) diff --git a/ui/PRESUBMIT.py b/ui/PRESUBMIT.py index 7c0c787afbd8af..810c0919e1f205 100644 --- a/ui/PRESUBMIT.py +++ b/ui/PRESUBMIT.py @@ -8,39 +8,6 @@ for more details about the presubmit API built into depot_tools. """ -INCLUDE_CPP_FILES_ONLY = ( - r'.*\.(cc|h|mm)$', -) - -def CheckUniquePtr(input_api, output_api, - white_list=INCLUDE_CPP_FILES_ONLY, black_list=None): - black_list = tuple(black_list or input_api.DEFAULT_BLACK_LIST) - source_file_filter = lambda x: input_api.FilterSourceFile(x, - white_list, - black_list) - errors = [] - for f in input_api.AffectedSourceFiles(source_file_filter): - for line_number, line in f.ChangedContents(): - # Disallow: - # return std::unique_ptr(foo); - # bar = std::unique_ptr(foo); - # But allow: - # return std::unique_ptr(foo); - # bar = std::unique_ptr(foo); - if input_api.re.search( - r'(=|\breturn)\s*std::unique_ptr<[^\[\]>]+>\([^)]+\)', line): - errors.append(output_api.PresubmitError( - ('%s:%d uses explicit std::unique_ptr constructor. ' + - 'Use std::make_unique() or base::WrapUnique() instead.') % - (f.LocalPath(), line_number))) - # Disallow: - # std::unique_ptr() - if input_api.re.search(r'\bstd::unique_ptr<[^<>]+>\(\)', line): - errors.append(output_api.PresubmitError( - '%s:%d uses std::unique_ptr(). Use nullptr instead.' % - (f.LocalPath(), line_number))) - return errors - def CheckX11HeaderUsage(input_api, output_api): """X11 headers pollute the global namespace with macros for common names so instead code should include "ui/gfx/x/x11.h" which hide the @@ -68,7 +35,6 @@ def CheckX11HeaderUsage(input_api, output_api): def CheckChange(input_api, output_api): results = [] - results += CheckUniquePtr(input_api, output_api) results += CheckX11HeaderUsage(input_api, output_api) return results