diff --git a/PRESUBMIT.py b/PRESUBMIT.py index d838bfd42b..99835ccf29 100755 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py @@ -891,6 +891,8 @@ def CommonChecks(input_api, output_api): results.extend(CheckApiDepsFileIsUpToDate(input_api, output_api)) results.extend(CheckAbslMemoryInclude( input_api, output_api, non_third_party_sources)) + results.extend(CheckBannedAbslMakeUnique( + input_api, output_api, non_third_party_sources)) return results @@ -948,6 +950,25 @@ def CheckApiDepsFileIsUpToDate(input_api, output_api): return results +def CheckBannedAbslMakeUnique(input_api, output_api, source_file_filter): + file_filter = lambda f: (f.LocalPath().endswith(('.cc', '.h')) + and source_file_filter(f)) + + files = [] + for f in input_api.AffectedFiles( + include_deletes=False, file_filter=file_filter): + for _, line in f.ChangedContents(): + if 'absl::make_unique' in line: + files.append(f) + break + + if len(files): + return [output_api.PresubmitError( + 'Please use std::make_unique instead of absl::make_unique.\n' + 'Affected files:', + files)] + return [] + def CheckAbslMemoryInclude(input_api, output_api, source_file_filter): pattern = input_api.re.compile( r'^#include\s*"absl/memory/memory.h"', input_api.re.MULTILINE) @@ -961,16 +982,15 @@ def CheckAbslMemoryInclude(input_api, output_api, source_file_filter): if pattern.search(contents): continue for _, line in f.ChangedContents(): - if 'absl::make_unique' in line or 'absl::WrapUnique' in line: + if 'absl::WrapUnique' in line: files.append(f) break if len(files): return [output_api.PresubmitError( - 'Please include "absl/memory/memory.h" header for' - ' absl::make_unique or absl::WrapUnique.\nThis header may or' - ' may not be included transitively depending on the C++ standard' - ' version.', + 'Please include "absl/memory/memory.h" header for absl::WrapUnique.\n' + 'This header may or may not be included transitively depending on the ' + 'C++ standard version.', files)] return []