Chromium Code Reviews| Index: cpplint.py |
| diff --git a/cpplint.py b/cpplint.py |
| index ccc25d4c56b1a85391742c90c928f179b142d085..68e062ae01533155024031c47f8308d6e5aa9f67 100755 |
| --- a/cpplint.py |
| +++ b/cpplint.py |
| @@ -1666,7 +1666,7 @@ def GetHeaderGuardCPPVariable(filename): |
| filename = re.sub(r'/\.flymake/([^/]*)$', r'/\1', filename) |
| # Replace 'c++' with 'cpp'. |
| filename = filename.replace('C++', 'cpp').replace('c++', 'cpp') |
| - |
| + |
| fileinfo = FileInfo(filename) |
| file_path_from_root = fileinfo.RepositoryName() |
| if _root: |
| @@ -4794,7 +4794,7 @@ def CheckLanguage(filename, clean_lines, linenum, file_extension, |
| # Make Windows paths like Unix. |
| fullname = os.path.abspath(filename).replace('\\', '/') |
| - |
| + |
| # Perform other checks now that we are sure that this is not an include line |
| CheckCasts(filename, clean_lines, linenum, error) |
| CheckGlobalStatic(filename, clean_lines, linenum, error) |
| @@ -5498,18 +5498,26 @@ _HEADERS_CONTAINING_TEMPLATES = ( |
| ('<slist>', ('slist',)), |
| ) |
| -_RE_PATTERN_STRING = re.compile(r'\bstring\b') |
| +_HEADERS_MAYBE_TEMPLATES = ( |
| + ('<algorithm>', ('copy', 'max', 'min', 'min_element', 'sort', |
| + 'transform', |
| + )), |
| + ('<utility>', ('swap',)), |
| + ) |
| -_re_pattern_algorithm_header = [] |
| -for _template in ('copy', 'max', 'min', 'min_element', 'sort', 'swap', |
| - 'transform'): |
| - # Match max<type>(..., ...), max(..., ...), but not foo->max, foo.max or |
| - # type::max(). |
| - _re_pattern_algorithm_header.append( |
| - (re.compile(r'[^>.]\b' + _template + r'(<.*?>)?\([^\)]'), |
| - _template, |
| - '<algorithm>')) |
| +_RE_PATTERN_STRING = re.compile(r'\bstring\b') |
| +_RE_PATTERN_HEADERS_MAYBE_TEMPLATES = [] |
|
Dirk Pranke
2016/02/05 20:40:38
this isn't a constant, so I wouldn't use all-caps
skym
2016/02/05 20:52:58
Done.
|
| +for _header, _templates in _HEADERS_MAYBE_TEMPLATES: |
| + for _template in _templates: |
| + # Match max<type>(..., ...), max(..., ...), but not foo->max, foo.max or |
| + # type::max(). |
| + _RE_PATTERN_HEADERS_MAYBE_TEMPLATES.append( |
| + (re.compile(r'[^>.]\b' + _template + r'(<.*?>)?\([^\)]'), |
| + _template, |
| + _header)) |
| + |
| +# Other scripts may reach in and modify this pattern. |
| _re_pattern_templates = [] |
| for _header, _templates in _HEADERS_CONTAINING_TEMPLATES: |
| for _template in _templates: |
| @@ -5636,7 +5644,7 @@ def CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error, |
| if prefix.endswith('std::') or not prefix.endswith('::'): |
| required['<string>'] = (linenum, 'string') |
| - for pattern, template, header in _re_pattern_algorithm_header: |
| + for pattern, template, header in _RE_PATTERN_HEADERS_MAYBE_TEMPLATES: |
| if pattern.search(line): |
| required[header] = (linenum, template) |
| @@ -6034,7 +6042,7 @@ def ProcessFileData(filename, file_extension, lines, error, |
| nesting_state.CheckCompletedBlocks(filename, error) |
| CheckForIncludeWhatYouUse(filename, clean_lines, include_state, error) |
| - |
| + |
| # Check that the .cc file has included its header if it exists. |
| if file_extension == 'cc': |
| CheckHeaderFileIncluded(filename, include_state, error) |