Chromium Code Reviews| Index: PRESUBMIT.py |
| diff --git a/PRESUBMIT.py b/PRESUBMIT.py |
| index 6ab44910877fbd05cbf94e12fb0af77f00cf777f..ddc19826ff536ef88719ebb54305373d7222b5a1 100644 |
| --- a/PRESUBMIT.py |
| +++ b/PRESUBMIT.py |
| @@ -542,7 +542,7 @@ def _CheckIncludeOrderForScope(scope, input_api, file_path, changed_linenums): |
| return warnings |
| -def _CheckIncludeOrderInFile(input_api, f, is_source, changed_linenums): |
| +def _CheckIncludeOrderInFile(input_api, f, changed_linenums): |
| """Checks the #include order for the given file f.""" |
| system_include_pattern = input_api.re.compile(r'\s*#include \<.*') |
| @@ -550,34 +550,34 @@ def _CheckIncludeOrderInFile(input_api, f, is_source, changed_linenums): |
| # often need to appear in a specific order. |
| excluded_include_pattern = input_api.re.compile(r'\s*#include \<.*/.*') |
| custom_include_pattern = input_api.re.compile(r'\s*#include "(?P<FILE>.*)"') |
| - if_pattern = input_api.re.compile(r'\s*#\s*(if|elif|else|endif).*') |
| + if_pattern = ( |
| + input_api.re.compile(r'\s*#\s*(if|elif|else|endif|define|undef).*')) |
| contents = f.NewContents() |
| warnings = [] |
| line_num = 0 |
| - # Handle the special first include for source files. If the header file is |
| - # some/path/file.h, the corresponding source file can be some/path/file.cc, |
| - # some/other/path/file.cc, some/path/file_platform.cc etc. It's also possible |
| - # that no special first include exists. |
| - if is_source: |
| - for line in contents: |
| - line_num += 1 |
| - if system_include_pattern.match(line): |
| + # Handle the special first include. If the first include file is |
| + # some/path/file.h, the corresponding including file can be some/path/file.cc, |
| + # some/other/path/file.cc, some/path/file_platform.cc, some/path/file-suffix.h |
| + # etc. It's also possible that no special first include exists. |
| + for line in contents: |
| + line_num += 1 |
| + if system_include_pattern.match(line): |
| + # No special first include -> process the line again along with normal |
| + # includes. |
| + line_num -= 1 |
| + break |
| + match = custom_include_pattern.match(line) |
| + if match: |
| + match_dict = match.groupdict() |
| + header_basename = input_api.os_path.basename( |
| + match_dict['FILE']).replace('.h', '') |
| + if header_basename not in input_api.os_path.basename(f.LocalPath()): |
| # No special first include -> process the line again along with normal |
| # includes. |
| line_num -= 1 |
| - break |
| - match = custom_include_pattern.match(line) |
| - if match: |
| - match_dict = match.groupdict() |
| - header_basename = input_api.os_path.basename( |
| - match_dict['FILE']).replace('.h', '') |
| - if header_basename not in input_api.os_path.basename(f.LocalPath()): |
| - # No special first include -> process the line again along with normal |
| - # includes. |
| - line_num -= 1 |
| - break |
| + break |
| # Split into scopes: Each region between #if and #endif is its own scope. |
| scopes = [] |
| @@ -607,18 +607,14 @@ def _CheckIncludeOrder(input_api, output_api): |
| 3. C++ system files in alphabetical order |
| 4. Project's .h files in alphabetical order |
| - Each region between #if and #endif follows these rules separately. |
| + Each region separated by #if, #elif, #else, #endif, #define and #undef follows |
| + these rules separately. |
| """ |
| warnings = [] |
| for f in input_api.AffectedFiles(): |
| changed_linenums = set([line_num for line_num, _ in f.ChangedContents()]) |
| - if f.LocalPath().endswith('.cc'): |
| - warnings.extend(_CheckIncludeOrderInFile(input_api, f, True, |
| - changed_linenums)) |
| - elif f.LocalPath().endswith('.h'): |
| - warnings.extend(_CheckIncludeOrderInFile(input_api, f, False, |
| - changed_linenums)) |
| + warnings.extend(_CheckIncludeOrderInFile(input_api, f, changed_linenums)) |
|
M-A Ruel
2012/12/06 15:16:32
Do you really want to run it over .java and .py fi
marja
2012/12/06 15:23:08
-> fixed
|
| results = [] |
| if warnings: |