[libcxx-commits] [libcxx] fd02a46 - [libcxx] Make generate_feature_test_macro_components script compatible with Python 3.

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Wed Nov 6 08:46:05 PST 2019


Author: Louis Dionne
Date: 2019-11-06T16:45:47Z
New Revision: fd02a4685522bf2ded1d8fb8831a1530c5da6be7

URL: https://github.com/llvm/llvm-project/commit/fd02a4685522bf2ded1d8fb8831a1530c5da6be7
DIFF: https://github.com/llvm/llvm-project/commit/fd02a4685522bf2ded1d8fb8831a1530c5da6be7.diff

LOG: [libcxx] Make generate_feature_test_macro_components script compatible with Python 3.

The script is still compatible with Python 2 as well.
Thanks to Marek Kurdej for the patch.

Differential Revision: https://reviews.llvm.org/D69884

Added: 
    

Modified: 
    libcxx/utils/generate_feature_test_macro_components.py

Removed: 
    


################################################################################
diff  --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
index 0384d3255808..b1721938c60b 100755
--- a/libcxx/utils/generate_feature_test_macro_components.py
+++ b/libcxx/utils/generate_feature_test_macro_components.py
@@ -2,6 +2,8 @@
 
 import os
 import tempfile
+from builtins import int, range
+from functools import reduce
 
 def get_libcxx_paths():
   utils_path = os.path.dirname(os.path.abspath(__file__))
