absl::make_unique presubmit check.
Starting from [1], WebRTC has been migrated to std::make_unique, in
order to keep the codebase consistent, absl::make_unique is now
banned.
Output example:
** Presubmit ERRORS **
Please use std::make_unique instead of absl::make_unique.
Affected files:
call/rtp_demuxer.cc
[1] - https://webrtc-review.googlesource.com/c/src/+/153221
Bug: webrtc:10945
Change-Id: I5b727ecc5ea8ac2ecd89cbd5fba866baf6de9012
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153355
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29210}
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index d838bfd..99835ccf 100755
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -891,6 +891,8 @@
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 @@
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 @@
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 []