Add presubmit check for #pragma once.
BUG=none
TEST=git cl presubmit
Review URL: https://chromiumcodereview.appspot.com/10704150
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146166 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index aaf6544..009df4c 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -259,8 +259,8 @@
if len(files):
return [ output_api.PresubmitError(
- 'Do not #include <iostream> in header files, since it inserts static ' +
- 'initialization into every file including the header. Instead, ' +
+ 'Do not #include <iostream> in header files, since it inserts static '
+ 'initialization into every file including the header. Instead, '
'#include <ostream>. See http://crbug.com/94794',
files) ]
return []
@@ -354,6 +354,25 @@
return result
+def _CheckNoPragmaOnce(input_api, output_api):
+ """Make sure that banned functions are not used."""
+ files = []
+ pattern = input_api.re.compile(r'^#pragma\s+once',
+ input_api.re.MULTILINE)
+ for f in input_api.AffectedSourceFiles(input_api.FilterSourceFile):
+ if not f.LocalPath().endswith('.h'):
+ continue
+ contents = input_api.ReadFile(f)
+ if pattern.search(contents):
+ files.append(f)
+
+ if files:
+ return [output_api.PresubmitError(
+ 'Do not use #pragma once in header files.\n'
+ 'See http://www.chromium.org/developers/coding-style#TOC-File-headers',
+ files)]
+ return []
+
def _CommonChecks(input_api, output_api):
"""Checks common to both upload and commit."""
@@ -368,6 +387,7 @@
results.extend(_CheckNoNewWStrings(input_api, output_api))
results.extend(_CheckNoDEPSGIT(input_api, output_api))
results.extend(_CheckNoBannedFunctions(input_api, output_api))
+ results.extend(_CheckNoPragmaOnce(input_api, output_api))
return results