Export of internal Abseil changes
-- 00c451dc81be7fe05f982b08b4ea1edc2ca2c1c5 by Abseil Team <absl-team@google.com>: remove a test that is currently broken on emscripten from running on emscripten. PiperOrigin-RevId: 262005667 -- 9df5f5acb65996bdb99900039a4f01a44811aa14 by CJ Johnson <johnsoncj@google.com>: Adds a layer of macro-indirection to opening up namespace absl inside a macro. This helps avoid an issue identified with the LTS inline namespaces PiperOrigin-RevId: 261990937 -- 5d40aa129cd77a1b853e5389aff7eacffe5c8204 by Gennadiy Rozental <rogeeff@google.com>: Fix handling of new lines in flag help descriptions. If there are explicit new lines in a flag help description string, we respect it and format the usage message accordingly. PiperOrigin-RevId: 261974244 -- 4997b5a2ddb983969059470a2d2bc2416b3d785e by CJ Johnson <johnsoncj@google.com>: Import of CCTZ from GitHub. PiperOrigin-RevId: 261955031 GitOrigin-RevId: 00c451dc81be7fe05f982b08b4ea1edc2ca2c1c5 Change-Id: I5a13bfb15bba0f7b6e49c0655c57c3addfeb1c72
This commit is contained in:
		
							parent
							
								
									67222ffc4c
								
							
						
					
					
						commit
						b49b8d16b6
					
				
					 5 changed files with 57 additions and 8 deletions
				
			
		|  | @ -217,7 +217,7 @@ void SetFlag(absl::Flag<T>* flag, const V& v) { | ||||||
| // global name for FLAGS_no<flag_name> symbol, thus preventing the possibility
 | // global name for FLAGS_no<flag_name> symbol, thus preventing the possibility
 | ||||||
| // of defining two flags with names foo and nofoo.
 | // of defining two flags with names foo and nofoo.
 | ||||||
| #define ABSL_FLAG_IMPL(Type, name, default_value, help)             \ | #define ABSL_FLAG_IMPL(Type, name, default_value, help)             \ | ||||||
|   namespace absl {}                                                 \ |   namespace absl /* block flags in namespaces */ {}                 \ | ||||||
|   ABSL_FLAG_IMPL_DECLARE_DEF_VAL_WRAPPER(name, Type, default_value) \ |   ABSL_FLAG_IMPL_DECLARE_DEF_VAL_WRAPPER(name, Type, default_value) \ | ||||||
|   ABSL_FLAG_IMPL_DECLARE_HELP_WRAPPER(name, help)                   \ |   ABSL_FLAG_IMPL_DECLARE_HELP_WRAPPER(name, help)                   \ | ||||||
|   ABSL_CONST_INIT absl::Flag<Type> FLAGS_##name(                    \ |   ABSL_CONST_INIT absl::Flag<Type> FLAGS_##name(                    \ | ||||||
|  |  | ||||||
|  | @ -111,8 +111,16 @@ class FlagHelpPrettyPrinter { | ||||||
| 
 | 
 | ||||||
|     std::vector<absl::string_view> tokens; |     std::vector<absl::string_view> tokens; | ||||||
|     if (wrap_line) { |     if (wrap_line) { | ||||||
|       tokens = absl::StrSplit(str, absl::ByAnyChar(" \f\n\r\t\v"), |       for (auto line : absl::StrSplit(str, absl::ByAnyChar("\n\r"))) { | ||||||
|                               absl::SkipEmpty()); |         if (!tokens.empty()) { | ||||||
|  |           // Keep line separators in the input std::string.
 | ||||||
|  |           tokens.push_back("\n"); | ||||||
|  |         } | ||||||
|  |         for (auto token : | ||||||
|  |              absl::StrSplit(line, absl::ByAnyChar(" \t"), absl::SkipEmpty())) { | ||||||
|  |           tokens.push_back(token); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|     } else { |     } else { | ||||||
|       tokens.push_back(str); |       tokens.push_back(str); | ||||||
|     } |     } | ||||||
|  | @ -120,6 +128,12 @@ class FlagHelpPrettyPrinter { | ||||||
|     for (auto token : tokens) { |     for (auto token : tokens) { | ||||||
|       bool new_line = (line_len_ == 0); |       bool new_line = (line_len_ == 0); | ||||||
| 
 | 
 | ||||||
|  |       // Respect line separators in the input std::string.
 | ||||||
|  |       if (token == "\n") { | ||||||
|  |         EndLine(); | ||||||
|  |         continue; | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|       // Write the token, ending the std::string first if necessary/possible.
 |       // Write the token, ending the std::string first if necessary/possible.
 | ||||||
|       if (!new_line && (line_len_ + token.size() >= max_line_len_)) { |       if (!new_line && (line_len_ + token.size() >= max_line_len_)) { | ||||||
|         EndLine(); |         EndLine(); | ||||||
|  |  | ||||||
|  | @ -48,6 +48,14 @@ std::string AbslUnparseFlag(const UDT&) { return "UDT{}"; } | ||||||
| ABSL_FLAG(UDT, usage_reporting_test_flag_05, {}, | ABSL_FLAG(UDT, usage_reporting_test_flag_05, {}, | ||||||
|           "usage_reporting_test_flag_05 help message"); |           "usage_reporting_test_flag_05 help message"); | ||||||
| 
 | 
 | ||||||
|  | ABSL_FLAG( | ||||||
|  |     std::string, usage_reporting_test_flag_06, {}, | ||||||
|  |     "usage_reporting_test_flag_06 help message.\n" | ||||||
|  |     "\n" | ||||||
|  |     "Some more help.\n" | ||||||
|  |     "Even more long long long long long long long long long long long long " | ||||||
|  |     "help message."); | ||||||
|  | 
 | ||||||
| namespace { | namespace { | ||||||
| 
 | 
 | ||||||
| namespace flags = absl::flags_internal; | namespace flags = absl::flags_internal; | ||||||
|  | @ -173,6 +181,11 @@ TEST_F(UsageReportingTest, TestFlagsHelpHRF) { | ||||||
|       default: 1000000000000004; |       default: 1000000000000004; | ||||||
|     -usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message); |     -usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message); | ||||||
|       default: UDT{}; |       default: UDT{}; | ||||||
|  |     -usage_reporting_test_flag_06 (usage_reporting_test_flag_06 help message. | ||||||
|  | 
 | ||||||
|  |       Some more help. | ||||||
|  |       Even more long long long long long long long long long long long long help | ||||||
|  |       message.); default: ""; | ||||||
| )"; | )"; | ||||||
| 
 | 
 | ||||||
|   std::stringstream test_buf_01; |   std::stringstream test_buf_01; | ||||||
|  | @ -244,6 +257,11 @@ TEST_F(UsageReportingTest, TestUsageFlag_helpshort) { | ||||||
|       default: 1000000000000004; |       default: 1000000000000004; | ||||||
|     -usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message); |     -usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message); | ||||||
|       default: UDT{}; |       default: UDT{}; | ||||||
|  |     -usage_reporting_test_flag_06 (usage_reporting_test_flag_06 help message. | ||||||
|  | 
 | ||||||
|  |       Some more help. | ||||||
|  |       Even more long long long long long long long long long long long long help | ||||||
|  |       message.); default: ""; | ||||||
| )"); | )"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -268,6 +286,11 @@ TEST_F(UsageReportingTest, TestUsageFlag_help) { | ||||||
|       default: 1000000000000004; |       default: 1000000000000004; | ||||||
|     -usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message); |     -usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message); | ||||||
|       default: UDT{}; |       default: UDT{}; | ||||||
|  |     -usage_reporting_test_flag_06 (usage_reporting_test_flag_06 help message. | ||||||
|  | 
 | ||||||
|  |       Some more help. | ||||||
|  |       Even more long long long long long long long long long long long long help | ||||||
|  |       message.); default: ""; | ||||||
| 
 | 
 | ||||||
| Try --helpfull to get a list of all flags. | Try --helpfull to get a list of all flags. | ||||||
| )"); | )"); | ||||||
|  | @ -294,6 +317,11 @@ TEST_F(UsageReportingTest, TestUsageFlag_helppackage) { | ||||||
|       default: 1000000000000004; |       default: 1000000000000004; | ||||||
|     -usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message); |     -usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message); | ||||||
|       default: UDT{}; |       default: UDT{}; | ||||||
|  |     -usage_reporting_test_flag_06 (usage_reporting_test_flag_06 help message. | ||||||
|  | 
 | ||||||
|  |       Some more help. | ||||||
|  |       Even more long long long long long long long long long long long long help | ||||||
|  |       message.); default: ""; | ||||||
| 
 | 
 | ||||||
| Try --helpfull to get a list of all flags. | Try --helpfull to get a list of all flags. | ||||||
| )"); | )"); | ||||||
|  | @ -354,6 +382,11 @@ TEST_F(UsageReportingTest, TestUsageFlag_helpon) { | ||||||
|       default: 1000000000000004; |       default: 1000000000000004; | ||||||
|     -usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message); |     -usage_reporting_test_flag_05 (usage_reporting_test_flag_05 help message); | ||||||
|       default: UDT{}; |       default: UDT{}; | ||||||
|  |     -usage_reporting_test_flag_06 (usage_reporting_test_flag_06 help message. | ||||||
|  | 
 | ||||||
|  |       Some more help. | ||||||
|  |       Even more long long long long long long long long long long long long help | ||||||
|  |       message.); default: ""; | ||||||
| )"); | )"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -100,9 +100,9 @@ const char* ParseDateTime(const char* p, PosixTransition* res) { | ||||||
|           int weekday = 0; |           int weekday = 0; | ||||||
|           if ((p = ParseInt(p + 1, 0, 6, &weekday)) != nullptr) { |           if ((p = ParseInt(p + 1, 0, 6, &weekday)) != nullptr) { | ||||||
|             res->date.fmt = PosixTransition::M; |             res->date.fmt = PosixTransition::M; | ||||||
|             res->date.m.month = static_cast<int_fast8_t>(month); |             res->date.m.month = static_cast<std::int_fast8_t>(month); | ||||||
|             res->date.m.week = static_cast<int_fast8_t>(week); |             res->date.m.week = static_cast<std::int_fast8_t>(week); | ||||||
|             res->date.m.weekday = static_cast<int_fast8_t>(weekday); |             res->date.m.weekday = static_cast<std::int_fast8_t>(weekday); | ||||||
|           } |           } | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|  | @ -110,13 +110,13 @@ const char* ParseDateTime(const char* p, PosixTransition* res) { | ||||||
|       int day = 0; |       int day = 0; | ||||||
|       if ((p = ParseInt(p + 1, 1, 365, &day)) != nullptr) { |       if ((p = ParseInt(p + 1, 1, 365, &day)) != nullptr) { | ||||||
|         res->date.fmt = PosixTransition::J; |         res->date.fmt = PosixTransition::J; | ||||||
|         res->date.j.day = static_cast<int_fast16_t>(day); |         res->date.j.day = static_cast<std::int_fast16_t>(day); | ||||||
|       } |       } | ||||||
|     } else { |     } else { | ||||||
|       int day = 0; |       int day = 0; | ||||||
|       if ((p = ParseInt(p, 0, 365, &day)) != nullptr) { |       if ((p = ParseInt(p, 0, 365, &day)) != nullptr) { | ||||||
|         res->date.fmt = PosixTransition::N; |         res->date.fmt = PosixTransition::N; | ||||||
|         res->date.j.day = static_cast<int_fast16_t>(day); |         res->date.n.day = static_cast<std::int_fast16_t>(day); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | @ -1628,6 +1628,7 @@ TEST(optionalTest, AssignmentConstraints) { | ||||||
|   EXPECT_TRUE(absl::is_copy_assignable<absl::optional<AnyLike>>::value); |   EXPECT_TRUE(absl::is_copy_assignable<absl::optional<AnyLike>>::value); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | #if !defined(__EMSCRIPTEN__) | ||||||
| struct NestedClassBug { | struct NestedClassBug { | ||||||
|   struct Inner { |   struct Inner { | ||||||
|     bool dummy = false; |     bool dummy = false; | ||||||
|  | @ -1650,5 +1651,6 @@ TEST(optionalTest, InPlaceTSFINAEBug) { | ||||||
|   o.emplace(); |   o.emplace(); | ||||||
|   EXPECT_TRUE(o.has_value()); |   EXPECT_TRUE(o.has_value()); | ||||||
| } | } | ||||||
|  | #endif  // !defined(__EMSCRIPTEN__)
 | ||||||
| 
 | 
 | ||||||
| }  // namespace
 | }  // namespace
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue