[PATCH] D114151: [clang-format] [C++20] [Module] clang-format couldn't recognize partitions
Owen Pan via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Nov 19 07:26:35 PST 2021
owenpan added inline comments.
================
Comment at: clang/lib/Format/TokenAnnotator.cpp:3226
+ // No space between module :.
+ if (Left.isOneOf(Keywords.kw_module, tok::kw_export, Keywords.kw_import) &&
+ Right.is(TT_ModulePartitionColon))
----------------
You can remove `kw_export` as it must be followed by `import` or `module`, based on how `TT_ModulePartitionColon` is set on Line 908.
================
Comment at: clang/lib/Format/TokenAnnotator.cpp:3230-3231
+ // No space between import foo:bar but keep a space between import :bar;
+ if (Left.isOneOf(tok::identifier, tok::kw_public, tok::kw_private) &&
+ !Left.is(Keywords.kw_import) && Right.is(TT_ModulePartitionColon))
+ return false;
----------------
You can drop `!Left.is(Keywords.kw_import)` as `import :bar` is already covered by Line 3226. Also, I would remove `kw_public` and `kw_private` as they are not special WRT other keywords when followed by `TT_ModulePartitionColon`.
================
Comment at: clang/lib/Format/TokenAnnotator.cpp:3235
+ if (Left.is(TT_ModulePartitionColon) &&
+ Right.isOneOf(tok::identifier, tok::kw_public, tok::kw_private))
+ return false;
----------------
Is `module :public` a thing in C++20? If not, I would remove `kw_public`.
================
Comment at: clang/lib/Format/TokenAnnotator.cpp:3238
+ // import .....;
+ if (Left.is(Keywords.kw_import) && Right.is(tok::ellipsis))
+ return true;
----------------
You can fold this line into Line 3223 above.
================
Comment at: clang/lib/Format/UnwrappedLineParser.cpp:1253
}
+ if (Style.isCpp()) {
+ nextToken();
----------------
Maybe move this entire block into a function?
================
Comment at: clang/lib/Format/UnwrappedLineParser.cpp:1260
+ // Handle import <foo/bar.h> as we would an include statement
+ if (FormatTok && FormatTok->is(tok::less)) {
+ nextToken();
----------------
You can change this line to `else if (FormatTok->is(tok::less)) {` as `FormatTok` can't be null.
================
Comment at: clang/lib/Format/UnwrappedLineParser.cpp:1262-1264
+ while (FormatTok) {
+ if (FormatTok->is(tok::semi))
+ break;
----------------
You can combine these three lines into one: `while (FormatTok && FormatTok->isNot(tok::semi)) {`
================
Comment at: clang/lib/Format/UnwrappedLineParser.cpp:1267-1268
+ // literals.
+ if (FormatTok->isNot(tok::comment) &&
+ !FormatTok->TokenText.startswith("//"))
+ FormatTok->setType(TT_ImplicitStringLiteral);
----------------
Don't you want to mark up to the matching `>`?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D114151/new/
https://reviews.llvm.org/D114151
More information about the cfe-commits
mailing list