Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement range-default-formatter #4716

Merged

Conversation

frederick-vs-ja
Copy link
Contributor

@frederick-vs-ja frederick-vs-ja commented Jun 9, 2024

Towards #2919/WG21-P2286R8/WG21-P2585R1.

The following tests are derived from libc++'s test files:

  • P2286R8_text_formatting_range_map
  • P2286R8_text_formatting_range_sequence
  • P2286R8_text_formatting_range_set
  • P2286R8_text_formatting_range_string

Note that libc++'s range_formatter is currently buggy on the m option, see LLVM-90196 and LLVM-94562.

The test P2286R8_text_formatting_tuple_disambiguation covers formatting pairs and tuples that are also ranges.

Unblocks libcxx tests:

  • std/containers/sequences/vector.bool/vector.bool.fmt/format.functions.format.pass.cpp
  • std/containers/sequences/vector.bool/vector.bool.fmt/format.functions.vformat.pass.cpp
  • std/utilities/format/format.range/format.range.fmtdef/parse.pass.cpp
  • std/utilities/format/format.range/format.range.fmtmap/format.functions.format.pass.cpp
  • std/utilities/format/format.range/format.range.fmtmap/format.functions.vformat.pass.cpp
  • std/utilities/format/format.range/format.range.fmtmap/parse.pass.cpp
  • std/utilities/format/format.range/format.range.fmtset/parse.pass.cpp
  • std/utilities/format/format.range/format.range.fmtstr/format.functions.format.pass.cpp
  • std/utilities/format/format.range/format.range.fmtstr/format.functions.vformat.pass.cpp
  • std/utilities/format/format.range/format.range.fmtstr/parse.pass.cpp
  • std/input.output/iostream.format/print.fun/includes.compile.pass.cpp

@frederick-vs-ja frederick-vs-ja requested a review from a team as a code owner June 9, 2024 01:45
@frederick-vs-ja frederick-vs-ja force-pushed the range-default-formatter branch 2 times, most recently from af2c18c to a86faaf Compare June 9, 2024 04:17
@frederick-vs-ja

This comment was marked as resolved.

@frederick-vs-ja frederick-vs-ja force-pushed the range-default-formatter branch from a86faaf to 065f92c Compare June 9, 2024 05:40
@cpplearner
Copy link
Contributor

cpplearner commented Jun 9, 2024

There are a lot of code movements. To make code review easier, can you split them into a separate commit?

The following tests are derived from libc++'s test files:
- `P2286R8_text_formatting_range_map`
- `P2286R8_text_formatting_range_sequence`
- `P2286R8_text_formatting_range_set`
- `P2286R8_text_formatting_range_string`

Note that libc++'s `range_formatter` is currently buggy on the `m`
option, see LLVM-90196 and LLVM-94562.

The test `P2286R8_text_formatting_tuple_disambiguation` covers
formatting `pair`s and `tuple`s that are also ranges.

Unblocks libcxx tests:
- `std/containers/sequences/vector.bool/vector.bool.fmt/format.functions.format.pass.cpp`
- `std/containers/sequences/vector.bool/vector.bool.fmt/format.functions.vformat.pass.cpp`
- `std/utilities/format/format.range/format.range.fmtdef/parse.pass.cpp`
- `std/utilities/format/format.range/format.range.fmtmap/format.functions.format.pass.cpp`
- `std/utilities/format/format.range/format.range.fmtmap/format.functions.vformat.pass.cpp`
- `std/utilities/format/format.range/format.range.fmtmap/parse.pass.cpp`
- `std/utilities/format/format.range/format.range.fmtset/parse.pass.cpp`
- `std/utilities/format/format.range/format.range.fmtstr/format.functions.format.pass.cpp`
- `std/utilities/format/format.range/format.range.fmtstr/format.functions.vformat.pass.cpp`
- `std/utilities/format/format.range/format.range.fmtstr/parse.pass.cpp`
- `std/input.output/iostream.format/print.fun/includes.compile.pass.cpp`
@frederick-vs-ja frederick-vs-ja force-pushed the range-default-formatter branch from 065f92c to e0b8a30 Compare June 9, 2024 13:20
@frederick-vs-ja
Copy link
Contributor Author

There are a lot of code movements. To make code review easier, can you split them into a separate commit?

Done.

Removing one improper `// exposition only` comment.

Co-authored-by: S. B. Tam <[email protected]>
@StephanTLavavej StephanTLavavej added ranges C++20/23 ranges format C++20/23 format cxx23 C++23 feature labels Jun 9, 2024
@StephanTLavavej StephanTLavavej self-assigned this Jun 9, 2024
@StephanTLavavej StephanTLavavej removed their assignment Jun 25, 2024
@StephanTLavavej StephanTLavavej self-assigned this Jun 26, 2024
@StephanTLavavej
Copy link
Member

I'm mirroring this to the MSVC-internal repo - please notify me if any further changes are pushed.

@StephanTLavavej StephanTLavavej merged commit 756f6d5 into microsoft:main Jun 27, 2024
39 checks passed
@StephanTLavavej
Copy link
Member

Thanks for this next step towards completing C++23! 🎉 😻 💚

@frederick-vs-ja frederick-vs-ja deleted the range-default-formatter branch June 27, 2024 23:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cxx23 C++23 feature format C++20/23 format ranges C++20/23 ranges
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

3 participants