@@ -33,122 +35,122 @@ def add_version_header(tc):
   # C++14 macros
   {"name": "__cpp_lib_integer_sequence",
    "values": {
-      "c++14": 201304L
+      "c++14": int(201304)
     },
     "headers": ["utility"],
   },
   {"name": "__cpp_lib_exchange_function",
    "values": {
-     "c++14": 201304L
+     "c++14": int(201304)
    },
    "headers": ["utility"],
   },
   {"name": "__cpp_lib_tuples_by_type",
    "values": {
-     "c++14": 201304L
+     "c++14": int(201304)
    },
    "headers": ["utility", "tuple"],
   },
   {"name": "__cpp_lib_tuple_element_t",
    "values": {
-     "c++14": 201402L
+     "c++14": int(201402)
    },
    "headers": ["tuple"],
   },
   {"name": "__cpp_lib_make_unique",
    "values": {
-     "c++14": 201304L
+     "c++14": int(201304)
    },
    "headers": ["memory"],
   },
   {"name": "__cpp_lib_transparent_operators",
    "values": {
-     "c++14": 201210L,
-     "c++17": 201510L,
+     "c++14": int(201210),
+     "c++17": int(201510),
    },
    "headers": ["functional"],
   },
   {"name": "__cpp_lib_integral_constant_callable",
    "values": {
-     "c++14": 201304L
+     "c++14": int(201304)
    },
    "headers": ["type_traits"],
   },
   {"name": "__cpp_lib_transformation_trait_aliases",
    "values": {
-     "c++14": 201304L,
+     "c++14": int(201304),
    },
    "headers": ["type_traits"]
   },
   {"name": "__cpp_lib_result_of_sfinae",
    "values": {
-     "c++14": 201210L,
+     "c++14": int(201210),
    },
    "headers": ["functional", "type_traits"]
   },
   {"name": "__cpp_lib_is_final",
    "values": {
-     "c++14": 201402L,
+     "c++14": int(201402),
    },
    "headers": ["type_traits"]
   },
   {"name": "__cpp_lib_is_null_pointer",
    "values": {
-     "c++14": 201309L,
+     "c++14": int(201309),
    },
    "headers": ["type_traits"]
   },
   {"name": "__cpp_lib_chrono_udls",
    "values": {
-     "c++14": 201304L,
+     "c++14": int(201304),
    },
    "headers": ["chrono"]
   },
   {"name": "__cpp_lib_string_udls",
    "values": {
-     "c++14": 201304L,
+     "c++14": int(201304),
    },
    "headers": ["string"]
   },
   {"name": "__cpp_lib_generic_associative_lookup",
    "values": {
-     "c++14": 201304L,
+     "c++14": int(201304),
    },
    "headers": ["map", "set"]
   },
   {"name": "__cpp_lib_null_iterators",
    "values": {
-     "c++14": 201304L,
+     "c++14": int(201304),
    },
    "headers": ["iterator"]
   },
   {"name": "__cpp_lib_make_reverse_iterator",
    "values": {
-     "c++14": 201402L,
+     "c++14": int(201402),
    },
    "headers": ["iterator"]
   },
   {"name": "__cpp_lib_robust_nonmodifying_seq_ops",
    "values": {
-     "c++14": 201304L,
+     "c++14": int(201304),
    },
    "headers": ["algorithm"]
   },
   {"name": "__cpp_lib_complex_udls",
    "values": {
-     "c++14": 201309L,
+     "c++14": int(201309),
    },
    "headers": ["complex"]
   },
   {"name": "__cpp_lib_quoted_string_io",
    "values": {
-     "c++14": 201304L,
+     "c++14": int(201304),
    },
    "headers": ["iomanip"]
   },
   {"name": "__cpp_lib_shared_timed_mutex",
    "values": {
-     "c++14": 201402L,
+     "c++14": int(201402),
    },
    "headers": ["shared_mutex"],
    "depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
@@ -157,7 +159,7 @@ def add_version_header(tc):
   # C++17 macros
   {"name": "__cpp_lib_atomic_is_always_lock_free",
    "values": {
-     "c++17": 201603L,
+     "c++17": int(201603),
    },
    "headers": ["atomic"],
    "depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
@@ -165,91 +167,91 @@ def add_version_header(tc):
   },
   {"name": "__cpp_lib_filesystem",
    "values": {
-     "c++17": 201703L,
+     "c++17": int(201703),
    },
    "headers": ["filesystem"]
   },
   {"name": "__cpp_lib_invoke",
    "values": {
-     "c++17": 201411L,
+     "c++17": int(201411),
    },
    "headers": ["functional"]
   },
   {"name": "__cpp_lib_void_t",
    "values": {
-     "c++17": 201411L,
+     "c++17": int(201411),
    },
    "headers": ["type_traits"]
   },
   {"name": "__cpp_lib_node_extract",
    "values": {
-     "c++17": 201606L,
+     "c++17": int(201606),
    },
    "headers": ["map", "set", "unordered_map", "unordered_set"]
   },
   {"name": "__cpp_lib_byte",
    "values": {
-     "c++17": 201603L,
+     "c++17": int(201603),
    },
    "headers": ["cstddef"],
    },
   {"name": "__cpp_lib_hardware_interference_size",
    "values": {
-     "c++17": 201703L,
+     "c++17": int(201703),
    },
    "headers": ["new"],
    },
   {"name": "__cpp_lib_launder",
    "values": {
-     "c++17": 201606L,
+     "c++17": int(201606),
    },
    "headers": ["new"],
    },
   {"name": "__cpp_lib_uncaught_exceptions",
    "values": {
-     "c++17": 201411L,
+     "c++17": int(201411),
    },
    "headers": ["exception"],
    },
   {"name": "__cpp_lib_as_const",
    "values": {
-     "c++17": 201510L,
+     "c++17": int(201510),
    },
    "headers": ["utility"],
    },
   {"name": "__cpp_lib_make_from_tuple",
    "values": {
-     "c++17": 201606L,
+     "c++17": int(201606),
    },
    "headers": ["tuple"],
    },
   {"name": "__cpp_lib_apply",
    "values": {
-     "c++17": 201603L,
+     "c++17": int(201603),
    },
    "headers": ["tuple"],
    },
   {"name": "__cpp_lib_optional",
    "values": {
-     "c++17": 201606L,
+     "c++17": int(201606),
    },
    "headers": ["optional"],
    },
   {"name": "__cpp_lib_variant",
    "values": {
-     "c++17": 201606L,
+     "c++17": int(201606),
    },
    "headers": ["variant"],
    },
   {"name": "__cpp_lib_any",
    "values": {
-     "c++17": 201606L,
+     "c++17": int(201606),
    },
    "headers": ["any"],
    },
   {"name": "__cpp_lib_addressof_constexpr",
    "values": {
-     "c++17": 201603L,
+     "c++17": int(201603),
    },
    "headers": ["memory"],
    "depends": "TEST_HAS_BUILTIN(__builtin_addressof) || TEST_GCC_VER >= 700",
@@ -257,82 +259,82 @@ def add_version_header(tc):
    },
   {"name": "__cpp_lib_raw_memory_algorithms",
    "values": {
-     "c++17": 201606L,
+     "c++17": int(201606),
    },
    "headers": ["memory"],
    },
   {"name": "__cpp_lib_enable_shared_from_this",
    "values": {
-     "c++17": 201603L,
+     "c++17": int(201603),
    },
    "headers": ["memory"],
    },
   {"name": "__cpp_lib_shared_ptr_weak_type",
    "values": {
-     "c++17": 201606L,
+     "c++17": int(201606),
    },
    "headers": ["memory"],
    },
   {"name": "__cpp_lib_shared_ptr_arrays",
    "values": {
-     "c++17": 201611L,
+     "c++17": int(201611),
    },
    "headers": ["memory"],
    "unimplemented": True,
    },
   {"name": "__cpp_lib_memory_resource",
    "values": {
-     "c++17": 201603L,
+     "c++17": int(201603),
    },
    "headers": ["memory_resource"],
    "unimplemented": True,
    },
   {"name": "__cpp_lib_boyer_moore_searcher",
    "values": {
-     "c++17": 201603L,
+     "c++17": int(201603),
    },
    "headers": ["functional"],
    "unimplemented": True,
    },
   {"name": "__cpp_lib_not_fn",
    "values": {
-     "c++17": 201603L,
+     "c++17": int(201603),
    },
    "headers": ["functional"],
    },
   {"name": "__cpp_lib_bool_constant",
    "values": {
-     "c++17": 201505L,
+     "c++17": int(201505),
    },
    "headers": ["type_traits"],
    },
   {"name": "__cpp_lib_type_trait_variable_templates",
    "values": {
-     "c++17": 201510L,
+     "c++17": int(201510),
    },
    "headers": ["type_traits"],
    },
   {"name": "__cpp_lib_logical_traits",
    "values": {
-     "c++17": 201510L,
+     "c++17": int(201510),
    },
    "headers": ["type_traits"],
    },
   {"name": "__cpp_lib_is_swappable",
    "values": {
-     "c++17": 201603L,
+     "c++17": int(201603),
    },
    "headers": ["type_traits"],
    },
   {"name": "__cpp_lib_is_invocable",
    "values": {
-     "c++17": 201703L,
+     "c++17": int(201703),
    },
    "headers": ["type_traits"],
    },
   {"name": "__cpp_lib_has_unique_object_representations",
    "values": {
-     "c++17": 201606L,
+     "c++17": int(201606),
    },
    "headers": ["type_traits"],
    "depends": "TEST_HAS_BUILTIN_IDENTIFIER(__has_unique_object_representations) || TEST_GCC_VER >= 700",
@@ -340,7 +342,7 @@ def add_version_header(tc):
    },
   {"name": "__cpp_lib_is_aggregate",
    "values": {
-     "c++17": 201703L,
+     "c++17": int(201703),
    },
    "headers": ["type_traits"],
    "depends": "TEST_HAS_BUILTIN_IDENTIFIER(__is_aggregate) || TEST_GCC_VER_NEW >= 7001",
@@ -348,108 +350,108 @@ def add_version_header(tc):
    },
   {"name": "__cpp_lib_chrono",
    "values": {
-     "c++17": 201611L,
+     "c++17": int(201611),
    },
    "headers": ["chrono"],
    },
   {"name": "__cpp_lib_execution",
    "values": {
-     "c++17": 201603L,
+     "c++17": int(201603),
    },
    "headers": ["execution"],
    "unimplemented": True
    },
   {"name": "__cpp_lib_parallel_algorithm",
    "values": {
-     "c++17": 201603L,
+     "c++17": int(201603),
    },
    "headers": ["algorithm", "numeric"],
    "unimplemented": True,
    },
   {"name": "__cpp_lib_to_chars",
    "values": {
-     "c++17": 201611L,
+     "c++17": int(201611),
    },
    "headers": ["utility"],
    "unimplemented": True,
    },
   {"name": "__cpp_lib_string_view",
    "values": {
-     "c++17": 201606L,
+     "c++17": int(201606),
    },
    "headers": ["string", "string_view"],
    },
   {"name": "__cpp_lib_allocator_traits_is_always_equal",
    "values": {
-     "c++17": 201411L,
+     "c++17": int(201411),
    },
    "headers": ["memory", "scoped_allocator", "string", "deque", "forward_list", "list", "vector", "map", "set", "unordered_map", "unordered_set"],
    },
   {"name": "__cpp_lib_incomplete_container_elements",
    "values": {
-     "c++17": 201505L,
+     "c++17": int(201505),
    },
    "headers": ["forward_list", "list", "vector"],
    },
   {"name": "__cpp_lib_map_try_emplace",
    "values": {
-     "c++17": 201411L,
+     "c++17": int(201411),
    },
    "headers": ["map"],
    },
   {"name": "__cpp_lib_unordered_map_try_emplace",
    "values": {
-     "c++17": 201411L,
+     "c++17": int(201411),
    },
    "headers": ["unordered_map"],
    },
   {"name": "__cpp_lib_array_constexpr",
    "values": {
-     "c++17": 201603L,
+     "c++17": int(201603),
    },
    "headers": ["iterator", "array"],
    },
   {"name": "__cpp_lib_nonmember_container_access",
    "values": {
-     "c++17": 201411L,
+     "c++17": int(201411),
    },
    "headers": ["iterator", "array", "deque", "forward_list", "list", "map", "regex",
                "set", "string", "unordered_map", "unordered_set", "vector"],
    },
   {"name": "__cpp_lib_sample",
    "values": {
-     "c++17": 201603L,
+     "c++17": int(201603),
    },
    "headers": ["algorithm"],
    },
   {"name": "__cpp_lib_clamp",
    "values": {
-     "c++17": 201603L,
+     "c++17": int(201603),
    },
    "headers": ["algorithm"],
    },
   {"name": "__cpp_lib_gcd_lcm",
    "values": {
-     "c++17": 201606L,
+     "c++17": int(201606),
    },
    "headers": ["numeric"],
    },
   {"name": "__cpp_lib_hypot",
    "values": {
-     "c++17": 201603L,
+     "c++17": int(201603),
    },
    "headers": ["cmath"],
    },
   {"name": "__cpp_lib_math_special_functions",
    "values": {
-     "c++17": 201603L,
+     "c++17": int(201603),
    },
    "headers": ["cmath"],
    "unimplemented": True,
    },
   {"name": "__cpp_lib_shared_mutex",
    "values": {
-     "c++17": 201505L,
+     "c++17": int(201505),
    },
    "headers": ["shared_mutex"],
    "depends": "!defined(_LIBCPP_HAS_NO_THREADS)",
@@ -457,14 +459,14 @@ def add_version_header(tc):
    },
   {"name": "__cpp_lib_scoped_lock",
    "values": {
-     "c++17": 201703L,
+     "c++17": int(201703),
    },
    "headers": ["mutex"],
    },
   # C++2a
   {"name": "__cpp_lib_char8_t",
    "values": {
-     "c++2a": 201811L,
+     "c++2a": int(201811),
    },
    "headers": ["atomic", "filesystem", "istream", "limits", "locale", "ostream",
                "string", "string_view"],
@@ -473,14 +475,14 @@ def add_version_header(tc):
    },
   {"name": "__cpp_lib_erase_if",
    "values": {
-     "c++2a": 201811L,
+     "c++2a": int(201811),
    },
    "headers": ["string", "deque", "forward_list", "list", "vector", "map",
                "set", "unordered_map", "unordered_set"]
   },
   {"name": "__cpp_lib_destroying_delete",
    "values": {
-     "c++2a": 201806L,
+     "c++2a": int(201806),
    },
    "headers": ["new"],
    "depends":
@@ -494,42 +496,42 @@ def add_version_header(tc):
    },
   {"name": "__cpp_lib_three_way_comparison",
    "values": {
-     "c++2a": 201711L,
+     "c++2a": int(201711),
    },
    "headers": ["compare"],
    "unimplemented": True,
    },
   {"name": "__cpp_lib_concepts",
    "values": {
-     "c++2a": 201806L,
+     "c++2a": int(201806),
    },
    "headers": ["concepts"],
    "unimplemented": True,
    },
   {"name": "__cpp_lib_constexpr_swap_algorithms",
    "values": {
-     "c++2a": 201806L,
+     "c++2a": int(201806),
    },
    "headers": ["algorithm"],
    "unimplemented": True,
    },
   {"name": "__cpp_lib_constexpr_misc",
    "values": {
-     "c++2a": 201811L,
+     "c++2a": int(201811),
    },
    "headers": ["array", "functional", "iterator", "string_view", "tuple", "utility"],
    "unimplemented": True,
    },
   {"name": "__cpp_lib_bind_front",
    "values": {
-     "c++2a": 201811L,
+     "c++2a": int(201811),
    },
    "headers": ["functional"],
    "unimplemented": True,
    },
   {"name": "__cpp_lib_is_constant_evaluated",
    "values": {
-     "c++2a": 201811L,
+     "c++2a": int(201811),
    },
    "headers": ["type_traits"],
    "depends": "TEST_HAS_BUILTIN(__builtin_is_constant_evaluated) || TEST_GCC_VER >= 900",
@@ -537,35 +539,35 @@ def add_version_header(tc):
    },
   {"name": "__cpp_lib_list_remove_return_type",
    "values": {
-     "c++2a": 201806L,
+     "c++2a": int(201806),
    },
    "headers": ["forward_list", "list"],
    "unimplemented": True,
    },
   {"name": "__cpp_lib_generic_unordered_lookup",
    "values": {
-     "c++2a": 201811L,
+     "c++2a": int(201811),
    },
    "headers": ["unordered_map", "unordered_set"],
    "unimplemented": True,
    },
   {"name": "__cpp_lib_ranges",
    "values": {
-     "c++2a": 201811L,
+     "c++2a": int(201811),
    },
    "headers": ["algorithm", "functional", "iterator", "memory", "ranges"],
    "unimplemented": True,
    },
   {"name": "__cpp_lib_bit_cast",
    "values": {
-     "c++2a": 201806L,
+     "c++2a": int(201806),
    },
    "headers": ["bit"],
    "unimplemented": True,
    },
   {"name": "__cpp_lib_atomic_ref",
    "values": {
-     "c++2a": 201806L,
+     "c++2a": int(201806),
    },
    "headers": ["atomic"],
    "unimplemented": True,
@@ -574,7 +576,7 @@ def add_version_header(tc):
    },
   {"name": "__cpp_lib_interpolate",
    "values": {
-     "c++2a": 201902L,
+     "c++2a": int(201902),
    },
    "headers": ["numeric"],
    },
@@ -910,7 +912,7 @@ def create_table(grid, indent):
   num_cols = len(grid[0])
   result = indent_str + add_divider(col_widths, 2)
   header_flag = 2
-  for row_i in xrange(0, len(grid)):
+  for row_i in range(0, len(grid)):
     row = grid[row_i]
     result = result + indent_str + ' '.join([pad_cell(row[i], col_widths[i]) for i in range(0, len(row))]) + '\n'
     is_cxx_header = row[0].startswith('**')
@@ -969,7 +971,7 @@ def produce_docs():
 .. table:: Current Status
      :name: feature-status-table
      :widths: auto
-     
+
 {status_tables}
 
 """.format(status_tables=create_table(get_status_table(), 4))


        


More information about the libcxx-commits mailing list