Author: sstwcw Date: 2026-09-08T13:27:18Z New Revision: a4e8604a2da580de80debb6a15c9c6d7379a68d5
URL: https://github.com/llvm/llvm-project/commit/a4e8604a2da580de80debb6a15c9c6d7379a68d5 DIFF: https://github.com/llvm/llvm-project/commit/a4e8604a2da580de80debb6a15c9c6d7379a68d5.diff LOG: [clang-format] Recognize the signed modifier for Verilog struct (#219694) after ```SystemVerilog struct packed signed { int a; } pack1; ``` before ```SystemVerilog struct packed signed { int a; } pack1; ``` Added: Modified: clang/lib/Format/UnwrappedLineParser.cpp clang/unittests/Format/FormatTestVerilog.cpp Removed: ################################################################################ diff --git a/clang/lib/Format/UnwrappedLineParser.cpp b/clang/lib/Format/UnwrappedLineParser.cpp index f2ea03b86aae4..ac3eb6fa5bcf5 100644 --- a/clang/lib/Format/UnwrappedLineParser.cpp +++ b/clang/lib/Format/UnwrappedLineParser.cpp @@ -4155,7 +4155,9 @@ void UnwrappedLineParser::parseRecord(bool ParseAsExpr, bool IsJavaRecord) { tok::kw_alignas, tok::l_square) || FormatTok->isAttribute() || ((Style.isJava() || Style.isJavaScript()) && - FormatTok->isOneOf(tok::period, tok::comma))) { + FormatTok->isOneOf(tok::period, tok::comma)) || + (Style.isVerilog() && + FormatTok->isOneOf(tok::kw_signed, tok::kw_unsigned))) { if (Style.isJavaScript() && FormatTok->isOneOf(Keywords.kw_extends, Keywords.kw_implements)) { JSPastExtendsOrImplements = true; diff --git a/clang/unittests/Format/FormatTestVerilog.cpp b/clang/unittests/Format/FormatTestVerilog.cpp index 9b92d3e19204d..9baa3210dbd82 100644 --- a/clang/unittests/Format/FormatTestVerilog.cpp +++ b/clang/unittests/Format/FormatTestVerilog.cpp @@ -1412,6 +1412,27 @@ TEST_F(FormatTestVerilog, StringLiteral) { getStyleWithColumns(getDefaultStyle(), 29)); } +TEST_F(FormatTestVerilog, Struct) { + verifyFormat("struct packed signed {\n" + " int a;\n" + "} pack1;"); + verifyFormat("struct packed {\n" + " int a;\n" + "} pack1;"); + verifyFormat("struct {\n" + " int a;\n" + "} pack1;"); + verifyFormat("typedef struct packed signed {\n" + " bit [3 : 0] GFC;\n" + "} s_atmcell;"); + verifyFormat("typedef struct {\n" + " bit [3 : 0] GFC;\n" + "} s_atmcell;"); + verifyFormat("typedef struct packed {\n" + " bit [3 : 0] GFC;\n" + "} s_atmcell;"); +} + TEST_F(FormatTestVerilog, StructLiteral) { verifyFormat("c = '{0, 0.0};"); verifyFormat("c = '{'{1, 1.0}, '{2, 2.0}};"); _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
