[PATCH] D75455: [clang-format] Allow nested [] in C# attributes
Jonathan B Coe via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 2 06:59:19 PST 2020
jbcoe created this revision.
jbcoe added a reviewer: krasimir.
jbcoe added a project: clang-format.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
Keep track of unpaired [] when identifying C# attribute lines
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D75455
Files:
clang/lib/Format/UnwrappedLineParser.cpp
clang/unittests/Format/FormatTestCSharp.cpp
Index: clang/unittests/Format/FormatTestCSharp.cpp
===================================================================
--- clang/unittests/Format/FormatTestCSharp.cpp
+++ clang/unittests/Format/FormatTestCSharp.cpp
@@ -273,6 +273,15 @@
"{\n"
"}");
+ // [] in an attribute do not cause premature line wrapping or indenting.
+ verifyFormat(R"(//
+public class A
+{
+ [SomeAttribute(new[] { RED, GREEN, BLUE }, -1.0f, 1.0f)]
+ [DoNotSerialize]
+ public Data MemberVariable;
+})");
+
// Unwrappable lines go on a line of their own.
// 'target:' is not treated as a label.
// Modify Style to enforce a column limit.
Index: clang/lib/Format/UnwrappedLineParser.cpp
===================================================================
--- clang/lib/Format/UnwrappedLineParser.cpp
+++ clang/lib/Format/UnwrappedLineParser.cpp
@@ -324,12 +324,21 @@
}
void UnwrappedLineParser::parseCSharpAttribute() {
+ int UnpairedSquareBrackets = 1;
do {
switch (FormatTok->Tok.getKind()) {
case tok::r_square:
nextToken();
- addUnwrappedLine();
- return;
+ --UnpairedSquareBrackets;
+ if (UnpairedSquareBrackets == 0) {
+ addUnwrappedLine();
+ return;
+ }
+ break;
+ case tok::l_square:
+ ++UnpairedSquareBrackets;
+ nextToken();
+ break;
default:
nextToken();
break;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D75455.247632.patch
Type: text/x-patch
Size: 1406 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200302/2808d5ff/attachment-0001.bin>
More information about the cfe-commits
mailing list