[jumbo] Update various places for changes to C++ standards.

In particular, the supported headers and <type_traits> members have
changed.

I removed the "legacy C++" headers since these are arcane and long
unsupported.

Also fixed what looked like some missing operators in a couple regexes.

Bug: none
Change-Id: I84a983efeb95ec806eaf6d75866d7079ca1bdd96
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5777599
Commit-Queue: Yiwei Zhang <yiwzhang@google.com>
Auto-Submit: Peter Kasting <pkasting@chromium.org>
Reviewed-by: Yiwei Zhang <yiwzhang@google.com>
changes/99/5777599/2
Peter Kasting 11 months ago committed by LUCI CQ
parent d4c6d40d50
commit 5f4fb8c8fb

126
cpplint.py vendored

@ -273,59 +273,7 @@ _DEFAULT_KERNEL_SUPPRESSED_CATEGORIES = [
# C++ headers
_CPP_HEADERS = frozenset([
# Legacy
'algobase.h',
'algo.h',
'alloc.h',
'builtinbuf.h',
'bvector.h',
'complex.h',
'defalloc.h',
'deque.h',
'editbuf.h',
'fstream.h',
'function.h',
'hash_map',
'hash_map.h',
'hash_set',
'hash_set.h',
'hashtable.h',
'heap.h',
'indstream.h',
'iomanip.h',
'iostream.h',
'istream.h',
'iterator.h',
'list.h',
'map.h',
'multimap.h',
'multiset.h',
'ostream.h',
'pair.h',
'parsestream.h',
'pfstream.h',
'procbuf.h',
'pthread_alloc',
'pthread_alloc.h',
'rope',
'rope.h',
'ropeimpl.h',
'set.h',
'slist',
'slist.h',
'stack.h',
'stdiostream.h',
'stl_alloc.h',
'stl_relops.h',
'streambuf.h',
'stream.h',
'strfile.h',
'strstream.h',
'tempbuf.h',
'tree.h',
'type_traits.h',
'vector.h',
# C++ library headers [headers]
# C++ library headers [tab:headers.cpp]
'algorithm',
'any',
'array',
@ -335,20 +283,29 @@ _CPP_HEADERS = frozenset([
'bitset',
'charconv',
'chrono',
'codecvt',
'codecvt', # Note: removed in C++26
'compare',
'complex',
'concepts',
'condition_variable',
'coroutine',
'debugging',
'deque',
'exception',
'execution',
'expected',
'filesystem',
'flat_map',
'flat_set',
'format',
'forward_list',
'fstream',
'functional',
'future',
'generator',
'hazard_pointer',
'initializer_list',
'inplace_vector',
'iomanip',
'ios',
'iosfwd',
@ -357,9 +314,11 @@ _CPP_HEADERS = frozenset([
'iterator',
'latch',
'limits',
'linalg',
'list',
'locale',
'map',
'mdspan',
'memory',
'memory_resource',
'mutex',
@ -368,10 +327,12 @@ _CPP_HEADERS = frozenset([
'numeric',
'optional',
'ostream',
'print',
'queue',
'random',
'ranges',
'ratio',
'rcu',
'regex',
'scoped_allocator',
'semaphore',
@ -379,21 +340,25 @@ _CPP_HEADERS = frozenset([
'shared_mutex',
'source_location',
'span',
'spanstream',
'sstream',
'stack',
'stacktrace',
'stdexcept',
'stdfloat',
'stop_token',
'streambuf',
'string',
'string_view',
'strstream',
'strstream', # Note: removed in C++26
'syncstream',
'system_error',
'text_encoding',
'thread',
'tuple',
'type_traits',
'typeindex',
'typeinfo',
'type_traits',
'unordered_map',
'unordered_set',
'utility',
@ -401,36 +366,31 @@ _CPP_HEADERS = frozenset([
'variant',
'vector',
'version',
# C++ headers for C library facilities [headers]
# C++ headers for C library facilities [tab:headers.cpp.c]
'cassert',
'ccomplex',
'cctype',
'cerrno',
'cfenv',
'cfloat',
'cinttypes',
'ciso646',
'climits',
'clocale',
'cmath',
'csetjmp',
'csignal',
'cstdalign',
'cstdarg',
'cstdbool',
'cstddef',
'cstdint',
'cstdio',
'cstdlib',
'cstring',
'ctgmath',
'ctime',
'cuchar',
'cwchar',
'cwctype',
])
# List of functions from <type_traits>. See [meta.type.synop]
# <type_traits> [meta.type.synop]
_TYPE_TRAITS = [
# Helper class [meta.help]
'integral_constant',
@ -463,7 +423,7 @@ _TYPE_TRAITS = [
'is_trivial',
'is_trivially_copyable',
'is_standard_layout',
'is_pod',
'is_pod', # Note: deprecated in C++20
'is_empty',
'is_polymorphic',
'is_abstract',
@ -473,6 +433,7 @@ _TYPE_TRAITS = [
'is_unsigned',
'is_bounded_array',
'is_unbounded_array',
'is_scoped_enum',
'is_constructible',
'is_default_constructible',
'is_copy_constructible',
@ -501,8 +462,11 @@ _TYPE_TRAITS = [
'is_nothrow_swappable_with',
'is_nothrow_swappable',
'is_nothrow_destructible',
'is_implicit_lifetime',
'has_virtual_destructor',
'has_unique_object_representations',
'reference_constructs_from_temporary',
'reference_converts_from_temporary',
# Type property queries [meta.unary.prop.query]
'alignment_of',
'rank',
@ -510,6 +474,7 @@ _TYPE_TRAITS = [
# Relationship between types [meta.rel]
'is_same',
'is_base_of',
'is_virtual_base_of',
'is_convertible',
'is_nothrow_convertible',
'is_layout_compatible',
@ -555,8 +520,8 @@ _TYPE_TRAITS = [
'add_pointer_t',
# Other transformations [meta.trans.other]
'type_identity',
'aligned_storage',
'aligned_union',
'aligned_storage', # Note: deprecated in C++23
'aligned_union', # Note: deprecated in C++23
'remove_cvref',
'decay',
'enable_if',
@ -569,8 +534,8 @@ _TYPE_TRAITS = [
'unwrap_reference',
'unwrap_ref_decay',
'type_identity_t',
'aligned_storage_t',
'aligned_union_t',
'aligned_storage_t', # Note: deprecated in C++23
'aligned_union_t', # Note: deprecated in C++23
'remove_cvref_t',
'decay_t',
'enable_if_t',
@ -615,7 +580,7 @@ _TYPE_TRAITS = [
'is_trivial_v',
'is_trivially_copyable_v',
'is_standard_layout_v',
'is_pod_v',
'is_pod_v', # Note: deprecated in C++20
'is_empty_v',
'is_polymorphic_v',
'is_abstract_v',
@ -625,6 +590,7 @@ _TYPE_TRAITS = [
'is_unsigned_v',
'is_bounded_array_v',
'is_unbounded_array_v',
'is_scoped_enum_v',
'is_constructible_v',
'is_default_constructible_v',
'is_copy_constructible_v',
@ -653,14 +619,18 @@ _TYPE_TRAITS = [
'is_nothrow_swappable_with_v',
'is_nothrow_swappable_v',
'is_nothrow_destructible_v',
'is_implicit_lifetime_v',
'has_virtual_destructor_v',
'has_unique_object_representations_v',
'reference_constructs_from_temporary_v',
'reference_converts_from_temporary_v',
# Type property queries _v [meta.unary.prop.query]
'alignment_of_v',
'rank_v',
'extent_v',
'is_same_v',
'is_base_of_v',
'is_virtual_base_of_v',
'is_convertible_v',
'is_nothrow_convertible_v',
'is_layout_compatible_v',
@ -678,16 +648,17 @@ _TYPE_TRAITS = [
'is_corresponding_member',
# Constant evaluation context [meta.const.eval]
'is_constant_evaluated',
'is_within_lifetime',
]
_TYPE_TRAITS_RE = re.compile(r'\b::(?:' + ('|'.join(_TYPE_TRAITS)) + ')<')
# Type names
_TYPES = re.compile(r'^(?:'
# [dcl.type.simple]
r'(char(16_t|32_t)?)|wchar_t|'
r'bool|short|int|long|signed|unsigned|float|double|'
r'(char(8_t|16_t|32_t)?)|wchar_t|'
r'bool|short|int|long|signed|unsigned|float|double|void|'
# [support.types]
r'(ptrdiff_t|size_t|max_align_t|nullptr_t)|'
r'ptrdiff_t|size_t|max_align_t|nullptr_t|byte|'
# [cstdint.syn]
r'(u?int(_fast|_least)?(8|16|32|64)_t)|'
r'(u?int(max|ptr)_t)|'
@ -3608,8 +3579,9 @@ def CheckOperatorSpacing(filename, clean_lines, linenum, error):
if ((Search(r'[\w.]=', line) or Search(r'=[\w.]', line))
and not Search(r'\b(if|while|for) ', line)
# Operators taken from [lex.operators] in C++11 standard.
and not Search(r'(>=|<=|==|!=|&=|\^=|\|=|\+=|\*=|\/=|\%=)', line)
and not Search(r'operator=', line)):
and not Search(
r'(\+=|\-=|\*=|\/=|\%=|\^=|&=|\|=|==|!=|<=|>=|<=>|<<=|>>=)',
line) and not Search(r'operator=', line)):
error(filename, linenum, 'whitespace/operators', 4,
'Missing spaces around =')
@ -3622,13 +3594,15 @@ def CheckOperatorSpacing(filename, clean_lines, linenum, error):
# Check <= and >= first to avoid false positives with < and >, then
# check non-include lines for spacing around < and >.
#
# If the operator is followed by a comma, assume it's be used in a
# If the operator is followed by a comma, assume it's being used in a
# macro context and don't do any checks. This avoids false
# positives.
#
# Note that && is not included here. This is because there are too
# many false positives due to RValue references.
match = Search(r'[^<>=!\s](==|!=|<=|>=|\|\|)[^<>=!\s,;\)]', line)
match = Search(
r'[^<>=!\s](\+=|\-=|\*=|\/=|\%=|\^=|&=|\|=|'
r'==|!=|<=|>=|<=>|<<=|>>=|\|\|)[^<>=!\s,;\)]', line)
if match:
error(filename, linenum, 'whitespace/operators', 3,
'Missing spaces around %s' % match.group(1))

Loading…
Cancel
Save