| Index: base/PRESUBMIT.py
|
| diff --git a/base/PRESUBMIT.py b/base/PRESUBMIT.py
|
| index 732ac27e2a2ad81242510881a0978782f71229be..758a79053ae57eaeff62d1f39a468991817829d0 100644
|
| --- a/base/PRESUBMIT.py
|
| +++ b/base/PRESUBMIT.py
|
| @@ -8,6 +8,10 @@ See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
|
| for more details on the presubmit API built into gcl.
|
| """
|
|
|
| +import re
|
| +
|
| +BASE_SOURCE_FILES=(r'^base/.*\.(cc|h|mm)$',)
|
| +
|
| def _CheckNoInterfacesInBase(input_api, output_api):
|
| """Checks to make sure no files in libbase.a have |@interface|."""
|
| pattern = input_api.re.compile(r'^\s*@interface', input_api.re.MULTILINE)
|
| @@ -36,8 +40,45 @@ def _CommonChecks(input_api, output_api):
|
| results.extend(_CheckNoInterfacesInBase(input_api, output_api))
|
| return results
|
|
|
| +def _CheckOverrideFinal(input_api, output_api,
|
| + whitelist=BASE_SOURCE_FILES, blacklist=None):
|
| + """Make sure new lines of code don't use the OVERRIDE or FINAL macros."""
|
| +
|
| + # TODO(mostynb): remove this check once the macros are removed
|
| + # from base/compiler_specific.h.
|
| +
|
| + errors = []
|
| +
|
| + source_file_filter = lambda x: input_api.FilterSourceFile(
|
| + x, white_list=BASE_SOURCE_FILES, black_list=None)
|
| +
|
| + override_files = []
|
| + final_files = []
|
| +
|
| + for f in input_api.AffectedSourceFiles(source_file_filter):
|
| + contents = input_api.ReadFile(f, 'rb')
|
| +
|
| + # "override" and "final" should be used instead of OVERRIDE/FINAL now.
|
| + if re.search(r"\bOVERRIDE\b", contents):
|
| + override_files.append(f.LocalPath())
|
| +
|
| + if re.search(r"\bFINAL\b", contents):
|
| + final_files.append(f.LocalPath())
|
| +
|
| + if override_files:
|
| + return [output_api.PresubmitError(
|
| + 'These files use OVERRIDE instead of using override:',
|
| + items=override_files)]
|
| + if final_files:
|
| + return [output_api.PresubmitError(
|
| + 'These files use FINAL instead of using final:',
|
| + items=final_files)]
|
| +
|
| + return []
|
| +
|
| def CheckChangeOnUpload(input_api, output_api):
|
| results = []
|
| + results.extend(_CheckOverrideFinal(input_api, output_api))
|
| results.extend(_CommonChecks(input_api, output_api))
|
| return results
|
|
|
|
|