diff --git a/verible/verilog/formatting/BUILD b/verible/verilog/formatting/BUILD
index 6431226..eb089df 100644
--- a/verible/verilog/formatting/BUILD
+++ b/verible/verilog/formatting/BUILD
@@ -181,28 +181,91 @@
     ],
 )
 
-cc_test(
-    name = "formatter_test",
-    srcs = ["formatter_test.cc"],
+cc_library(
+    name = "formatter-test-utils",
+    testonly = True,
+    hdrs = ["formatter-test-utils.h"],
     deps = [
         ":format-style",
         ":formatter",
-        "//verible/common/formatting:align",
-        "//verible/common/formatting:basic-format-style",
-        "//verible/common/strings:display-utils",
-        "//verible/common/strings:position",
-        "//verible/common/text:text-structure",
-        "//verible/common/util:interval",
         "//verible/common/util:logging",
-        "//verible/verilog/analysis:verilog-analyzer",
-        "@abseil-cpp//absl/log:die_if_null",
-        "@abseil-cpp//absl/status",
-        "@abseil-cpp//absl/strings",
         "@googletest//:gtest",
-        "@googletest//:gtest_main",
     ],
 )
 
+_FORMATTER_E2E_TEST_DEPS = [
+    ":format-style",
+    ":formatter",
+    ":formatter-test-utils",
+    "//verible/common/formatting:align",
+    "//verible/common/formatting:basic-format-style",
+    "//verible/common/strings:display-utils",
+    "//verible/common/strings:position",
+    "//verible/common/text:text-structure",
+    "//verible/common/util:interval",
+    "//verible/common/util:logging",
+    "//verible/verilog/analysis:verilog-analyzer",
+    "@abseil-cpp//absl/log:die_if_null",
+    "@abseil-cpp//absl/status",
+    "@abseil-cpp//absl/strings",
+    "@googletest//:gtest",
+    "@googletest//:gtest_main",
+]
+
+cc_test(
+    name = "formatter_test",
+    srcs = ["formatter_test.cc"],
+    deps = _FORMATTER_E2E_TEST_DEPS,
+)
+
+cc_test(
+    name = "formatter_macro_test",
+    srcs = ["formatter_macro_test.cc"],
+    deps = _FORMATTER_E2E_TEST_DEPS,
+)
+
+cc_test(
+    name = "formatter_module_test",
+    srcs = ["formatter_module_test.cc"],
+    deps = _FORMATTER_E2E_TEST_DEPS,
+)
+
+cc_test(
+    name = "formatter_class_package_test",
+    srcs = ["formatter_class_package_test.cc"],
+    deps = _FORMATTER_E2E_TEST_DEPS,
+)
+
+cc_test(
+    name = "formatter_function_task_test",
+    srcs = ["formatter_function_task_test.cc"],
+    deps = _FORMATTER_E2E_TEST_DEPS,
+)
+
+cc_test(
+    name = "formatter_align_test",
+    srcs = ["formatter_align_test.cc"],
+    deps = _FORMATTER_E2E_TEST_DEPS,
+)
+
+cc_test(
+    name = "formatter_wrap_style_test",
+    srcs = ["formatter_wrap_style_test.cc"],
+    deps = _FORMATTER_E2E_TEST_DEPS,
+)
+
+cc_test(
+    name = "formatter_disable_test",
+    srcs = ["formatter_disable_test.cc"],
+    deps = _FORMATTER_E2E_TEST_DEPS,
+)
+
+cc_test(
+    name = "formatter_issue_regression_test",
+    srcs = ["formatter_issue_regression_test.cc"],
+    deps = _FORMATTER_E2E_TEST_DEPS,
+)
+
 cc_test(
     name = "formatter-tuning_test",
     srcs = ["formatter-tuning_test.cc"],
diff --git a/verible/verilog/formatting/README.md b/verible/verilog/formatting/README.md
index 6f815bf..03b6f5e 100644
--- a/verible/verilog/formatting/README.md
+++ b/verible/verilog/formatting/README.md
@@ -16,7 +16,23 @@
 Below is a quick summary of the major components.
 
 [formatter.h](formatter.h) contains the top-level entry point into the
-formatter. Text-in-text-out tests are in [formatter_test.cc](formatter_test.cc).
+formatter. Text-in-text-out tests are split by concern to reduce merge
+conflicts:
+
+- [formatter_test.cc](formatter_test.cc) — core smoke / `VerifyFormatting`
+- [formatter_macro_test.cc](formatter_macro_test.cc) — preprocessor, `` `uvm ``, directives
+- [formatter_module_test.cc](formatter_module_test.cc) — modules, ports, nets, expressions
+- [formatter_class_package_test.cc](formatter_class_package_test.cc) — classes, packages, constraints
+- [formatter_function_task_test.cc](formatter_function_task_test.cc) — functions, tasks, properties
+- [formatter_align_test.cc](formatter_align_test.cc) — tabular / param alignment
+- [formatter_wrap_style_test.cc](formatter_wrap_style_test.cc) — wrap/indent options, diagnostics
+- [formatter_disable_test.cc](formatter_disable_test.cc) — `verilog_format` on/off
+- [formatter_issue_regression_test.cc](formatter_issue_regression_test.cc) — GitHub issue regressions
+- Shared helpers: [formatter-test-utils.h](formatter-test-utils.h)
+
+**New GitHub-issue formatter regressions belong in
+`formatter_issue_regression_test.cc` only** (do not append them to
+`formatter_test.cc`).
 
 [FormatStyle](format_style.h) defines ways in which formatting can be
 configured.
diff --git a/verible/verilog/formatting/formatter-test-utils.h b/verible/verilog/formatting/formatter-test-utils.h
new file mode 100644
index 0000000..0be6382
--- /dev/null
+++ b/verible/verilog/formatting/formatter-test-utils.h
@@ -0,0 +1,69 @@
+// Copyright 2017-2026 The Verible Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Shared helpers for formatter end-to-end tests.
+// Penalty-sensitive cases belong in formatter-tuning_test.cc.
+
+#ifndef VERIBLE_VERILOG_FORMATTING_FORMATTER_TEST_UTILS_H_
+#define VERIBLE_VERILOG_FORMATTING_FORMATTER_TEST_UTILS_H_
+
+#include <sstream>
+#include <string_view>
+
+#include "gtest/gtest.h"
+#include "verible/common/util/logging.h"
+#include "verible/verilog/formatting/format-style.h"
+#include "verible/verilog/formatting/formatter.h"
+
+#undef EXPECT_OK
+#define EXPECT_OK(value) EXPECT_TRUE((value).ok())
+
+#undef ASSERT_OK
+#define ASSERT_OK(value) ASSERT_TRUE((value).ok())
+
+namespace verilog {
+namespace formatter {
+
+struct FormatterTestCase {
+  std::string_view input;
+  std::string_view expected;
+};
+
+// Runs FormatVerilog on each case and checks status + exact expected output.
+template <typename CaseRange>
+void RunFormatterTestCases(const FormatStyle &style, const CaseRange &cases) {
+  for (const auto &test_case : cases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Convenience: column_limit 40 / indent 2 / wrap 4 — the default E2E style.
+template <typename CaseRange>
+void RunFormatterTestCases40(const CaseRange &cases) {
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  RunFormatterTestCases(style, cases);
+}
+
+}  // namespace formatter
+}  // namespace verilog
+
+#endif  // VERIBLE_VERILOG_FORMATTING_FORMATTER_TEST_UTILS_H_
diff --git a/verible/verilog/formatting/formatter_align_test.cc b/verible/verilog/formatting/formatter_align_test.cc
new file mode 100644
index 0000000..affb5a7
--- /dev/null
+++ b/verible/verilog/formatting/formatter_align_test.cc
@@ -0,0 +1,5066 @@
+// Copyright 2017-2026 The Verible Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Test cases in this file should be *insensitive* to wrapping penalties.
+// Penalty-sensitive tests belong in formatter-tuning_test.cc.
+
+#include <sstream>
+#include <string_view>
+
+#include "gtest/gtest.h"
+#include "verible/common/formatting/align.h"
+#include "verible/common/util/logging.h"
+#include "verible/verilog/formatting/format-style.h"
+#include "verible/verilog/formatting/formatter-test-utils.h"
+#include "verible/verilog/formatting/formatter.h"
+
+namespace verilog {
+namespace formatter {
+namespace {
+
+using verible::AlignmentPolicy;
+
+static constexpr FormatterTestCase kAlignFormatterTestCases[] = {
+    // module instantiation named ports tabular alignment
+    //{// module instantiation with no port, only comments
+    //    "module m;\n"
+    //    "foo bar(\n"
+    //    "\t//comment1\n"
+    //    "//comment2\n"
+    //    ");\n"
+    //    "endmodule\n",
+    //    "module m;\n"
+    //    "  foo bar (\n"
+    //    "      //comment1\n"
+    //    "      //comment2\n"
+    //    "  );\n"
+    //    "endmodule\n"
+    //},
+    {// all named ports
+     "module m;\n"
+     "foo bar(.a(a), .aa(aa), .aaa(aaa));\n"
+     "endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .a  (a),\n"
+     "      .aa (aa),\n"
+     "      .aaa(aaa)\n"
+     "  );\n"
+     "endmodule\n"},
+    {// named ports left unconnected
+     "module m;\n"
+     "foo bar(.a(), .aa(), .aaa());\n"
+     "endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .a  (),\n"
+     "      .aa (),\n"
+     "      .aaa()\n"
+     "  );\n"
+     "endmodule\n"},
+    {// multiple named ports groups separated by blank line
+     "module m;\n"
+     "foo bar(.a(a), .aaa(aaa),\n\n .b(b), .bbbbbb(bbbbb));\n"
+     "endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .a  (a),\n"
+     "      .aaa(aaa),\n"
+     "\n"
+     "      .b     (b),\n"
+     "      .bbbbbb(bbbbb)\n"
+     "  );\n"
+     "endmodule\n"},
+    {// named ports with concatenation
+     "module m;\n"
+     "foo bar(.a(a), .aaa({a,b,c}));\n"
+     "endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .a  (a),\n"
+     "      .aaa({a, b, c})\n"
+     "  );\n"
+     "endmodule\n"},
+    {// name ports with slices
+     "module m;\n"
+     "foo bar(.a(a), .aaa(q[r:s]));\n"
+     "endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .a  (a),\n"
+     "      .aaa(q[r:s])\n"
+     "  );\n"
+     "endmodule\n"},
+    {// named ports with pre-proc directives
+     "module m;\n"
+     "foo bar(.a(a), `ifdef MACRO .aa(aa), `endif .aaa(aaa));\n"
+     "endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .a  (a),\n"
+     "`ifdef MACRO\n"
+     "      .aa (aa),\n"
+     "`endif\n"
+     "      .aaa(aaa)\n"
+     "  );\n"
+     "endmodule\n"},
+    {// named ports with macros
+     "module m;\n"
+     "foo bar(.a(a), .aa(aa[`RANGE]), .aaa(aaa));\n"
+     "endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .a  (a),\n"
+     "      .aa (aa[`RANGE]),\n"
+     "      .aaa(aaa)\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "foo bar(.a(a), .AA, .aaa(aaa));\n"
+     "endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .a  (a),\n"
+     "      .AA,\n"
+     "      .aaa(aaa)\n"
+     "  );\n"
+     "endmodule\n"},
+    {// name ports with comments
+     "module m;\n"
+     "foo bar(.a(a), .aa(aa)/*comment*/, .aaa(aaa));\n"
+     "endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .a  (a),\n"
+     "      .aa (aa)  /*comment*/,\n"
+     "      .aaa(aaa)\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "foo bar(.a(a),//comment1\n .aaa(aaa)//comment2\n);\n"
+     "endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .a  (a),   //comment1\n"
+     "      .aaa(aaa)  //comment2\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "foo bar(.a(a),\n"
+     " //.aa(aa),\n"
+     ".aaa(aaa));\n"
+     "endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .a  (a),\n"
+     "      //.aa(aa),\n"
+     "      .aaa(aaa)\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "foo bar(\n"
+     ".a(a) //comment1\n"
+     ", .aaa(aaa) //comment2\n"
+     ") //comment3\n"
+     ";\n"
+     "endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "        .a  (a)    //comment1\n"
+     "      , .aaa(aaa)  //comment2\n"
+     "  )  //comment3\n"
+     "  ;\n"
+     "endmodule\n"},
+    {// module instantiation with all implicit connections
+     "module m;\n"
+     "foo bar(.a, .aa, .aaaaa);\n"
+     "endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .a,\n"
+     "      .aa,\n"
+     "      .aaaaa\n"
+     "  );\n"
+     "endmodule\n"},
+    {// named ports corssed with implicit connections
+     "module m;\n"
+     "foo bar(.a(a), .aa, .aaaaa(aaaaa));\n"
+     "endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .a    (a),\n"
+     "      .aa,\n"
+     "      .aaaaa(aaaaa)\n"
+     "  );\n"
+     "endmodule\n"},
+    {// named ports corssed with wildcard connections
+     "module m;\n"
+     "foo bar(.a(a), .aaa(aaa), .*);\n"
+     "endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .a  (a),\n"
+     "      .aaa(aaa),\n"
+     "      .*\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "foo bar(.a(a), .aa(aa), .* , .aaa(aaa));\n"
+     "endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .a  (a),\n"
+     "      .aa (aa),\n"
+     "      .*,\n"
+     "      .aaa(aaa)\n"
+     "  );\n"
+     "endmodule\n"},
+
+    // Parameterized data types, declarations inside #() tabular alignment
+    {// parameterized module with 'list_of_param_assignments'
+     "module foo #(A = 2, AA = 22, AAA = 222);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    A   = 2,\n"
+     "    AA  = 22,\n"
+     "    AAA = 222\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'parameter_declaration'
+     "module foo #(parameter int a = 2, parameter int aa = 22);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    parameter int a  = 2,\n"
+     "    parameter int aa = 22\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'parameter_declaration' and comments
+     "module foo #(//comment\nparameter int a = 2, parameter int aa = 22);\n"
+     "endmodule\n",
+     "module foo #(  //comment\n"
+     "    parameter int a  = 2,\n"
+     "    parameter int aa = 22\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'parameter_declaration' and trailing comments
+     "module foo #(parameter int a = 2,//comment\n parameter int aa = 22);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    parameter int a  = 2,  //comment\n"
+     "    parameter int aa = 22\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'parameter_declaration' and pre-proc
+     "module foo #(parameter int a = 2,\n"
+     "`ifdef MACRO parameter int aa = 22, `endif\n"
+     "parameter int aaa = 222);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    parameter int a   = 2,\n"
+     "`ifdef MACRO\n"
+     "    parameter int aa  = 22,\n"
+     "`endif\n"
+     "    parameter int aaa = 222\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'parameter_declaration' and packed dimensions
+     "module foo #(parameter logic [3:0] a = 2, parameter logic [30:0] aa = "
+     "22);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    parameter logic [ 3:0] a  = 2,\n"
+     "    parameter logic [30:0] aa = 22\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'parameter_declaration' and unpacked
+     // dimensions
+     "module foo #(parameter logic a[3:0] = 2, parameter logic  aa [30:0] = "
+     "22);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    parameter logic a [ 3:0] = 2,\n"
+     "    parameter logic aa[30:0] = 22\n"
+     ");\n"
+     "endmodule\n"},
+
+    {// parameterized module with 'local_parameter_declaration'
+     "module foo #(localparam int a = 2, localparam int aa = 22);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    localparam int a  = 2,\n"
+     "    localparam int aa = 22\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'local_parameter_declaration' and comments
+     "module foo #(//comment\nlocalparam int a = 2, localparam int aa = 22);\n"
+     "endmodule\n",
+     "module foo #(  //comment\n"
+     "    localparam int a  = 2,\n"
+     "    localparam int aa = 22\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'local_parameter_declaration' and trailing
+     // comments
+     "module foo #(localparam int a = 2,//comment\n localparam int aa = 22);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    localparam int a  = 2,  //comment\n"
+     "    localparam int aa = 22\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'local_parameter_declaration' and pre-proc
+     "module foo #(localparam int a = 2,\n"
+     "`ifdef MACRO localparam int aa = 22, `endif\n"
+     "localparam int aaa = 222);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    localparam int a   = 2,\n"
+     "`ifdef MACRO\n"
+     "    localparam int aa  = 22,\n"
+     "`endif\n"
+     "    localparam int aaa = 222\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'local_parameter_declaration' and packed
+     // dimensions
+     "module foo #(localparam logic [3:0] a = 2, localparam logic [30:0] aa = "
+     "22);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    localparam logic [ 3:0] a  = 2,\n"
+     "    localparam logic [30:0] aa = 22\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'local_parameter_declaration' and unpacked
+     // dimensions
+     "module foo #(localparam logic a[3:0] = 2, localparam logic  aa [30:0] = "
+     "22);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    localparam logic a [ 3:0] = 2,\n"
+     "    localparam logic aa[30:0] = 22\n"
+     ");\n"
+     "endmodule\n"},
+
+    {// parameterized module with 'data_type list_of_param_assignments'
+     "module foo #( int a = 2,  real aa = 22, longint aaa = 222);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    int     a   = 2,\n"
+     "    real    aa  = 22,\n"
+     "    longint aaa = 222\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'data_type list_of_param_assignments' and
+     // comments
+     "module foo #(//comment\nint a = 2,  shortreal aa = 22, longint aaa = "
+     "222);\n"
+     "endmodule\n",
+     "module foo #(  //comment\n"
+     "    int       a   = 2,\n"
+     "    shortreal aa  = 22,\n"
+     "    longint   aaa = 222\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'data_type list_of_param_assignments' and
+     // trailing comments
+     "module foo #(int a = 2,  shortreal aa = 22,//comment\n longint aaa = "
+     "222);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    int       a   = 2,\n"
+     "    shortreal aa  = 22,  //comment\n"
+     "    longint   aaa = 222\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'data_type list_of_param_assignments' and
+     // pre-proc
+     "module foo #(int a = 2,\n"
+     "`ifdef MACRO shortreal aa = 22, `endif\n"
+     " longint aaa = 222);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    int       a   = 2,\n"
+     "`ifdef MACRO\n"
+     "    shortreal aa  = 22,\n"
+     "`endif\n"
+     "    longint   aaa = 222\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'data_type list_of_param_assignments' and
+     // packed dimensions
+     "module foo #(bit [1:0] a = 2,  reg [12:0] aa = 22, logic [123:0] aaa = "
+     "222);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    bit   [  1:0] a   = 2,\n"
+     "    reg   [ 12:0] aa  = 22,\n"
+     "    logic [123:0] aaa = 222\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'data_type list_of_param_assignments' and
+     // unpacked dimensions
+     "module foo #(bit  a[1:0] = 2,  reg  aa[12:0] = 22, logic aaa [123:0]  = "
+     "222);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    bit   a  [  1:0] = 2,\n"
+     "    reg   aa [ 12:0] = 22,\n"
+     "    logic aaa[123:0] = 222\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'type list_of_type_assignments'
+     "module foo #(type T = int, type TT = bit, type TTT= C#(logic) );\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    type T   = int,\n"
+     "    type TT  = bit,\n"
+     "    type TTT = C#(logic)\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'type list_of_type_assignments' and comments
+     "module foo #(//comment\ntype T = int, type TT = bit, type TTT= C#(logic) "
+     ");\n"
+     "endmodule\n",
+     "module foo #(  //comment\n"
+     "    type T   = int,\n"
+     "    type TT  = bit,\n"
+     "    type TTT = C#(logic)\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'data_type list_of_param_assignments' and
+     // trailing comments
+     "module foo #(type T = int, type TT = bit, //comment\n type TTT= "
+     "C#(logic) );\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    type T   = int,\n"
+     "    type TT  = bit,       //comment\n"
+     "    type TTT = C#(logic)\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'data_type list_of_param_assignments' and
+     // pre-proc
+     "module foo #(type T = int,\n"
+     "`ifdef MACRO type TT = bit, `endif\n"
+     " type TTT= C#(logic));\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    type T   = int,\n"
+     "`ifdef MACRO\n"
+     "    type TT  = bit,\n"
+     "`endif\n"
+     "    type TTT = C#(logic)\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'data_type list_of_param_assignments' and
+     // packed dimensions
+     "module foo #(type T = int [3:0], type TT = bit [250:0]);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    type T  = int [  3:0],\n"
+     "    type TT = bit [250:0]\n"
+     ");\n"
+     "endmodule\n"},
+    {"module foo #(type T = int, "
+     "A = 2, int AA = 22, parameter AAA = 222, parameter longint AAAA = 2222, "
+     "localparam AAAAA = 22222, localparam real AAAAAA = 222222"
+     ");\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "               type    T      = int,\n"
+     "                       A      = 2,\n"
+     "               int     AA     = 22,\n"
+     "    parameter          AAA    = 222,\n"
+     "    parameter  longint AAAA   = 2222,\n"
+     "    localparam         AAAAA  = 22222,\n"
+     "    localparam real    AAAAAA = 222222\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with built-in data type
+     "module foo #(int a = 2, real abc = 2234);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    int  a   = 2,\n"
+     "    real abc = 2234\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with type
+     "module foo #(type TYPE1 = int, type TYPE2 = boo);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    type TYPE1 = int,\n"
+     "    type TYPE2 = boo\n"
+     ");\n"
+     "endmodule\n"},
+    {"module foo#(localparam type TYPE1 = int, type TYPE22 = bool, parameter   "
+     " type TYPE333 = real);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    localparam type TYPE1   = int,\n"
+     "               type TYPE22  = bool,\n"
+     "    parameter  type TYPE333 = real\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'data_type list_of_param_assignments' and 1D
+     // packed dimensions
+     "module foo #(parameter type T = int [3:0], type TT = bit [123:0]);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    parameter type T  = int [  3:0],\n"
+     "              type TT = bit [123:0]\n"
+     ");\n"
+     "endmodule\n"},
+    {// parameterized module with 'data_type list_of_param_assignments' and 2D
+     // packed dimensions
+     "module foo #(type T = int [3:0][123:0], type TT = bit [123:0][1:0]);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    type T  = int [  3:0][123:0],\n"
+     "    type TT = bit [123:0][  1:0]\n"
+     ");\n"
+     "endmodule\n"},
+    {// parametrized module with user defined data types
+     "module foo #(type T = my_type1_t, type TT = my_pkg::my_type2_t);\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    type T  = my_type1_t,\n"
+     "    type TT = my_pkg::my_type2_t\n"
+     ");\n"
+     "endmodule\n"},
+
+    {// parameterized class with 'list_of_param_assignments'
+     "class foo #(A = 2, AA = 22, AAA = 222);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    A   = 2,\n"
+     "    AA  = 22,\n"
+     "    AAA = 222\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'parameter_declaration'
+     "class foo #(parameter int a = 2, parameter int aa = 22);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    parameter int a  = 2,\n"
+     "    parameter int aa = 22\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'parameter_declaration' and comments
+     "class foo #(//comment\nparameter int a = 2, parameter int aa = 22);\n"
+     "endclass\n",
+     "class foo #(  //comment\n"
+     "    parameter int a  = 2,\n"
+     "    parameter int aa = 22\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'parameter_declaration' and trailing comments
+     "class foo #(parameter int a = 2,//comment\n parameter int aa = 22);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    parameter int a  = 2,  //comment\n"
+     "    parameter int aa = 22\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'parameter_declaration' and pre-proc
+     "class foo #(parameter int a = 2,\n"
+     "`ifdef MACRO parameter int aa = 22, `endif\n"
+     "parameter int aaa = 222);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    parameter int a   = 2,\n"
+     "`ifdef MACRO\n"
+     "    parameter int aa  = 22,\n"
+     "`endif\n"
+     "    parameter int aaa = 222\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'parameter_declaration' and packed dimensions
+     "class foo #(parameter logic [3:0] a = 2, parameter logic [30:0] aa = "
+     "22);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    parameter logic [ 3:0] a  = 2,\n"
+     "    parameter logic [30:0] aa = 22\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'parameter_declaration' and unpacked dimensions
+     "class foo #(parameter logic a[3:0] = 2, parameter logic  aa [30:0] = "
+     "22);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    parameter logic a [ 3:0] = 2,\n"
+     "    parameter logic aa[30:0] = 22\n"
+     ");\n"
+     "endclass\n"},
+
+    {// parameterized class with 'local_parameter_declaration'
+     "class foo #(localparam int a = 2, localparam int aa = 22);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    localparam int a  = 2,\n"
+     "    localparam int aa = 22\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'local_parameter_declaration' and comments
+     "class foo #(//comment\nlocalparam int a = 2, localparam int aa = 22);\n"
+     "endclass\n",
+     "class foo #(  //comment\n"
+     "    localparam int a  = 2,\n"
+     "    localparam int aa = 22\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'local_parameter_declaration' and trailing
+     // comments
+     "class foo #(localparam int a = 2,//comment\n localparam int aa = 22);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    localparam int a  = 2,  //comment\n"
+     "    localparam int aa = 22\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'local_parameter_declaration' and pre-proc
+     "class foo #(localparam int a = 2,\n"
+     "`ifdef MACRO localparam int aa = 22, `endif\n"
+     "localparam int aaa = 222);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    localparam int a   = 2,\n"
+     "`ifdef MACRO\n"
+     "    localparam int aa  = 22,\n"
+     "`endif\n"
+     "    localparam int aaa = 222\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'local_parameter_declaration' and packed
+     // dimensions
+     "class foo #(localparam logic [3:0] a = 2, localparam logic [30:0] aa = "
+     "22);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    localparam logic [ 3:0] a  = 2,\n"
+     "    localparam logic [30:0] aa = 22\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'local_parameter_declaration' and unpacked
+     // dimensions
+     "class foo #(localparam logic a[3:0] = 2, localparam logic  aa [30:0] = "
+     "22);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    localparam logic a [ 3:0] = 2,\n"
+     "    localparam logic aa[30:0] = 22\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'data_type list_of_param_assignments'
+     "class foo #( int a = 2,  real aa = 22, longint aaa = 222);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    int     a   = 2,\n"
+     "    real    aa  = 22,\n"
+     "    longint aaa = 222\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'data_type list_of_param_assignments' and
+     // comments
+     "class foo #(//comment\nint a = 2,  shortreal aa = 22, longint aaa = "
+     "222);\n"
+     "endclass\n",
+     "class foo #(  //comment\n"
+     "    int       a   = 2,\n"
+     "    shortreal aa  = 22,\n"
+     "    longint   aaa = 222\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'data_type list_of_param_assignments' and
+     // trailing comments
+     "class foo #(int a = 2,  shortreal aa = 22,//comment\n longint aaa = "
+     "222);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    int       a   = 2,\n"
+     "    shortreal aa  = 22,  //comment\n"
+     "    longint   aaa = 222\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'data_type list_of_param_assignments' and
+     // pre-proc
+     "class foo #(int a = 2,\n"
+     "`ifdef MACRO shortreal aa = 22, `endif\n"
+     " longint aaa = 222);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    int       a   = 2,\n"
+     "`ifdef MACRO\n"
+     "    shortreal aa  = 22,\n"
+     "`endif\n"
+     "    longint   aaa = 222\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'data_type list_of_param_assignments' and
+     // packed dimensions
+     "class foo #(bit [1:0] a = 2,  reg [12:0] aa = 22, logic [123:0] aaa = "
+     "222);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    bit   [  1:0] a   = 2,\n"
+     "    reg   [ 12:0] aa  = 22,\n"
+     "    logic [123:0] aaa = 222\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'data_type list_of_param_assignments' and
+     // unpacked dimensions
+     "class foo #(bit  a[1:0] = 2,  reg  aa[12:0] = 22, logic aaa [123:0]  = "
+     "222);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    bit   a  [  1:0] = 2,\n"
+     "    reg   aa [ 12:0] = 22,\n"
+     "    logic aaa[123:0] = 222\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'type list_of_type_assignments'
+     "class foo #(type T = int, type TT = bit, type TTT= C#(logic) );\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    type T   = int,\n"
+     "    type TT  = bit,\n"
+     "    type TTT = C#(logic)\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'type list_of_type_assignments' and comments
+     "class foo #(//comment\ntype T = int, type TT = bit, type TTT= C#(logic) "
+     ");\n"
+     "endclass\n",
+     "class foo #(  //comment\n"
+     "    type T   = int,\n"
+     "    type TT  = bit,\n"
+     "    type TTT = C#(logic)\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'data_type list_of_param_assignments' and
+     // trailing comments
+     "class foo #(type T = int, type TT = bit, //comment\n type TTT= C#(logic) "
+     ");\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    type T   = int,\n"
+     "    type TT  = bit,       //comment\n"
+     "    type TTT = C#(logic)\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'data_type list_of_param_assignments' and
+     // pre-proc
+     "class foo #(type T = int,\n"
+     "`ifdef MACRO type TT = bit, `endif\n"
+     " type TTT= C#(logic));\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    type T   = int,\n"
+     "`ifdef MACRO\n"
+     "    type TT  = bit,\n"
+     "`endif\n"
+     "    type TTT = C#(logic)\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'data_type list_of_param_assignments' and
+     // packed dimensions
+     "class foo #(type T = int [3:0], type TT = bit [250:0]);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    type T  = int [  3:0],\n"
+     "    type TT = bit [250:0]\n"
+     ");\n"
+     "endclass\n"},
+    {"class foo #(type T = int, "
+     "A = 2, int AA = 22, parameter AAA = 222, parameter longint AAAA = 2222, "
+     "localparam AAAAA = 22222, localparam real AAAAAA = 222222"
+     ");\n"
+     "endclass\n",
+     "class foo #(\n"
+     "               type    T      = int,\n"
+     "                       A      = 2,\n"
+     "               int     AA     = 22,\n"
+     "    parameter          AAA    = 222,\n"
+     "    parameter  longint AAAA   = 2222,\n"
+     "    localparam         AAAAA  = 22222,\n"
+     "    localparam real    AAAAAA = 222222\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with built-in data type
+     "class foo #(int a = 2, real abc = 2234);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    int  a   = 2,\n"
+     "    real abc = 2234\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with type
+     "class foo #(type TYPE1 = int, type TYPE2 = boo);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    type TYPE1 = int,\n"
+     "    type TYPE2 = boo\n"
+     ");\n"
+     "endclass\n"},
+    {"class foo#(localparam type TYPE1 = int, type TYPE22 = bool, parameter    "
+     "type TYPE333 = real);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    localparam type TYPE1   = int,\n"
+     "               type TYPE22  = bool,\n"
+     "    parameter  type TYPE333 = real\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'data_type list_of_param_assignments' and 1D
+     // packed dimensions
+     "class foo #(parameter type T = int [3:0], type TT = bit [123:0]);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    parameter type T  = int [  3:0],\n"
+     "              type TT = bit [123:0]\n"
+     ");\n"
+     "endclass\n"},
+    {// parameterized class with 'data_type list_of_param_assignments' and 2D
+     // packed dimensions
+     "class foo #(type T = int [3:0][123:0], type TT = bit [123:0][1:0]);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    type T  = int [  3:0][123:0],\n"
+     "    type TT = bit [123:0][  1:0]\n"
+     ");\n"
+     "endclass\n"},
+    {// parametrized class with user defined data types
+     "class foo #(type T = my_type1_t, type TT = my_pkg::my_type2_t);\n"
+     "endclass\n",
+     "class foo #(\n"
+     "    type T  = my_type1_t,\n"
+     "    type TT = my_pkg::my_type2_t\n"
+     ");\n"
+     "endclass\n"},
+
+    {// parameterized interface with 'local_parameter_declaration'
+     "interface foo #(localparam int a = 2, localparam int aa = 22);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    localparam int a  = 2,\n"
+     "    localparam int aa = 22\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'local_parameter_declaration' and comments
+     "interface foo #(//comment\nlocalparam int a = 2, localparam int aa = "
+     "22);\n"
+     "endinterface\n",
+     "interface foo #(  //comment\n"
+     "    localparam int a  = 2,\n"
+     "    localparam int aa = 22\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'local_parameter_declaration' and trailing
+     // comments
+     "interface foo #(localparam int a = 2,//comment\n localparam int aa = "
+     "22);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    localparam int a  = 2,  //comment\n"
+     "    localparam int aa = 22\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'local_parameter_declaration' and pre-proc
+     "interface foo #(localparam int a = 2,\n"
+     "`ifdef MACRO localparam int aa = 22, `endif\n"
+     "localparam int aaa = 222);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    localparam int a   = 2,\n"
+     "`ifdef MACRO\n"
+     "    localparam int aa  = 22,\n"
+     "`endif\n"
+     "    localparam int aaa = 222\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'local_parameter_declaration' and packed
+     // dimensions
+     "interface foo #(localparam logic [3:0] a = 2, localparam logic [30:0] aa "
+     "= 22);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    localparam logic [ 3:0] a  = 2,\n"
+     "    localparam logic [30:0] aa = 22\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'local_parameter_declaration' and unpacked
+     // dimensions
+     "interface foo #(localparam logic a[3:0] = 2, localparam logic  aa [30:0] "
+     "= 22);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    localparam logic a [ 3:0] = 2,\n"
+     "    localparam logic aa[30:0] = 22\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'data_type list_of_param_assignments'
+     "interface foo #( int a = 2,  real aa = 22, longint aaa = 222);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    int     a   = 2,\n"
+     "    real    aa  = 22,\n"
+     "    longint aaa = 222\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'data_type list_of_param_assignments' and
+     // comments
+     "interface foo #(//comment\nint a = 2,  shortreal aa = 22, longint aaa = "
+     "222);\n"
+     "endinterface\n",
+     "interface foo #(  //comment\n"
+     "    int       a   = 2,\n"
+     "    shortreal aa  = 22,\n"
+     "    longint   aaa = 222\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'data_type list_of_param_assignments' and
+     // trailing comments
+     "interface foo #(int a = 2,  shortreal aa = 22,//comment\n longint aaa = "
+     "222);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    int       a   = 2,\n"
+     "    shortreal aa  = 22,  //comment\n"
+     "    longint   aaa = 222\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'data_type list_of_param_assignments' and
+     // pre-proc
+     "interface foo #(int a = 2,\n"
+     "`ifdef MACRO shortreal aa = 22, `endif\n"
+     " longint aaa = 222);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    int       a   = 2,\n"
+     "`ifdef MACRO\n"
+     "    shortreal aa  = 22,\n"
+     "`endif\n"
+     "    longint   aaa = 222\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'data_type list_of_param_assignments' and
+     // packed dimensions
+     "interface foo #(bit [1:0] a = 2,  reg [12:0] aa = 22, logic [123:0] aaa "
+     "= 222);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    bit   [  1:0] a   = 2,\n"
+     "    reg   [ 12:0] aa  = 22,\n"
+     "    logic [123:0] aaa = 222\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'data_type list_of_param_assignments' and
+     // unpacked dimensions
+     "interface foo #(bit  a[1:0] = 2,  reg  aa[12:0] = 22, logic aaa [123:0]  "
+     "= 222);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    bit   a  [  1:0] = 2,\n"
+     "    reg   aa [ 12:0] = 22,\n"
+     "    logic aaa[123:0] = 222\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'type list_of_type_assignments'
+     "interface foo #(type T = int, type TT = bit, type TTT= C#(logic) );\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    type T   = int,\n"
+     "    type TT  = bit,\n"
+     "    type TTT = C#(logic)\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'type list_of_type_assignments' and
+     // comments
+     "interface foo #(//comment\ntype T = int, type TT = bit, type TTT= "
+     "C#(logic) );\n"
+     "endinterface\n",
+     "interface foo #(  //comment\n"
+     "    type T   = int,\n"
+     "    type TT  = bit,\n"
+     "    type TTT = C#(logic)\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'data_type list_of_param_assignments' and
+     // trailing comments
+     "interface foo #(type T = int, type TT = bit, //comment\n type TTT= "
+     "C#(logic) );\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    type T   = int,\n"
+     "    type TT  = bit,       //comment\n"
+     "    type TTT = C#(logic)\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'data_type list_of_param_assignments' and
+     // pre-proc
+     "interface foo #(type T = int,\n"
+     "`ifdef MACRO type TT = bit, `endif\n"
+     " type TTT= C#(logic));\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    type T   = int,\n"
+     "`ifdef MACRO\n"
+     "    type TT  = bit,\n"
+     "`endif\n"
+     "    type TTT = C#(logic)\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'data_type list_of_param_assignments' and
+     // packed dimensions
+     "interface foo #(type T = int [3:0], type TT = bit [250:0]);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    type T  = int [  3:0],\n"
+     "    type TT = bit [250:0]\n"
+     ");\n"
+     "endinterface\n"},
+    {"interface foo #(type T = int, "
+     "A = 2, int AA = 22, parameter AAA = 222, parameter longint AAAA = 2222, "
+     "localparam AAAAA = 22222, localparam real AAAAAA = 222222"
+     ");\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "               type    T      = int,\n"
+     "                       A      = 2,\n"
+     "               int     AA     = 22,\n"
+     "    parameter          AAA    = 222,\n"
+     "    parameter  longint AAAA   = 2222,\n"
+     "    localparam         AAAAA  = 22222,\n"
+     "    localparam real    AAAAAA = 222222\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with built-in data type
+     "interface foo #(int a = 2, real abc = 2234);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    int  a   = 2,\n"
+     "    real abc = 2234\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with type
+     "interface foo #(type TYPE1 = int, type TYPE2 = boo);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    type TYPE1 = int,\n"
+     "    type TYPE2 = boo\n"
+     ");\n"
+     "endinterface\n"},
+    {"interface foo#(localparam type TYPE1 = int, type TYPE22 = bool, "
+     "parameter    type TYPE333 = real);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    localparam type TYPE1   = int,\n"
+     "               type TYPE22  = bool,\n"
+     "    parameter  type TYPE333 = real\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'data_type list_of_param_assignments' and
+     // 1D packed dimensions
+     "interface foo #(parameter type T = int [3:0], type TT = bit [123:0]);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    parameter type T  = int [  3:0],\n"
+     "              type TT = bit [123:0]\n"
+     ");\n"
+     "endinterface\n"},
+    {// parameterized interface with 'data_type list_of_param_assignments' and
+     // 2D packed dimensions
+     "interface foo #(type T = int [3:0][123:0], type TT = bit [123:0][1:0]);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    type T  = int [  3:0][123:0],\n"
+     "    type TT = bit [123:0][  1:0]\n"
+     ");\n"
+     "endinterface\n"},
+    {// parametrized interface with user defined data types
+     "interface foo #(type T = my_type1_t, type TT = my_pkg::my_type2_t);\n"
+     "endinterface\n",
+     "interface foo #(\n"
+     "    type T  = my_type1_t,\n"
+     "    type TT = my_pkg::my_type2_t\n"
+     ");\n"
+     "endinterface\n"},
+    {// wildcard import package at module header
+     "module foo import bar::*; (baz); endmodule\n",
+     "module foo\n"
+     "  import bar::*;\n"
+     "(\n"
+     "    baz\n"
+     ");\n"
+     "endmodule\n"},
+    {// import package at module header
+     "module foo import bar::baz; (qux); endmodule\n",
+     "module foo\n"
+     "  import bar::baz;\n"
+     "(\n"
+     "    qux\n"
+     ");\n"
+     "endmodule\n"},
+    {// wildcard import multiple packages at module header
+     "module foo import bar::*,baz::*; (qux); endmodule\n",
+     "module foo\n"
+     "  import bar::*, baz::*;\n"
+     "(\n"
+     "    qux\n"
+     ");\n"
+     "endmodule\n"},
+    {// separate package import declarations in module header
+     "module foo import bar::*,baz::*; import q_pkg::qux; (qux); endmodule\n",
+     "module foo\n"
+     "  import bar::*, baz::*;\n"
+     "  import q_pkg::qux;\n"
+     "(\n"
+     "    qux\n"
+     ");\n"
+     "endmodule\n"},
+    {// import package at module header
+     "module foo import bar::baz; #(int p = 3)(qux); endmodule\n",
+     "module foo\n"
+     "  import bar::baz;\n"
+     "#(\n"
+     "    int p = 3\n"
+     ") (\n"
+     "    qux\n"
+     ");\n"
+     "endmodule\n"},
+    // Space between return keyword and return value
+    {"function int foo(logic [31:0] data); return{<<8{data}}; endfunction",
+     "function int foo(logic [31:0] data);\n"
+     "  return {<<8{data}};\n"
+     "endfunction\n"},
+    {"function int f;return(1);endfunction",
+     "function int f;\n"
+     "  return (1);\n"
+     "endfunction\n"},
+    {"function int f;return-1;endfunction",
+     "function int f;\n"
+     "  return -1;\n"
+     "endfunction\n"},
+    {"function int f ;return    ! x\n;endfunction",
+     "function int f;\n"
+     "  return !x;\n"
+     "endfunction\n"},
+    {"function int f ;return    ~ x\n;endfunction",
+     "function int f;\n"
+     "  return ~x;\n"
+     "endfunction\n"},
+    {"function int f ;return    $x\n;endfunction",
+     "function int f;\n"
+     "  return $x;\n"
+     "endfunction\n"},
+    // String initializers
+    {"string a[] = {\n\"a\"\n};\n", "string a[] = {\"a\"};\n"},
+    {"string abc[] = {\n\"a\",\n\"b\",\n\"c\"\n};\n",
+     "string abc[] = {\"a\", \"b\", \"c\"};\n"},
+    {"string abc[] = {\n"
+     "\"a\",//\n"
+     "\"b\", \"c\"\n"
+     "};\n",
+     "string abc[] = {\"a\",  //\n"
+     "                \"b\",\n"
+     "                \"c\"};\n"},
+    {"string abc[] = {//\n"
+     "\"a\", \"b\", \"c\""
+     "};\n",
+     "string abc[] = {  //\n"
+     "  \"a\",\n"
+     "  \"b\",\n"
+     "  \"c\"\n"
+     "};\n"},
+    {"string abc[] = {\n"
+     "\"a\", \"b\", \"c\"//\n"
+     "};\n",
+     "string abc[] = {\"a\",\n"
+     "                \"b\",\n"
+     "                \"c\"  //\n"
+     "                };\n"},
+    {"string abc[] = {//\n"
+     "\"a\",//\n"
+     "\"b\", \"c\"//\n"
+     "};\n",
+     "string abc[] = {  //\n"
+     "  \"a\",  //\n"
+     "  \"b\",\n"
+     "  \"c\"  //\n"
+     "};\n"},
+    {"string abc[] = {\n"
+     "\"a\",\n"
+     "// comment\n"
+     "// comment\n"
+     "\"b\",\n"
+     "\"c\"\n"
+     "};\n",
+     "string abc[] = {\"a\",\n"
+     "                // comment\n"
+     "                // comment\n"
+     "                \"b\",\n"
+     "                \"c\"};\n"},
+    {"string numbers[] = {\"one\", \"two\", \"three\", \"four\"};\n",
+     "string numbers[] = {\"one\",\n"
+     "                    \"two\",\n"
+     "                    \"three\",\n"
+     "                    \"four\"};\n"},
+    {"string numbers[] = {\"one\", \"two\", THREE, \"four\"};\n",
+     "string numbers[] = {\n"
+     "  \"one\", \"two\", THREE, \"four\"\n"
+     "};\n"},
+    {"string numbers[] = {\"one\", {\"two\", \"three\"}, \"four\"};\n",
+     "string numbers[] = {\n"
+     "  \"one\", {\"two\", \"three\"}, \"four\"\n"
+     "};\n"},
+    {"string numbers[] = {\"one\", {\"two\", //\n"
+     "\"three\"}, \"four\"};\n",
+     "string numbers[] = {\n"
+     "  \"one\",\n"
+     "  {\n"
+     "    \"two\",  //\n"
+     "    \"three\"\n"
+     "  },\n"
+     "  \"four\"\n"
+     "};\n"},
+    {"string years[] = {\"two_thousand_nineteen\", \"two_thousand_twenty\",\n"
+     "\"two_thousand_twenty_one\"};\n",
+     // line with 3rd string would exceed column limit in unwrapped style
+     "string years[] = {\n"
+     "  \"two_thousand_nineteen\",\n"
+     "  \"two_thousand_twenty\",\n"
+     "  \"two_thousand_twenty_one\"\n"
+     "};\n"},
+    {"class class_name;\n"
+     "var_type var_name = new(\"the_string\");\n"
+     "endclass\n",
+     "class class_name;\n"
+     "  var_type var_name = new(\"the_string\");\n"
+     "endclass\n"},
+
+    //{   // parameterized class with 'parameter_declaration' and MACRO
+    //    "class foo #(parameter int a = 2,\n"
+    //    "parameter int aaa = `MACRO);\n"
+    //    "endclass\n",
+    //    "class foo #(\n"
+    //    "    parameter int a   = 2,\n"
+    //    "    parameter int aaa = `MACRO\n"
+    //    ");\n"
+    //    "endclass\n"
+    //},
+    // Struct/Union alignment
+    {"typedef struct {\n"
+     "bit [3:0] first; bit [31:0] second; generic_type_name_t third;\n"
+     "} type_t;",
+     "typedef struct {\n"
+     "  bit [3:0]           first;\n"
+     "  bit [31:0]          second;\n"
+     "  generic_type_name_t third;\n"
+     "} type_t;\n"},
+    {"typedef union soft packed {\n"
+     "bit [3:0] first; bit [31:0] second; generic_type_name_t third;\n"
+     "} type_t;",
+     "typedef union soft packed {\n"
+     "  bit [3:0]           first;\n"
+     "  bit [31:0]          second;\n"
+     "  generic_type_name_t third;\n"
+     "} type_t;\n"},
+    {"typedef union soft {\n"
+     "bit [3:0] first; bit [31:0] second; generic_type_name_t third;\n"
+     "} type_t;",
+     "typedef union soft {\n"
+     "  bit [3:0]           first;\n"
+     "  bit [31:0]          second;\n"
+     "  generic_type_name_t third;\n"
+     "} type_t;\n"},
+    {"typedef struct {\n"
+     "// comment\n"
+     "bit [3:0] first; bit [31:0] second; generic_type_name_t third;\n"
+     "} type_t;",
+     "typedef struct {\n"
+     "  // comment\n"
+     "  bit [3:0]           first;\n"
+     "  bit [31:0]          second;\n"
+     "  generic_type_name_t third;\n"
+     "} type_t;\n"},
+    {"typedef struct {\n"
+     "// comment 0\n"
+     "bit [31:0] first; // a\n"
+     "bit [31:0] second; // b\n"
+     "bit third; // c\n"
+     "uint fourth; // d\n"
+     "\n"
+     "// comment 1\n"
+     "int fifth;\n"
+     "// comment 2.1\n"
+     "// comment 2.2\n"
+     "uint sixth;\n"
+     "} timing_cfg_t;",
+     "typedef struct {\n"
+     "  // comment 0\n"
+     "  bit [31:0] first;   // a\n"
+     "  bit [31:0] second;  // b\n"
+     "  bit        third;   // c\n"
+     "  uint       fourth;  // d\n"
+     "\n"
+     "  // comment 1\n"
+     "  int  fifth;\n"
+     "  // comment 2.1\n"
+     "  // comment 2.2\n"
+     "  uint sixth;\n"
+     "} timing_cfg_t;\n"},
+    {"typedef struct {\n"
+     "// comment\n"
+     "rand int r;\n"
+     "int a;\n"
+     "int aa = 0;\n"
+     "int aaa = 1; // comment\n"
+     "foo#(bar) z;\n"
+     "int [x:y] zz; // comment\n"
+     "int zzz[a:b];\n"
+     "} type_t;",
+     "typedef struct {\n"
+     "  // comment\n"
+     "  rand int   r;\n"
+     "  int        a;\n"
+     "  int        aa        = 0;\n"
+     "  int        aaa       = 1;  // comment\n"
+     "  foo #(bar) z;\n"
+     "  int [x:y]  zz;             // comment\n"
+     "  int        zzz[a:b];\n"
+     "} type_t;\n"},
+    {"typedef struct packed {\n"
+     "struct packed { bit q; logic qq; logic qqq; } a_few_qs;\n"
+     "struct packed {\n"
+     "logic [1:0]  q;\n"
+     "} one_q;\n"
+     "int q;\n"
+     "uint qq;\n"
+     "} nested_qs_t;",
+     "typedef struct packed {\n"
+     "  struct packed {\n"
+     "    bit   q;\n"
+     "    logic qq;\n"
+     "    logic qqq;\n"
+     "  } a_few_qs;\n"
+     "  struct packed {logic [1:0] q;} one_q;\n"
+     "  int  q;\n"
+     "  uint qq;\n"
+     "} nested_qs_t;\n"},
+    {"typedef struct packed {\n"
+     "struct packed { bit q; logic qq; logic qqq; } a_few_qs;\n"
+     "struct packed {\n"
+     "// comment\n"
+     "logic [1:0]  q;\n"
+     "} one_q;\n"
+     "int q;\n"
+     "uint qq;\n"
+     "} nested_qs_t;",
+     "typedef struct packed {\n"
+     "  struct packed {\n"
+     "    bit   q;\n"
+     "    logic qq;\n"
+     "    logic qqq;\n"
+     "  } a_few_qs;\n"
+     "  struct packed {\n"
+     "    // comment\n"
+     "    logic [1:0] q;\n"
+     "  } one_q;\n"
+     "  int  q;\n"
+     "  uint qq;\n"
+     "} nested_qs_t;\n"},
+    {"typedef struct {bit [3:0] first;\n"
+     "`ifdef MACRO\n"
+     "bit [31:0] second; generic_type_name_t third;\n"
+     "`endif\n"
+     "} type_t;\n",
+     "typedef struct {\n"
+     "  bit [3:0]           first;\n"
+     "`ifdef MACRO\n"
+     "  bit [31:0]          second;\n"
+     "  generic_type_name_t third;\n"
+     "`endif\n"
+     "} type_t;\n"},
+    {"typedef struct {\n"
+     "bit [3:0] first // c\n"
+     "; bit [31:0] second"
+     "// c\n"
+     "; generic_type_name_t third // c\n"
+     ";} type_t;\n",
+     "typedef struct {\n"
+     "  bit [3:0]           first  // c\n"
+     ";\n"
+     "  bit [31:0]          second  // c\n"
+     ";\n"
+     "  generic_type_name_t third  // c\n"
+     ";\n"
+     "} type_t;\n"},
+    {"struct {logic test1; // c\n"
+     "logic test2;} test3;\n",
+     "struct {\n"
+     "  logic test1;  // c\n"
+     "  logic test2;\n"
+     "} test3;\n"},
+    {"struct {\n"
+     "  /* t */ logic test1; /* t */\n"
+     "/* t */ logic test2; }test3;\n",
+     "struct {\n"
+     "  /* t */ logic test1;  /* t */\n"
+     "  /* t */ logic test2;\n"
+     "} test3;\n"},
+    // Continuation comment alignment
+    {"`define BAR 1 // A\n"
+     "module foo(); // B\n"
+     "wire baz;     // C\n"
+     "endmodule:foo // D\n",
+     "`define BAR 1 // A\n"
+     "module foo ();  // B\n"
+     "  wire baz;  // C\n"
+     "endmodule : foo  // D\n"},
+    {"`define BAR 1 // A\n"
+     "module foo(); // B\n"
+     "              // B.1\n"
+     "              // B.2\n"
+     "wire baz;     // C\n"
+     "              // C.1\n"
+     "              // C.2\n"
+     "endmodule:foo // D\n"
+     "              // D.1\n"
+     "              // D.2\n",
+     "`define BAR 1 // A\n"
+     "module foo ();  // B\n"
+     "                // B.1\n"
+     "                // B.2\n"
+     "  wire baz;  // C\n"
+     "             // C.1\n"
+     "             // C.2\n"
+     "endmodule : foo  // D\n"
+     "                 // D.1\n"
+     "                 // D.2\n"},
+    {"// W\n"
+     "`define BAR 1 // A\n"
+     "   // X\n"
+     "module foo(); // B\n"
+     "              // B.1\n"
+     "              // B.2\n"
+     " // Y\n"
+     "wire baz;     // C\n"
+     "              // C.1\n"
+     "              // C.2\n"
+     "    // Z\n"
+     "endmodule:foo // D\n"
+     "              // D.1\n"
+     "              // D.2\n",
+     "// W\n"
+     "`define BAR 1 // A\n"
+     "// X\n"
+     "module foo ();  // B\n"
+     "                // B.1\n"
+     "                // B.2\n"
+     "  // Y\n"
+     "  wire baz;  // C\n"
+     "             // C.1\n"
+     "             // C.2\n"
+     "  // Z\n"
+     "endmodule : foo  // D\n"
+     "                 // D.1\n"
+     "                 // D.2\n"},
+    {"module foo( // A\n"
+     "            // A.1\n"
+     "// X\n"
+     "input wire i1 [a:b], // B\n"
+     "                     // B.1\n"
+     "input [c:d] i2, // C\n"
+     "                // C.1\n"
+     "\n"
+     "// Y\n"
+     "output reg o1 // D\n"
+     "              // D.1\n"
+     ");endmodule:foo\n",
+     "module foo (  // A\n"
+     "              // A.1\n"
+     "    // X\n"
+     "    input wire       i1[a:b],  // B\n"
+     "                               // B.1\n"
+     "    input      [c:d] i2,       // C\n"
+     "                               // C.1\n"
+     "\n"
+     "    // Y\n"
+     "    output reg o1  // D\n"
+     "                   // D.1\n"
+     ");\n"
+     "endmodule : foo\n"},
+    // user defined type alignment
+    {
+        "module foo();\n"
+        "  logic [5:0][5:0] net_c;\n"
+        " messy_type_name [1:0] net_e;\n"
+        "endmodule\n",
+        "module foo ();\n"
+        "  logic           [5:0][5:0] net_c;\n"
+        "  messy_type_name [1:0]      net_e;\n"
+        "endmodule\n",
+    },
+    // Continuation comment's original starting column is allowed to differ from
+    // starting comment's original starting column at most by 1.
+    // Starting column of comments B and C will change after formatting.
+    // TODO: refine the column alignment depending on current vs previous line.
+    // https://github.com/chipsalliance/verible/pull/858#discussion_r672844015
+    {"module foo ();  // A\n"     // Starting comment; already on correct column
+     "                 // A.1\n"  // A's column + 1
+     "               // A.2\n"    // A's column - 1
+     "wire baz;      // B\n"      // Starting comment; will be moved left
+     "              // B.1\n"     // B's column - 1
+     "                // B.2\n"   // B's column + 1
+     "               // B.3\n"    // B's column
+     "endmodule:foo // C\n"       // Starting comment; will be moved right
+     "               // C.1\n"    // C's column + 1
+     "             // C.2\n",     // C's column - 1
+     "module foo ();  // A\n"
+     "                // A.1\n"
+     "                // A.2\n"
+     "  wire baz;  // B\n"
+     "             // B.1\n"
+     "             // B.2\n"
+     "             // B.3\n"
+     "endmodule : foo  // C\n"
+     "                 // C.1\n"
+     "                 // C.2\n"},
+    {"module foo\n"
+     "#(\n"
+     "  parameter type baz_t = struct packed { `BAZ(); }\n"
+     ")\n"
+     "();\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    parameter type\n"
+     "        baz_t = struct packed {\n"
+     "      `BAZ();\n"
+     "    }\n"
+     ") ();\n"
+     "endmodule\n"},
+    // The same as the previous test case, but without a semicolon at the macro
+    // call
+    {"module foo\n"
+     "#(\n"
+     "  parameter type baz_t = struct packed { `BAZ() }\n"
+     ")\n"
+     "();\n"
+     "endmodule\n",
+     "module foo #(\n"
+     "    parameter type\n"
+     "        baz_t = struct packed {\n"
+     "      `BAZ()\n"
+     "    }\n"
+     ") ();\n"
+     "endmodule\n"},
+    // Check that comments with too large starting column difference are not
+    // aligned as continuation comments.
+    // Check that starting comments are not linked with a comment in
+    // comment-only line above them, even when the starting column is the same.
+    // All comments in this test case are aligned independently, i.e. none are
+    // "continuation comments".
+    {"                // comment1\n"  // A's column, but is above it
+     "module foo ();  // A\n"
+     "                  // comment2\n"  // A's column + 2
+     "              // comment3\n"      // A's column - 2
+     "wire baz;     // B\n"
+     "            // comment4\n"      // B's column - 2
+     "                // comment5\n"  // B's column + 2
+     "              // comment6\n"    // B's column, but not directly under B
+     "endmodule:foo // C\n"
+     "                // comment7\n"  // C's column + 2
+     "              // comment8\n",   // C's column, but not directly under B
+     "// comment1\n"
+     "module foo ();  // A\n"
+     "  // comment2\n"
+     "  // comment3\n"
+     "  wire baz;  // B\n"
+     "  // comment4\n"
+     "  // comment5\n"
+     "  // comment6\n"
+     "endmodule : foo  // C\n"
+     "// comment7\n"
+     "// comment8\n"},
+    // Continuation comment alignment when a line with the starting comment is
+    // wrapped.
+    {"module foo(output logic very_very_very_very_long_name // A\n"
+     "                                                      // A.1\n"
+     "); endmodule\n",
+     "module foo (\n"
+     "    output logic\n"
+     "        very_very_very_very_long_name  // A\n"
+     "                                       // A.1\n"
+     ");\n"
+     "endmodule\n"},
+
+    // Attachment of ',' to elements in enum list (with and without comments)
+    {"typedef enum {\n"
+     "  first , // c1\n"
+     "  second\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "  first,  // c1\n"
+     "  second\n"
+     "} e;\n"},
+    {"typedef enum {\n"
+     "  first ,\n"
+     "  // c1\n"
+     "  second\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "  first,\n"
+     "  // c1\n"
+     "  second\n"
+     "} e;\n"},
+    {"typedef enum {\n"
+     "  first // c1\n"
+     "  , second\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "    first   // c1\n"
+     "  , second\n"
+     "} e;\n"},
+    {"typedef enum {\n"
+     "  first\n"
+     "  // c1\n"
+     "  , second\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "    first\n"
+     "  // c1\n"
+     "  , second\n"
+     "} e;\n"},
+    {"typedef enum {\n"
+     "  first // c1\n"
+     "  , // c2\n"
+     "  second\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "  first   // c1\n"
+     "  ,  // c2\n"
+     "  second\n"
+     "} e;\n"},
+    {"typedef enum {\n"
+     "  first\n"
+     "  // c1\n"
+     "  ,\n"
+     "  // c2\n"
+     "  second\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "  first\n"
+     "  // c1\n"
+     "  ,  // c2\n"
+     "  second\n"
+     "} e;\n"},
+    {"typedef enum {\n"
+     "  first\n"
+     "  // c1\n"
+     "  , // c2\n"
+     "  // c3\n"
+     "  second\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "  first\n"
+     "  // c1\n"
+     "  ,  // c2\n"
+     "  // c3\n"
+     "  second\n"
+     "} e;\n"},
+    {"typedef enum {\n"
+     "  // c1\n"
+     "  first\n"
+     "  // c2\n"
+     "  , // c3\n"
+     "  // c4\n"
+     "  second\n"
+     "  // c5\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "  // c1\n"
+     "  first\n"
+     "  // c2\n"
+     "  ,  // c3\n"
+     "  // c4\n"
+     "  second\n"
+     "  // c5\n"
+     "} e;\n"},
+    {"typedef enum {\n"
+     "  // c1\n"
+     "  // c1+\n"
+     "  first // c2\n"
+     "        // c2+\n"
+     "  , // c3\n"
+     "    // c3+\n"
+     "  // c4\n"
+     "  // c4+\n"
+     "  second // c5\n"
+     "         // c5+\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "  // c1\n"
+     "  // c1+\n"
+     "  first   // c2\n"
+     "          // c2+\n"
+     "  ,  // c3\n"
+     "     // c3+\n"
+     "  // c4\n"
+     "  // c4+\n"
+     "  second  // c5\n"
+     "          // c5+\n"
+     "} e;\n"},
+    {"typedef enum {\n"
+     "  first , /* c1 */\n"
+     "  second\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "  first,  /* c1 */\n"
+     "  second\n"
+     "} e;\n"},
+    {"typedef enum {\n"
+     "  first ,\n"
+     "  /* c1 */\n"
+     "  second\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "  first,\n"
+     "  /* c1 */\n"
+     "  second\n"
+     "} e;\n"},
+    {"typedef enum {\n"
+     "  first /* c1 */\n"
+     "  , second\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "    first   /* c1 */\n"
+     "  , second\n"
+     "} e;\n"},
+    {"typedef enum {\n"
+     "  first\n"
+     "  /* c1 */\n"
+     "  , second\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "    first\n"
+     "  /* c1 */\n"
+     "  , second\n"
+     "} e;\n"},
+    {"typedef enum {\n"
+     "  first /* c1 */\n"
+     "  , /* c2 */\n"
+     "  second\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "  first   /* c1 */\n"
+     "  ,  /* c2 */\n"
+     "  second\n"
+     "} e;\n"},
+    {"typedef enum {\n"
+     "  first\n"
+     "  /* c1 */\n"
+     "  ,\n"
+     "  /* c2 */\n"
+     "  second\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "  first\n"
+     "  /* c1 */\n"
+     "  ,\n"
+     "  /* c2 */\n"
+     "  second\n"
+     "} e;\n"},
+    {"typedef enum {\n"
+     "  /* c1 */\n"
+     "  first\n"
+     "  /* c2 */\n"
+     "  , /* c3 */\n"
+     "  /* c4 */\n"
+     "  second\n"
+     "  /* c5 */\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "  /* c1 */\n"
+     "  first\n"
+     "  /* c2 */\n"
+     "  ,  /* c3 */\n"
+     "  /* c4 */\n"
+     "  second\n"
+     "  /* c5 */\n"
+     "} e;\n"},
+    {"typedef enum {\n"
+     "  /* c1  */\n"
+     "  /* c1+ */\n"
+     "  first /* c2  */\n"
+     "        /* c2+ */\n"
+     "  , /* c3  */\n"
+     "    /* c3+ */\n"
+     "  /* c4  */\n"
+     "  /* c4+ */\n"
+     "  second /* c5  */\n"
+     "         /* c5+ */\n"
+     "} e;\n",
+     "typedef enum {\n"
+     "  /* c1  */\n"
+     "  /* c1+ */\n"
+     "  first   /* c2  */\n"
+     "  /* c2+ */\n"
+     "  ,  /* c3  */\n"
+     "  /* c3+ */\n"
+     "  /* c4  */\n"
+     "  /* c4+ */\n"
+     "  second  /* c5  */\n"
+     "  /* c5+ */\n"
+     "} e;\n"},
+    {"module m;\n"
+     "typedef enum {\n"
+     "  first,\n"
+     "  second\n"
+     "} // c\n"
+     "e;\n"
+     "endmodule\n",
+     "module m;\n"
+     "  typedef enum {\n"
+     "    first,\n"
+     "    second\n"
+     "  }  // c\n"
+     "  e;\n"
+     "endmodule\n"},
+    // Attachment of ';' preceded by EOL comment
+    {"module m;\n"
+     "typedef enum {\n"
+     "  first,\n"
+     "  second\n"
+     "} e // c\n"
+     ";\n"
+     "endmodule\n",
+     "module m;\n"
+     "  typedef enum {\n"
+     "    first,\n"
+     "    second\n"
+     "  } e  // c\n"
+     "  ;\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "typedef enum {\n"
+     "  first,\n"
+     "  second\n"
+     "} // c1\n"
+     "e // c2\n"
+     ";\n"
+     "endmodule\n",
+     "module m;\n"
+     "  typedef enum {\n"
+     "    first,\n"
+     "    second\n"
+     "  }  // c1\n"
+     "  e  // c2\n"
+     "  ;\n"
+     "endmodule\n"},
+    {"assign foo = bar\n"
+     "// comment\n"
+     ";\n",
+     "assign foo = bar\n"
+     "    // comment\n"
+     "    ;\n"},
+    {"assign foo = bar // comment\n"
+     ";\n",
+     "assign foo = bar  // comment\n"
+     ";\n"},
+
+    // Attachment of ',' to elements in PortActualList (with and without
+    // comments)
+    {"module foo;\n"
+     "  bar foobar(\n"
+     "    .first(1) // c1\n"
+     "    ,\n"
+     "    .second(2) // c2\n"
+     "  );\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar foobar (\n"
+     "        .first (1)  // c1\n"
+     "      , .second(2)  // c2\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar foobar(\n"
+     "    .first(1) // c1\n"
+     "    , .second(2) // c2\n"
+     "  );\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar foobar (\n"
+     "        .first (1)  // c1\n"
+     "      , .second(2)  // c2\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar foobar(\n"
+     "    .first(1)\n"
+     "    // c1\n"
+     "    ,\n"
+     "    .second(2)\n"
+     "    // c2\n"
+     "  );\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar foobar (\n"
+     "        .first (1)\n"
+     "      // c1\n"
+     "      , .second(2)\n"
+     "      // c2\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar foobar(\n"
+     "    .first(1)\n"
+     "    // c1\n"
+     "    , .second(2)\n"
+     "    // c2\n"
+     "  );\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar foobar (\n"
+     "        .first (1)\n"
+     "      // c1\n"
+     "      , .second(2)\n"
+     "      // c2\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar foobar(\n"
+     "    .first(1)\n"
+     "    // c1\n"
+     "    , // c2\n"
+     "    .second(2)\n"
+     "    // c3\n"
+     "  );\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar foobar (\n"
+     "      .first (1)\n"
+     "      // c1\n"
+     "      ,  // c2\n"
+     "      .second(2)\n"
+     "      // c3\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar foobar(\n"
+     "    // c1\n"
+     "    // c1+\n"
+     "    .first(1) // c2\n"
+     "              // c2+\n"
+     "    , // c3\n"
+     "      // c3+\n"
+     "    .second(2) // c4\n"
+     "               // c4+\n"
+     "    // c5\n"
+     "    // c5+\n"
+     "  );\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar foobar (\n"
+     "      // c1\n"
+     "      // c1+\n"
+     "      .first (1)  // c2\n"
+     "                  // c2+\n"
+     "      ,  // c3\n"
+     "         // c3+\n"
+     "      .second(2)  // c4\n"
+     "                  // c4+\n"
+     "      // c5\n"
+     "      // c5+\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar foobar(\n"
+     "    .first(1) /* c1 */\n"
+     "    ,\n"
+     "    .second(2) /* c2 */\n"
+     "  );\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar foobar (\n"
+     "        .first (1)  /* c1 */\n"
+     "      , .second(2)  /* c2 */\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar foobar(\n"
+     "    /* c1 */ .first(1),\n"
+     "    /* c2 */ .second(2)\n"
+     "  );\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar foobar (\n"
+     "      /* c1 */.first (1),\n"
+     "      /* c2 */.second(2)\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar foobar(\n"
+     "    .first(1) /* c1 */\n"
+     "    , .second(2) /* c2 */\n"
+     "  );\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar foobar (\n"
+     "        .first (1)  /* c1 */\n"
+     "      , .second(2)  /* c2 */\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar foobar(\n"
+     "    /* c1 */.first(1)\n"
+     "    /* c2 */, .second(2)\n"
+     "  );\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar foobar (\n"
+     "      /* c1 */  .first (1)\n"
+     "      /* c2 */, .second(2)\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar foobar(\n"
+     "    .first(1)\n"
+     "    /* c1 */\n"
+     "    ,\n"
+     "    .second(2)\n"
+     "    /* c2 */\n"
+     "  );\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar foobar (\n"
+     "        .first (1)\n"
+     "      /* c1 */\n"
+     "      , .second(2)\n"
+     "      /* c2 */\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar foobar(\n"
+     "    .first(1)\n"
+     "    /* c1 */\n"
+     "    , .second(2)\n"
+     "    /* c2 */\n"
+     "  );\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar foobar (\n"
+     "        .first (1)\n"
+     "      /* c1 */\n"
+     "      , .second(2)\n"
+     "      /* c2 */\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar foobar(\n"
+     "    .first(1)\n"
+     "    /* c1 */\n"
+     "    , /* c2 */\n"
+     "    .second(2)\n"
+     "    /* c3 */\n"
+     "  );\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar foobar (\n"
+     "      .first (1)\n"
+     "      /* c1 */\n"
+     "      ,  /* c2 */\n"
+     "      .second(2)\n"
+     "      /* c3 */\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar foobar(\n"
+     "    .first(1)\n"
+     "    /* c1 */\n"
+     "    , /* c2 */\n"
+     "    .second(2)\n"
+     "    /* c3 */\n"
+     "  );\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar foobar (\n"
+     "      .first (1)\n"
+     "      /* c1 */\n"
+     "      ,  /* c2 */\n"
+     "      .second(2)\n"
+     "      /* c3 */\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar foobar(\n"
+     "    /* c1  */\n"
+     "    /* c1+ */\n"
+     "    .first(1) /* c2  */\n"
+     "              /* c2+ */\n"
+     "    , /* c3  */\n"
+     "      /* c3+ */\n"
+     "    .second(2) /* c4  */\n"
+     "               /* c4+ */\n"
+     "    /* c5  */\n"
+     "    /* c5+ */\n"
+     "  );\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar foobar (\n"
+     "      /* c1  */\n"
+     "      /* c1+ */\n"
+     "      .first (1)  /* c2  */\n"
+     "      /* c2+ */\n"
+     "      ,  /* c3  */\n"
+     "      /* c3+ */\n"
+     "      .second(2)  /* c4  */\n"
+     "      /* c4+ */\n"
+     "      /* c5  */\n"
+     "      /* c5+ */\n"
+     "  );\n"
+     "endmodule\n"},
+
+    // Attachment of ',' to elements in ActualNamedParameterList (with and
+    // without comments)
+    {"module foo;\n"
+     "  bar#(\n"
+     "    .first(1) // c1\n"
+     "    ,\n"
+     "    .second(2) // c2\n"
+     "  ) baz ();\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "        .first (1)  // c1\n"
+     "      , .second(2)  // c2\n"
+     "  ) baz ();\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar#(\n"
+     "    .first(1) // c1\n"
+     "    , .second(2) // c2\n"
+     "  ) baz ();\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "        .first (1)  // c1\n"
+     "      , .second(2)  // c2\n"
+     "  ) baz ();\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar#(\n"
+     "    .first(1)\n"
+     "    // c1\n"
+     "    ,\n"
+     "    .second(2)\n"
+     "    // c2\n"
+     "  ) baz ();\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "        .first (1)\n"
+     "      // c1\n"
+     "      , .second(2)\n"
+     "      // c2\n"
+     "  ) baz ();\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar#(\n"
+     "    .first(1)\n"
+     "    // c1\n"
+     "    , .second(2)\n"
+     "    // c2\n"
+     "  ) baz ();\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "        .first (1)\n"
+     "      // c1\n"
+     "      , .second(2)\n"
+     "      // c2\n"
+     "  ) baz ();\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar#(\n"
+     "    .first(1)\n"
+     "    // c1\n"
+     "    , // c2\n"
+     "    .second(2)\n"
+     "    // c3\n"
+     "  ) baz ();\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "      .first (1)\n"
+     "      // c1\n"
+     "      ,  // c2\n"
+     "      .second(2)\n"
+     "      // c3\n"
+     "  ) baz ();\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar#(\n"
+     "    // c1\n"
+     "    // c1+\n"
+     "    .first(1) // c2\n"
+     "              // c2+\n"
+     "    , // c3\n"
+     "      // c3+\n"
+     "    .second(2) // c4\n"
+     "               // c4+\n"
+     "    // c5\n"
+     "    // c5+\n"
+     "  ) baz ();\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "      // c1\n"
+     "      // c1+\n"
+     "      .first (1)  // c2\n"
+     "                  // c2+\n"
+     "      ,  // c3\n"
+     "         // c3+\n"
+     "      .second(2)  // c4\n"
+     "                  // c4+\n"
+     "      // c5\n"
+     "      // c5+\n"
+     "  ) baz ();\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar#(\n"
+     "    .first(1) /* c1 */\n"
+     "    ,\n"
+     "    .second(2) /* c2 */\n"
+     "  ) baz ();\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "        .first (1)  /* c1 */\n"
+     "      , .second(2)  /* c2 */\n"
+     "  ) baz ();\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar#(\n"
+     "    /* c1 */ .first(1),\n"
+     "    /* c2 */ .second(2)\n"
+     "  ) baz ();\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "      /* c1 */.first (1),\n"
+     "      /* c2 */.second(2)\n"
+     "  ) baz ();\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar#(\n"
+     "    .first(1) /* c1 */\n"
+     "    , .second(2) /* c2 */\n"
+     "  ) baz ();\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "        .first (1)  /* c1 */\n"
+     "      , .second(2)  /* c2 */\n"
+     "  ) baz ();\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar#(\n"
+     "    /* c1 */.first(1)\n"
+     "    /* c2 */, .second(2)\n"
+     "  ) baz ();\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "      /* c1 */  .first (1)\n"
+     "      /* c2 */, .second(2)\n"
+     "  ) baz ();\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar#(\n"
+     "    .first(1)\n"
+     "    /* c1 */\n"
+     "    ,\n"
+     "    .second(2)\n"
+     "    /* c2 */\n"
+     "  ) baz ();\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "        .first (1)\n"
+     "      /* c1 */\n"
+     "      , .second(2)\n"
+     "      /* c2 */\n"
+     "  ) baz ();\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar#(\n"
+     "    .first(1)\n"
+     "    /* c1 */\n"
+     "    , .second(2)\n"
+     "    /* c2 */\n"
+     "  ) baz ();\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "        .first (1)\n"
+     "      /* c1 */\n"
+     "      , .second(2)\n"
+     "      /* c2 */\n"
+     "  ) baz ();\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar#(\n"
+     "    .first(1)\n"
+     "    /* c1 */\n"
+     "    , /* c2 */\n"
+     "    .second(2)\n"
+     "    /* c3 */\n"
+     "  ) baz ();\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "      .first (1)\n"
+     "      /* c1 */\n"
+     "      ,  /* c2 */\n"
+     "      .second(2)\n"
+     "      /* c3 */\n"
+     "  ) baz ();\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar#(\n"
+     "    .first(1)\n"
+     "    /* c1 */\n"
+     "    , /* c2 */\n"
+     "    .second(2)\n"
+     "    /* c3 */\n"
+     "  ) baz ();\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "      .first (1)\n"
+     "      /* c1 */\n"
+     "      ,  /* c2 */\n"
+     "      .second(2)\n"
+     "      /* c3 */\n"
+     "  ) baz ();\n"
+     "endmodule\n"},
+    {"module foo;\n"
+     "  bar#(\n"
+     "    /* c1  */\n"
+     "    /* c1+ */\n"
+     "    .first(1) /* c2  */\n"
+     "              /* c2+ */\n"
+     "    , /* c3  */\n"
+     "      /* c3+ */\n"
+     "    .second(2) /* c4  */\n"
+     "               /* c4+ */\n"
+     "    /* c5  */\n"
+     "    /* c5+ */\n"
+     "  ) baz ();\n"
+     "endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "      /* c1  */\n"
+     "      /* c1+ */\n"
+     "      .first (1)  /* c2  */\n"
+     "      /* c2+ */\n"
+     "      ,  /* c3  */\n"
+     "      /* c3+ */\n"
+     "      .second(2)  /* c4  */\n"
+     "      /* c4+ */\n"
+     "      /* c5  */\n"
+     "      /* c5+ */\n"
+     "  ) baz ();\n"
+     "endmodule\n"},
+
+    // ":" and "'{" in a single line
+    {"assign foo[2] =\n"
+     "'{\n"
+     "bar: 1'b1,  // c\n"
+     "baz: 1'b0,  // c\n"
+     "foobar: CONSTANT,\n"
+     "qux:\n"
+     "{\n"
+     "a,  // c\n"
+     "b\n"
+     "}\n"
+     "};\n",
+     "assign foo[2] = '{\n"
+     "        bar: 1'b1,  // c\n"
+     "        baz: 1'b0,  // c\n"
+     "        foobar: CONSTANT,\n"
+     "        qux: {\n"
+     "          a,  // c\n"
+     "          b\n"
+     "        }\n"
+     "    };\n"},
+    {"assign a = (b) ? '{c: d[e], f: '1} : g;\n",
+     "assign a = (b) ?\n"
+     "    '{c: d[e], f: '1}\n"
+     "    : g;\n"},
+
+    // -----------------------------------------------------------------
+    // Comments around `else`.
+    // Check whether `else` partition is found correctly and that actual code is
+    // not appended to EOL comments.
+
+    // generate if
+
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "// eol-c\n"
+     "else if (r) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  // eol-c\n"
+     "  else if (r) assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "else if (r) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  // eol-c\n"
+     "  // eol-c\n"
+     "  else if (r) assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "else // eol-c\n"
+     "if (r) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  else  // eol-c\n"
+     "  if (r) assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "else\n"
+     "// eol-c\n"
+     "if (r) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  else\n"
+     "  // eol-c\n"
+     "  if (r)\n"
+     "    assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "if (r) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  // eol-c\n"
+     "  else  // eol-c\n"
+     "  if (r) assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "if (r) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  else  // eol-c\n"
+     "  // eol-c\n"
+     "  if (r)\n"
+     "    assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "if (r) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  // eol-c\n"
+     "  else  // eol-c\n"
+     "  // eol-c\n"
+     "  if (r)\n"
+     "    assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "if\n"
+     "// eol-c\n"
+     "(r) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  // eol-c\n"
+     "  else  // eol-c\n"
+     "  // eol-c\n"
+     "  if\n"
+     "      // eol-c\n"
+     "      (r)\n"
+     "    assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "if\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "(r) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  // eol-c\n"
+     "  // eol-c\n"
+     "  else  // eol-c\n"
+     "  // eol-c\n"
+     "  // eol-c\n"
+     "  if\n"
+     "      // eol-c\n"
+     "      // eol-c\n"
+     "      (r)\n"
+     "    assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+
+    // generate if with function call
+
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "// eol-c\n"
+     "else if (foo(x) == bar(1, 2)) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  // eol-c\n"
+     "  else if (foo(x) == bar(1, 2))\n"
+     "    assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "else if (foo(x) == bar(1, 2)) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  // eol-c\n"
+     "  // eol-c\n"
+     "  else if (foo(x) == bar(1, 2))\n"
+     "    assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "else // eol-c\n"
+     "if (foo(x) == bar(1, 2)) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  else  // eol-c\n"
+     "  if (foo(x) == bar(1, 2)) assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "else\n"
+     "// eol-c\n"
+     "if (foo(x) == bar(1, 2)) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  else\n"
+     "  // eol-c\n"
+     "  if (foo(\n"
+     "          x\n"
+     "      ) == bar(\n"
+     "          1, 2\n"
+     "      ))\n"
+     "    assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "if (foo(x) == bar(1, 2)) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  // eol-c\n"
+     "  else  // eol-c\n"
+     "  if (foo(x) == bar(1, 2)) assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "if (foo(x) == bar(1, 2)) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  else  // eol-c\n"
+     "  // eol-c\n"
+     "  if (foo(\n"
+     "          x\n"
+     "      ) == bar(\n"
+     "          1, 2\n"
+     "      ))\n"
+     "    assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "if (foo(x) == bar(1, 2)) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  // eol-c\n"
+     "  else  // eol-c\n"
+     "  // eol-c\n"
+     "  if (foo(\n"
+     "          x\n"
+     "      ) == bar(\n"
+     "          1, 2\n"
+     "      ))\n"
+     "    assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "if\n"
+     "// eol-c\n"
+     "(foo(x) == bar(1, 2)) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  // eol-c\n"
+     "  else  // eol-c\n"
+     "  // eol-c\n"
+     "  if\n"
+     "      // eol-c\n"
+     "      (foo(\n"
+     "          x\n"
+     "      ) == bar(\n"
+     "          1, 2\n"
+     "      ))\n"
+     "    assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "if (x) assign z=y;\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "if\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "(foo(x) == bar(1, 2)) assign z=w;\n"
+     "else assign x=y;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  if (x) assign z = y;\n"
+     "  // eol-c\n"
+     "  // eol-c\n"
+     "  else  // eol-c\n"
+     "  // eol-c\n"
+     "  // eol-c\n"
+     "  if\n"
+     "      // eol-c\n"
+     "      // eol-c\n"
+     "      (foo(\n"
+     "          x\n"
+     "      ) == bar(\n"
+     "          1, 2\n"
+     "      ))\n"
+     "    assign z = w;\n"
+     "  else assign x = y;\n"
+     "endmodule\n"},
+
+    // else begin
+
+    {"module zx;\n"
+     "always begin\n"
+     "if (a) b<=1;\n"
+     "// eol-c\n"
+     "else begin b<=2;\n"
+     "end\n"
+     "end\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always begin\n"
+     "    if (a) b <= 1;\n"
+     "    // eol-c\n"
+     "    else begin\n"
+     "      b <= 2;\n"
+     "    end\n"
+     "  end\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always begin\n"
+     "if (a) b<=1;\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "else begin b<=2;\n"
+     "end\n"
+     "end\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always begin\n"
+     "    if (a) b <= 1;\n"
+     "    // eol-c\n"
+     "    // eol-c\n"
+     "    else begin\n"
+     "      b <= 2;\n"
+     "    end\n"
+     "  end\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always begin\n"
+     "if (a) b<=1;\n"
+     "else // eol-c\n"
+     "begin b<=2;\n"
+     "end\n"
+     "end\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always begin\n"
+     "    if (a) b <= 1;\n"
+     "    else  // eol-c\n"
+     "    begin\n"
+     "      b <= 2;\n"
+     "    end\n"
+     "  end\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always begin\n"
+     "if (a) b<=1;\n"
+     "else\n"
+     "// eol-c\n"
+     "begin b<=2;\n"
+     "end\n"
+     "end\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always begin\n"
+     "    if (a) b <= 1;\n"
+     "    else\n"
+     "    // eol-c\n"
+     "    begin\n"
+     "      b <= 2;\n"
+     "    end\n"
+     "  end\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always begin\n"
+     "if (a) b<=1;\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "begin b<=2;\n"
+     "end\n"
+     "end\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always begin\n"
+     "    if (a) b <= 1;\n"
+     "    // eol-c\n"
+     "    else  // eol-c\n"
+     "    begin\n"
+     "      b <= 2;\n"
+     "    end\n"
+     "  end\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always begin\n"
+     "if (a) b<=1;\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "begin b<=2;\n"
+     "end\n"
+     "end\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always begin\n"
+     "    if (a) b <= 1;\n"
+     "    else  // eol-c\n"
+     "    // eol-c\n"
+     "    begin\n"
+     "      b <= 2;\n"
+     "    end\n"
+     "  end\n"
+     "endmodule\n"},
+
+    // else if
+
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "// eol-c\n"
+     "else if (set) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    // eol-c\n"
+     "    else if (set) assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "else if (set) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    // eol-c\n"
+     "    // eol-c\n"
+     "    else if (set) assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "else // eol-c\n"
+     "if (set) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    else  // eol-c\n"
+     "    if (set) assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "else\n"
+     "// eol-c\n"
+     "if (set) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    else\n"
+     "    // eol-c\n"
+     "    if (set)\n"
+     "      assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "if (set) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    // eol-c\n"
+     "    else  // eol-c\n"
+     "    if (set) assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "if (set) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    else  // eol-c\n"
+     "    // eol-c\n"
+     "    if (set)\n"
+     "      assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "if (set) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    // eol-c\n"
+     "    else  // eol-c\n"
+     "    // eol-c\n"
+     "    if (set)\n"
+     "      assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "if\n"
+     "// eol-c\n"
+     "(set) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    // eol-c\n"
+     "    else  // eol-c\n"
+     "    // eol-c\n"
+     "    if\n"
+     "        // eol-c\n"
+     "        (set)\n"
+     "      assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "if\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "(set) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    // eol-c\n"
+     "    // eol-c\n"
+     "    else  // eol-c\n"
+     "    // eol-c\n"
+     "    // eol-c\n"
+     "    if\n"
+     "        // eol-c\n"
+     "        // eol-c\n"
+     "        (set)\n"
+     "      assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+
+    // else if with function call
+
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "// eol-c\n"
+     "else if (foo(clr, set, 1)) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    // eol-c\n"
+     "    else if (foo(clr, set, 1))\n"
+     "      assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "else if (foo(clr, set, 1)) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    // eol-c\n"
+     "    // eol-c\n"
+     "    else if (foo(clr, set, 1))\n"
+     "      assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "else // eol-c\n"
+     "if (foo(clr, set, 1)) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    else  // eol-c\n"
+     "    if (foo(clr, set, 1)) assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "else\n"
+     "// eol-c\n"
+     "if (foo(clr, set, 1)) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    else\n"
+     "    // eol-c\n"
+     "    if (foo(\n"
+     "            clr, set, 1\n"
+     "        ))\n"
+     "      assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "if (foo(clr, set, 1)) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    // eol-c\n"
+     "    else  // eol-c\n"
+     "    if (foo(clr, set, 1)) assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "if (foo(clr, set, 1)) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    else  // eol-c\n"
+     "    // eol-c\n"
+     "    if (foo(\n"
+     "            clr, set, 1\n"
+     "        ))\n"
+     "      assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "if (foo(clr, set, 1)) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    // eol-c\n"
+     "    else  // eol-c\n"
+     "    // eol-c\n"
+     "    if (foo(\n"
+     "            clr, set, 1\n"
+     "        ))\n"
+     "      assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "if\n"
+     "// eol-c\n"
+     "(foo(clr, set, 1)) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    // eol-c\n"
+     "    else  // eol-c\n"
+     "    // eol-c\n"
+     "    if\n"
+     "        // eol-c\n"
+     "        (foo(\n"
+     "            clr, set, 1\n"
+     "        ))\n"
+     "      assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+    {"module zx;\n"
+     "always @(clr or set)\n"
+     "if (clr) assign q=0;\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "else // eol-c\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "if\n"
+     "// eol-c\n"
+     "// eol-c\n"
+     "(foo(clr, set, 1)) assign q=1;\n"
+     "else deassign q;\n"
+     "endmodule\n",
+     "module zx;\n"
+     "  always @(clr or set)\n"
+     "    if (clr) assign q = 0;\n"
+     "    // eol-c\n"
+     "    // eol-c\n"
+     "    else  // eol-c\n"
+     "    // eol-c\n"
+     "    // eol-c\n"
+     "    if\n"
+     "        // eol-c\n"
+     "        // eol-c\n"
+     "        (foo(\n"
+     "            clr, set, 1\n"
+     "        ))\n"
+     "      assign q = 1;\n"
+     "    else deassign q;\n"
+     "endmodule\n"},
+
+    // -----------------------------------------------------------------
+    // Comments around and inside macro calls.
+
+};
+
+TEST(FormatterEndToEndTest, AlignFormatterTestCases) {
+  RunFormatterTestCases40(kAlignFormatterTestCases);
+}
+
+TEST(FormatterEndToEndTest, AlignmentGroupBoundaryNone) {
+  // Default behavior: separator comments and blank lines do NOT break groups.
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// Separator comment does not break alignment group
+       "module m;\n"
+       "assign foo  = 1'b1;\n"
+       "assign baar = 1'b0;\n"
+       "// ============\n"
+       "assign baaaaz = 1'b1;\n"
+       "assign c      = 1'b0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign foo    = 1'b1;\n"
+       "  assign baar   = 1'b0;\n"
+       "  // ============\n"
+       "  assign baaaaz = 1'b1;\n"
+       "  assign c      = 1'b0;\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.alignment_group_boundary = AlignmentGroupBoundary::kNone;
+  style.assignment_statement_alignment = AlignmentPolicy::kAlign;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+TEST(FormatterEndToEndTest, AlignmentGroupBoundarySeparatorComments) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// Separator comment breaks alignment group
+       "module m;\n"
+       "assign foo  = 1'b1;\n"
+       "assign baar = 1'b0;\n"
+       "// ============\n"
+       "assign baaaaz = 1'b1;\n"
+       "assign c      = 1'b0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign foo  = 1'b1;\n"
+       "  assign baar = 1'b0;\n"
+       "  // ============\n"
+       "  assign baaaaz = 1'b1;\n"
+       "  assign c      = 1'b0;\n"
+       "endmodule\n"},
+      {// Dashes separator also breaks
+       "module m;\n"
+       "assign foo  = 1'b1;\n"
+       "assign baar = 1'b0;\n"
+       "// ------------\n"
+       "assign baaaaz = 1'b1;\n"
+       "assign c      = 1'b0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign foo  = 1'b1;\n"
+       "  assign baar = 1'b0;\n"
+       "  // ------------\n"
+       "  assign baaaaz = 1'b1;\n"
+       "  assign c      = 1'b0;\n"
+       "endmodule\n"},
+      {// Captioned divider (text between separator runs) also breaks
+       "module m;\n"
+       "assign foo  = 1'b1;\n"
+       "assign baar = 1'b0;\n"
+       "// ------ section heading ------\n"
+       "assign baaaaz = 1'b1;\n"
+       "assign c      = 1'b0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign foo  = 1'b1;\n"
+       "  assign baar = 1'b0;\n"
+       "  // ------ section heading ------\n"
+       "  assign baaaaz = 1'b1;\n"
+       "  assign c      = 1'b0;\n"
+       "endmodule\n"},
+      {// Leading-only divider run with trailing caption text
+       "module m;\n"
+       "assign foo  = 1'b1;\n"
+       "assign baar = 1'b0;\n"
+       "// ==== Registers\n"
+       "assign baaaaz = 1'b1;\n"
+       "assign c      = 1'b0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign foo  = 1'b1;\n"
+       "  assign baar = 1'b0;\n"
+       "  // ==== Registers\n"
+       "  assign baaaaz = 1'b1;\n"
+       "  assign c      = 1'b0;\n"
+       "endmodule\n"},
+      {// No space after // also works
+       "module m;\n"
+       "assign foo  = 1'b1;\n"
+       "assign baar = 1'b0;\n"
+       "//============\n"
+       "assign baaaaz = 1'b1;\n"
+       "assign c      = 1'b0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign foo  = 1'b1;\n"
+       "  assign baar = 1'b0;\n"
+       "  //============\n"
+       "  assign baaaaz = 1'b1;\n"
+       "  assign c      = 1'b0;\n"
+       "endmodule\n"},
+      {// Slash separator (/////) also works
+       "module m;\n"
+       "assign foo  = 1'b1;\n"
+       "assign baar = 1'b0;\n"
+       "//////////\n"
+       "assign baaaaz = 1'b1;\n"
+       "assign c      = 1'b0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign foo  = 1'b1;\n"
+       "  assign baar = 1'b0;\n"
+       "  //////////\n"
+       "  assign baaaaz = 1'b1;\n"
+       "  assign c      = 1'b0;\n"
+       "endmodule\n"},
+      {// Regular comment does NOT break alignment
+       "module m;\n"
+       "assign foo  = 1'b1;\n"
+       "assign baar = 1'b0;\n"
+       "// Title text\n"
+       "assign baaaaz = 1'b1;\n"
+       "assign c      = 1'b0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign foo    = 1'b1;\n"
+       "  assign baar   = 1'b0;\n"
+       "  // Title text\n"
+       "  assign baaaaz = 1'b1;\n"
+       "  assign c      = 1'b0;\n"
+       "endmodule\n"},
+      {// Multi-line comment block with separators
+       "module m;\n"
+       "assign foo  = 1'b1;\n"
+       "assign baar = 1'b0;\n"
+       "// ============\n"
+       "// Title\n"
+       "// ============\n"
+       "assign baaaaz = 1'b1;\n"
+       "assign c      = 1'b0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign foo  = 1'b1;\n"
+       "  assign baar = 1'b0;\n"
+       "  // ============\n"
+       "  // Title\n"
+       "  // ============\n"
+       "  assign baaaaz = 1'b1;\n"
+       "  assign c      = 1'b0;\n"
+       "endmodule\n"},
+      {// Short repeated body (3 chars) does NOT break
+       "module m;\n"
+       "assign foo  = 1'b1;\n"
+       "assign baar = 1'b0;\n"
+       "// ---\n"
+       "assign baaaaz = 1'b1;\n"
+       "assign c      = 1'b0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign foo    = 1'b1;\n"
+       "  assign baar   = 1'b0;\n"
+       "  // ---\n"
+       "  assign baaaaz = 1'b1;\n"
+       "  assign c      = 1'b0;\n"
+       "endmodule\n"},
+      {// Declarations also respect separator comments
+       "module m;\n"
+       "logic       a;\n"
+       "logic [7:0] b;\n"
+       "// ============\n"
+       "logic c_long_name;\n"
+       "logic d;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  logic       a;\n"
+       "  logic [7:0] b;\n"
+       "  // ============\n"
+       "  logic c_long_name;\n"
+       "  logic d;\n"
+       "endmodule\n"},
+      {// Statements in always blocks
+       "module m;\n"
+       "always_comb begin\n"
+       "aaaaa = b;\n"
+       "c     = 1'b0;\n"
+       "// ============\n"
+       "dd = eee;\n"
+       "ffffff = g;\n"
+       "end\n"
+       "endmodule\n",
+       "module m;\n"
+       "  always_comb begin\n"
+       "    aaaaa = b;\n"
+       "    c     = 1'b0;\n"
+       "    // ============\n"
+       "    dd     = eee;\n"
+       "    ffffff = g;\n"
+       "  end\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.alignment_group_boundary = AlignmentGroupBoundary::kSeparatorComments;
+  style.assignment_statement_alignment = AlignmentPolicy::kAlign;
+  style.module_net_variable_alignment = AlignmentPolicy::kAlign;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+TEST(FormatterEndToEndTest, AlignmentGroupBoundaryBlankLines) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// Blank line breaks alignment group
+       "module m;\n"
+       "assign foo  = 1'b1;\n"
+       "assign baar = 1'b0;\n"
+       "\n"
+       "assign baaaaz = 1'b1;\n"
+       "assign c      = 1'b0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign foo  = 1'b1;\n"
+       "  assign baar = 1'b0;\n"
+       "\n"
+       "  assign baaaaz = 1'b1;\n"
+       "  assign c      = 1'b0;\n"
+       "endmodule\n"},
+      {// No blank line: single alignment group
+       "module m;\n"
+       "assign foo  = 1'b1;\n"
+       "assign baar = 1'b0;\n"
+       "assign baaaaz = 1'b1;\n"
+       "assign c      = 1'b0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign foo    = 1'b1;\n"
+       "  assign baar   = 1'b0;\n"
+       "  assign baaaaz = 1'b1;\n"
+       "  assign c      = 1'b0;\n"
+       "endmodule\n"},
+      {// Single item before blank line (not enough for alignment)
+       "module m;\n"
+       "assign foo = 1'b1;\n"
+       "\n"
+       "assign baaaaz = 1'b1;\n"
+       "assign c      = 1'b0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign foo = 1'b1;\n"
+       "\n"
+       "  assign baaaaz = 1'b1;\n"
+       "  assign c      = 1'b0;\n"
+       "endmodule\n"},
+      {// Separator comment does NOT break (only blank lines)
+       "module m;\n"
+       "assign foo  = 1'b1;\n"
+       "assign baar = 1'b0;\n"
+       "// ============\n"
+       "assign baaaaz = 1'b1;\n"
+       "assign c      = 1'b0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign foo    = 1'b1;\n"
+       "  assign baar   = 1'b0;\n"
+       "  // ============\n"
+       "  assign baaaaz = 1'b1;\n"
+       "  assign c      = 1'b0;\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.alignment_group_boundary = AlignmentGroupBoundary::kBlankLines;
+  style.assignment_statement_alignment = AlignmentPolicy::kAlign;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+TEST(FormatterEndToEndTest,
+     AlignmentGroupBoundaryBlankLinesAndSeparatorComments) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// Both blank line and separator break groups
+       "module m;\n"
+       "assign foo  = 1'b1;\n"
+       "assign baar = 1'b0;\n"
+       "\n"
+       "assign baaaaz = 1'b1;\n"
+       "assign c      = 1'b0;\n"
+       "// ============\n"
+       "assign dd  = 1'b1;\n"
+       "assign eee = 1'b0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign foo  = 1'b1;\n"
+       "  assign baar = 1'b0;\n"
+       "\n"
+       "  assign baaaaz = 1'b1;\n"
+       "  assign c      = 1'b0;\n"
+       "  // ============\n"
+       "  assign dd  = 1'b1;\n"
+       "  assign eee = 1'b0;\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.alignment_group_boundary =
+      AlignmentGroupBoundary::kBlankLinesAndSeparatorComments;
+  style.assignment_statement_alignment = AlignmentPolicy::kAlign;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Verify kAlign behavior for body-level param/localparam declarations
+// in module and package bodies.
+TEST(FormatterEndToEndTest, ParamDeclarationAlignmentBasics) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// localparam alignment in module body
+       "module m;\n"
+       "localparam foo = 4'b0000;\n"
+       "localparam barr = 4'b0010;\n"
+       "localparam baaaaz = 4'b0111;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo    = 4'b0000;\n"
+       "  localparam barr   = 4'b0010;\n"
+       "  localparam baaaaz = 4'b0111;\n"
+       "endmodule\n"},
+      {// localparam alignment in package body
+       "package p;\n"
+       "localparam foo = 4'b0000;\n"
+       "localparam barr = 4'b0010;\n"
+       "localparam baaaaz = 4'b0111;\n"
+       "endpackage\n",
+       "package p;\n"
+       "  localparam foo    = 4'b0000;\n"
+       "  localparam barr   = 4'b0010;\n"
+       "  localparam baaaaz = 4'b0111;\n"
+       "endpackage\n"},
+      {// parameter alignment in module body
+       "module m;\n"
+       "parameter int foo = 1;\n"
+       "parameter int barr = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter int foo  = 1;\n"
+       "  parameter int barr = 2;\n"
+       "endmodule\n"},
+      {// parameter alignment in package body
+       "package p;\n"
+       "parameter int foo = 1;\n"
+       "parameter int barrrr = 2;\n"
+       "endpackage\n",
+       "package p;\n"
+       "  parameter int foo    = 1;\n"
+       "  parameter int barrrr = 2;\n"
+       "endpackage\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Verify kFlushLeft behavior: body-level param/localparam declarations
+// are not aligned.
+TEST(FormatterEndToEndTest, ParamDeclarationAlignmentFlushLeft) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// module body: parameters are not aligned
+       "module m;\n"
+       "localparam foo = 4'b0000;\n"
+       "localparam barr = 4'b0010;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo = 4'b0000;\n"
+       "  localparam barr = 4'b0010;\n"
+       "endmodule\n"},
+      {// package context: flush-left
+       "package p;\n"
+       "localparam foo = 4'b0000;\n"
+       "localparam barr = 4'b0010;\n"
+       "endpackage\n",
+       "package p;\n"
+       "  localparam foo = 4'b0000;\n"
+       "  localparam barr = 4'b0010;\n"
+       "endpackage\n"},
+      {// generate context: flush-left
+       "module m;\n"
+       "generate\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "endgenerate\n"
+       "endmodule\n",
+       "module m;\n"
+       "  generate\n"
+       "    localparam foo = 1;\n"
+       "    localparam barr = 2;\n"
+       "  endgenerate\n"
+       "endmodule\n"},
+      {// parameter in module body: flush-left
+       "module m;\n"
+       "parameter int W = 8;\n"
+       "parameter int HHHH = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter int W = 8;\n"
+       "  parameter int HHHH = 2;\n"
+       "endmodule\n"},
+      {// mixed parameter and localparam: flush-left, no alignment
+       "module m;\n"
+       "parameter int W = 8;\n"
+       "localparam L = 4;\n"
+       "parameter int H = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter int W = 8;\n"
+       "  localparam L = 4;\n"
+       "  parameter int H = 2;\n"
+       "endmodule\n"},
+      {// interface context: flush-left
+       "interface my_if;\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "endinterface\n",
+       "interface my_if;\n"
+       "  localparam foo = 1;\n"
+       "  localparam barr = 2;\n"
+       "endinterface\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kFlushLeft;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Verify kPreserve behavior: body-level param/localparam declarations
+// maintain their existing spacing.
+TEST(FormatterEndToEndTest, ParamDeclarationAlignmentPreserve) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// module body: existing spacing is kept
+       "module m;\n"
+       "localparam foo = 4'b0000;\n"
+       "localparam barr  = 4'b0010;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo = 4'b0000;\n"
+       "  localparam barr  = 4'b0010;\n"
+       "endmodule\n"},
+      {// package: existing flush-left spacing preserved
+       "package p;\n"
+       "localparam foo = 4'b0000;\n"
+       "localparam barr = 4'b0010;\n"
+       "endpackage\n",
+       "package p;\n"
+       "  localparam foo = 4'b0000;\n"
+       "  localparam barr = 4'b0010;\n"
+       "endpackage\n"},
+      {// generate: existing aligned spacing preserved
+       "module m;\n"
+       "generate\n"
+       "localparam foo  = 1;\n"
+       "localparam barr = 2;\n"
+       "endgenerate\n"
+       "endmodule\n",
+       "module m;\n"
+       "  generate\n"
+       "    localparam foo  = 1;\n"
+       "    localparam barr = 2;\n"
+       "  endgenerate\n"
+       "endmodule\n"},
+      {// parameter flush-left preserved
+       "module m;\n"
+       "parameter int W = 8;\n"
+       "parameter int HHHH = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter int W = 8;\n"
+       "  parameter int HHHH = 2;\n"
+       "endmodule\n"},
+      {// parameter pre-aligned preserved
+       "module m;\n"
+       "parameter int W    = 8;\n"
+       "parameter int HHHH = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter int W    = 8;\n"
+       "  parameter int HHHH = 2;\n"
+       "endmodule\n"},
+      {// interface pre-aligned preserved
+       "interface my_if;\n"
+       "localparam foo  = 1;\n"
+       "localparam barr = 2;\n"
+       "endinterface\n",
+       "interface my_if;\n"
+       "  localparam foo  = 1;\n"
+       "  localparam barr = 2;\n"
+       "endinterface\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kPreserve;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Verify kAlign behavior for param/localparam declarations across
+// interface, generate, and module body contexts, including mixed
+// param/localparam and packed dimension alignment.
+TEST(FormatterEndToEndTest, ParamDeclarationAlignmentContexts) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// interface body localparam alignment
+       "interface my_if;\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "endinterface\n",
+       "interface my_if;\n"
+       "  localparam foo  = 1;\n"
+       "  localparam barr = 2;\n"
+       "endinterface\n"},
+      {// interface body parameter alignment
+       "interface my_if;\n"
+       "parameter int X = 1;\n"
+       "parameter int Y_LONG = 2;\n"
+       "endinterface\n",
+       "interface my_if;\n"
+       "  parameter int X      = 1;\n"
+       "  parameter int Y_LONG = 2;\n"
+       "endinterface\n"},
+      {// generate block localparam alignment
+       "module m;\n"
+       "generate\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "endgenerate\n"
+       "endmodule\n",
+       "module m;\n"
+       "  generate\n"
+       "    localparam foo  = 1;\n"
+       "    localparam barr = 2;\n"
+       "  endgenerate\n"
+       "endmodule\n"},
+      {// generate block parameter alignment
+       "module m;\n"
+       "generate\n"
+       "parameter int A = 1;\n"
+       "parameter int BB = 2;\n"
+       "endgenerate\n"
+       "endmodule\n",
+       "module m;\n"
+       "  generate\n"
+       "    parameter int A  = 1;\n"
+       "    parameter int BB = 2;\n"
+       "  endgenerate\n"
+       "endmodule\n"},
+      {// mixed param and net declarations form separate alignment groups
+       "module m;\n"
+       "localparam X = 1;\n"
+       "localparam YYY = 2;\n"
+       "logic clk;\n"
+       "logic rst_n;\n"
+       "localparam ZZ = 3;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam X   = 1;\n"
+       "  localparam YYY = 2;\n"
+       "  logic clk;\n"
+       "  logic rst_n;\n"
+       "  localparam ZZ = 3;\n"
+       "endmodule\n"},
+      {// mixed parameter and localparam in same block
+       "module m;\n"
+       "parameter int W = 8;\n"
+       "localparam L = 4;\n"
+       "parameter int H = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter  int W = 8;\n"
+       "  localparam     L = 4;\n"
+       "  parameter  int H = 2;\n"
+       "endmodule\n"},
+      {// packed dimensions are aligned
+       "module m;\n"
+       "parameter bit [7:0] X = 0;\n"
+       "parameter bit [31:0] YYYY = 1;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter bit [ 7:0] X    = 0;\n"
+       "  parameter bit [31:0] YYYY = 1;\n"
+       "endmodule\n"},
+      {// multi-identifier comma-separated params are not split (no-crash)
+       "module m;\n"
+       "parameter int a=1, b=2, ccc=3;\n"
+       "localparam d=4, e=5;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter  int a = 1, b = 2, ccc = 3;\n"
+       "  localparam     d = 4, e = 5;\n"
+       "endmodule\n"},
+      {// parameter type declarations do not crash
+       "module m;\n"
+       "parameter type T = int;\n"
+       "parameter type TT_LONG = bit;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter type T = int;\n"
+       "  parameter type TT_LONG = bit;\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Verify kInferUserIntent behavior: body-level param/localparam
+// declarations infer alignment intent from existing spacing.
+TEST(FormatterEndToEndTest, ParamDeclarationAlignmentInferUserIntent) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// flush-left localparams with small spacing diff: infer aligns
+       "module m;\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo  = 1;\n"
+       "  localparam barr = 2;\n"
+       "endmodule\n"},
+      {// pre-aligned localparams: infer preserves alignment
+       "module m;\n"
+       "localparam foo    = 1;\n"
+       "localparam barr   = 2;\n"
+       "localparam baaaaz = 3;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo    = 1;\n"
+       "  localparam barr   = 2;\n"
+       "  localparam baaaaz = 3;\n"
+       "endmodule\n"},
+      {// flush-left params in package with small spacing diff: infer aligns
+       "package p;\n"
+       "localparam X = 1;\n"
+       "localparam YY = 2;\n"
+       "endpackage\n",
+       "package p;\n"
+       "  localparam X  = 1;\n"
+       "  localparam YY = 2;\n"
+       "endpackage\n"},
+      {// mixed param/localparam flush-left: infer keeps flush-left
+       "module m;\n"
+       "parameter int W = 8;\n"
+       "localparam L = 4;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter int W = 8;\n"
+       "  localparam L = 4;\n"
+       "endmodule\n"},
+      {// interface flush-left with small diff: infer aligns
+       "interface my_if;\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "endinterface\n",
+       "interface my_if;\n"
+       "  localparam foo  = 1;\n"
+       "  localparam barr = 2;\n"
+       "endinterface\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kInferUserIntent;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Verify boundary behavior for param declarations with
+// kBlankLinesAndSeparatorComments: both blank lines and separator comments
+// break alignment groups.
+TEST(FormatterEndToEndTest, ParamDeclarationAlignmentBoundary) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// separator comment breaks param alignment group
+       "module m;\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "// ============\n"
+       "localparam baaaaz = 1;\n"
+       "localparam c = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo  = 1;\n"
+       "  localparam barr = 2;\n"
+       "  // ============\n"
+       "  localparam baaaaz = 1;\n"
+       "  localparam c      = 2;\n"
+       "endmodule\n"},
+      {// blank line breaks param alignment group
+       "module m;\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "\n"
+       "localparam baaaaz = 1;\n"
+       "localparam c = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo  = 1;\n"
+       "  localparam barr = 2;\n"
+       "\n"
+       "  localparam baaaaz = 1;\n"
+       "  localparam c      = 2;\n"
+       "endmodule\n"},
+      {// no separator: single alignment group (all aligned together)
+       "module m;\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "localparam baaaaz = 1;\n"
+       "localparam c = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo    = 1;\n"
+       "  localparam barr   = 2;\n"
+       "  localparam baaaaz = 1;\n"
+       "  localparam c      = 2;\n"
+       "endmodule\n"},
+      {// regular comment does NOT break alignment group
+       "module m;\n"
+       "localparam foo = 1;\n"
+       "// regular comment\n"
+       "localparam barr = 2;\n"
+       "localparam baaaaz = 1;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo    = 1;\n"
+       "  // regular comment\n"
+       "  localparam barr   = 2;\n"
+       "  localparam baaaaz = 1;\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
+  style.alignment_group_boundary =
+      AlignmentGroupBoundary::kBlankLinesAndSeparatorComments;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Verify edge cases: unpacked dimensions, signed/unsigned, implicit types,
+// complex types, single declarations, deeply nested generate blocks.
+TEST(FormatterEndToEndTest, ParamDeclarationAlignmentEdgeCases) {
+  // Use column_limit = 80 to avoid unintended line wrapping inside
+  // deeply nested generate blocks (generate-if, generate-for), which
+  // would interfere with verifying alignment behavior.
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// unpacked dimension alignment
+       "module m;\n"
+       "parameter bit X [7:0] = 0;\n"
+       "parameter bit YYYY [15:0] = 1;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter bit X   [ 7:0] = 0;\n"
+       "  parameter bit YYYY[15:0] = 1;\n"
+       "endmodule\n"},
+      {// param declarations with only type and default value (no idim)
+       "module m;\n"
+       "parameter int X = 0;\n"
+       "parameter int YYYY = 0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter int X    = 0;\n"
+       "  parameter int YYYY = 0;\n"
+       "endmodule\n"},
+      {// signed modifier with packed dimensions
+       "module m;\n"
+       "parameter bit signed [7:0] X = 0;\n"
+       "parameter bit signed [31:0] YYYY = 1;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter bit signed [ 7:0] X    = 0;\n"
+       "  parameter bit signed [31:0] YYYY = 1;\n"
+       "endmodule\n"},
+      {// param with complex type (struct/typedef) — does not crash
+       "module m;\n"
+       "parameter foo_t X = foo_t'(0);\n"
+       "parameter foo_t Y_LONG = foo_t'(0);\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter foo_t X      = foo_t'(0);\n"
+       "  parameter foo_t Y_LONG = foo_t'(0);\n"
+       "endmodule\n"},
+      {// single param declaration (not enough for alignment group)
+       "module m;\n"
+       "localparam X = 1;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam X = 1;\n"
+       "endmodule\n"},
+      {// params inside generate-if block
+       "module m;\n"
+       "generate\n"
+       "if (1) begin : blk\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "end\n"
+       "endgenerate\n"
+       "endmodule\n",
+       "module m;\n"
+       "  generate\n"
+       "    if (1) begin : blk\n"
+       "      localparam foo  = 1;\n"
+       "      localparam barr = 2;\n"
+       "    end\n"
+       "  endgenerate\n"
+       "endmodule\n"},
+      {// unsigned keyword with packed dimensions (complement to signed)
+       "module m;\n"
+       "parameter bit unsigned [7:0] X = 0;\n"
+       "parameter bit unsigned [31:0] YYYY = 1;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter bit unsigned [ 7:0] X    = 0;\n"
+       "  parameter bit unsigned [31:0] YYYY = 1;\n"
+       "endmodule\n"},
+      {// parameter with implicit type (no explicit type keyword)
+       "module m;\n"
+       "parameter X = 32;\n"
+       "parameter Y_LONG = 64;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter X      = 32;\n"
+       "  parameter Y_LONG = 64;\n"
+       "endmodule\n"},
+      {// params inside generate-for block
+       "module m;\n"
+       "generate\n"
+       "for (i = 0; i < 2; i++) begin : blk\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "end\n"
+       "endgenerate\n"
+       "endmodule\n",
+       "module m;\n"
+       "  generate\n"
+       "    for (i = 0; i < 2; i++) begin : blk\n"
+       "      localparam foo  = 1;\n"
+       "      localparam barr = 2;\n"
+       "    end\n"
+       "  endgenerate\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 80;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Verify parameter declarations inside generate-case blocks are aligned.
+TEST(FormatterEndToEndTest, ParamDeclarationAlignmentGenerateCase) {
+  // Params inside generate-case need wider column limit to avoid wrapping the
+  // case label / begin block line.
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// params inside generate-case block
+       "module m #(P = 0);\n"
+       "generate\n"
+       "case (P)\n"
+       "0: begin : blk\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "end\n"
+       "endcase\n"
+       "endgenerate\n"
+       "endmodule\n",
+       "module m #(\n"
+       "    P = 0\n"
+       ");\n"
+       "  generate\n"
+       "    case (P)\n"
+       "      0: begin : blk\n"
+       "        localparam foo  = 1;\n"
+       "        localparam barr = 2;\n"
+       "      end\n"
+       "    endcase\n"
+       "  endgenerate\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 80;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+TEST(FormatterEndToEndTest, FormalAndBodyParamAlignmentIndependence) {
+  // Verify that --formal_parameters_alignment and
+  // --parameter_declaration_alignment act independently: setting formal params
+  // to kFlushLeft should not affect body-level param alignment, and vice versa.
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// formal flush-left + body align: only body params align
+       "module m #(\n"
+       "int W = 2,\n"
+       "int LLLL = 4\n"
+       ");\n"
+       "localparam foo = 0;\n"
+       "localparam barrrr = 0;\n"
+       "endmodule\n",
+       "module m #(\n"
+       "    int W = 2,\n"
+       "    int LLLL = 4\n"
+       ");\n"
+       "  localparam foo    = 0;\n"
+       "  localparam barrrr = 0;\n"
+       "endmodule\n"},
+      {// formal align + body flush-left: only formal params align
+       "module m #(\n"
+       "int W = 2,\n"
+       "int LLLL = 4\n"
+       ");\n"
+       "localparam foo = 0;\n"
+       "localparam barrrr = 0;\n"
+       "endmodule\n",
+       "module m #(\n"
+       "    int W    = 2,\n"
+       "    int LLLL = 4\n"
+       ");\n"
+       "  localparam foo = 0;\n"
+       "  localparam barrrr = 0;\n"
+       "endmodule\n"},
+      {// both flush-left: no alignment anywhere
+       "module m #(\n"
+       "int W = 2,\n"
+       "int LLLL = 4\n"
+       ");\n"
+       "localparam foo = 0;\n"
+       "localparam barrrr = 0;\n"
+       "endmodule\n",
+       "module m #(\n"
+       "    int W = 2,\n"
+       "    int LLLL = 4\n"
+       ");\n"
+       "  localparam foo = 0;\n"
+       "  localparam barrrr = 0;\n"
+       "endmodule\n"},
+      {// both align: both formal and body params aligned
+       "module m #(\n"
+       "int W = 2,\n"
+       "int LLLL = 4\n"
+       ");\n"
+       "localparam foo = 0;\n"
+       "localparam barrrr = 0;\n"
+       "endmodule\n",
+       "module m #(\n"
+       "    int W    = 2,\n"
+       "    int LLLL = 4\n"
+       ");\n"
+       "  localparam foo    = 0;\n"
+       "  localparam barrrr = 0;\n"
+       "endmodule\n"},
+  };
+  // First case: formal kFlushLeft, body kAlign
+  {
+    FormatStyle style;
+    style.column_limit = 40;
+    style.indentation_spaces = 2;
+    style.wrap_spaces = 4;
+    style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
+    style.formal_parameters_alignment = AlignmentPolicy::kFlushLeft;
+    const auto &tc = kTestCases[0];
+    VLOG(1) << "code-to-format:\n" << tc.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
+  }
+  // Second case: formal kAlign, body kFlushLeft
+  {
+    FormatStyle style;
+    style.column_limit = 40;
+    style.indentation_spaces = 2;
+    style.wrap_spaces = 4;
+    style.parameter_declaration_alignment = AlignmentPolicy::kFlushLeft;
+    style.formal_parameters_alignment = AlignmentPolicy::kAlign;
+    const auto &tc = kTestCases[1];
+    VLOG(1) << "code-to-format:\n" << tc.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
+  }
+  // Third case: both kFlushLeft
+  {
+    FormatStyle style;
+    style.column_limit = 40;
+    style.indentation_spaces = 2;
+    style.wrap_spaces = 4;
+    style.parameter_declaration_alignment = AlignmentPolicy::kFlushLeft;
+    style.formal_parameters_alignment = AlignmentPolicy::kFlushLeft;
+    const auto &tc = kTestCases[2];
+    VLOG(1) << "code-to-format:\n" << tc.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
+  }
+  // Fourth case: both kAlign
+  {
+    FormatStyle style;
+    style.column_limit = 40;
+    style.indentation_spaces = 2;
+    style.wrap_spaces = 4;
+    style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
+    style.formal_parameters_alignment = AlignmentPolicy::kAlign;
+    const auto &tc = kTestCases[3];
+    VLOG(1) << "code-to-format:\n" << tc.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
+  }
+}
+
+TEST(FormatterEndToEndTest, ClassBodyParamNotAffected) {
+  // Verify that class body parameter/localparam declarations are NOT affected
+  // by --parameter_declaration_alignment, which targets only module/generate/
+  // package/interface body-level params.
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// class body params are not affected
+       "class c;\n"
+       "parameter int X = 1;\n"
+       "parameter int YYYY = 2;\n"
+       "localparam foo = 3;\n"
+       "localparam barrrr = 4;\n"
+       "endclass\n",
+       "class c;\n"
+       "  parameter int X = 1;\n"
+       "  parameter int YYYY = 2;\n"
+       "  localparam foo = 3;\n"
+       "  localparam barrrr = 4;\n"
+       "endclass\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+TEST(FormatterEndToEndTest, PackageBodyVariableAlignment) {
+  // Verify that moving kPackageItemList to kTabularAlignment in tree-unwrapper
+  // enables net/variable declaration alignment in package bodies via
+  // module_net_variable_alignment.
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// net/variable declaration alignment in package body
+       "package p;\n"
+       "logic [7:0] a;\n"
+       "logic [31:0] bb;\n"
+       "endpackage\n",
+       "package p;\n"
+       "  logic [ 7:0] a;\n"
+       "  logic [31:0] bb;\n"
+       "endpackage\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.module_net_variable_alignment = AlignmentPolicy::kAlign;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+TEST(FormatterEndToEndTest, ParamDeclarationAlignmentApplyToAll) {
+  // Verify that ApplyToAllAlignmentPolicies affects
+  // parameter_declaration_alignment for all four alignment policies.
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// kAlign aligns identifiers and = signs across declarations
+       "module m;\n"
+       "localparam foo = 1;\n"
+       "localparam barrrr = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo    = 1;\n"
+       "  localparam barrrr = 2;\n"
+       "endmodule\n"},
+      {// kFlushLeft: declarations remain flush-left
+       "module m;\n"
+       "localparam foo = 1;\n"
+       "localparam barrrr = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo = 1;\n"
+       "  localparam barrrr = 2;\n"
+       "endmodule\n"},
+      {// kPreserve: existing spacing is kept
+       "module m;\n"
+       "localparam foo = 1;\n"
+       "localparam barrrr  = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo = 1;\n"
+       "  localparam barrrr  = 2;\n"
+       "endmodule\n"},
+      {// kInferUserIntent: large identifier width difference (3 cols)
+       // suggests flush-left intent, no alignment.
+       "module m;\n"
+       "localparam foo = 1;\n"
+       "localparam barrrr = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo = 1;\n"
+       "  localparam barrrr = 2;\n"
+       "endmodule\n"},
+  };
+  // kAlign
+  {
+    FormatStyle style;
+    style.column_limit = 40;
+    style.indentation_spaces = 2;
+    style.wrap_spaces = 4;
+    style.ApplyToAllAlignmentPolicies(AlignmentPolicy::kAlign);
+    const auto &tc = kTestCases[0];
+    std::ostringstream stream;
+    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
+  }
+  // kFlushLeft
+  {
+    FormatStyle style;
+    style.column_limit = 40;
+    style.indentation_spaces = 2;
+    style.wrap_spaces = 4;
+    style.ApplyToAllAlignmentPolicies(AlignmentPolicy::kFlushLeft);
+    const auto &tc = kTestCases[1];
+    std::ostringstream stream;
+    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
+  }
+  // kPreserve
+  {
+    FormatStyle style;
+    style.column_limit = 40;
+    style.indentation_spaces = 2;
+    style.wrap_spaces = 4;
+    style.ApplyToAllAlignmentPolicies(AlignmentPolicy::kPreserve);
+    const auto &tc = kTestCases[2];
+    std::ostringstream stream;
+    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
+  }
+  // kInferUserIntent
+  {
+    FormatStyle style;
+    style.column_limit = 40;
+    style.indentation_spaces = 2;
+    style.wrap_spaces = 4;
+    style.ApplyToAllAlignmentPolicies(AlignmentPolicy::kInferUserIntent);
+    const auto &tc = kTestCases[3];
+    std::ostringstream stream;
+    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
+  }
+}
+
+// Verify that alignment_group_boundary=kBlankLines treats only blank lines
+// (not separator comments) as boundary breaks for param declarations.
+TEST(FormatterEndToEndTest, ParamDeclarationAlignmentBoundaryBlankLines) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// Only blank line breaks group; separator comment does not
+       "module m;\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "\n"
+       "localparam baaaaz = 1;\n"
+       "localparam c = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo  = 1;\n"
+       "  localparam barr = 2;\n"
+       "\n"
+       "  localparam baaaaz = 1;\n"
+       "  localparam c      = 2;\n"
+       "endmodule\n"},
+      {// Separator comment does NOT break group with kBlankLines
+       "module m;\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "// ============\n"
+       "localparam baaaaz = 1;\n"
+       "localparam c = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo    = 1;\n"
+       "  localparam barr   = 2;\n"
+       "  // ============\n"
+       "  localparam baaaaz = 1;\n"
+       "  localparam c      = 2;\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
+  style.alignment_group_boundary = AlignmentGroupBoundary::kBlankLines;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Verify that alignment_group_boundary=kNone keeps all param declarations
+// in a single alignment group regardless of blank lines or comments.
+TEST(FormatterEndToEndTest, ParamDeclarationAlignmentBoundaryNone) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// Blank line does NOT break group with kNone
+       "module m;\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "\n"
+       "localparam baaaaz = 1;\n"
+       "localparam c = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo    = 1;\n"
+       "  localparam barr   = 2;\n"
+       "\n"
+       "  localparam baaaaz = 1;\n"
+       "  localparam c      = 2;\n"
+       "endmodule\n"},
+      {// Separator comment does NOT break group with kNone
+       "module m;\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "// ============\n"
+       "localparam baaaaz = 1;\n"
+       "localparam c = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo    = 1;\n"
+       "  localparam barr   = 2;\n"
+       "  // ============\n"
+       "  localparam baaaaz = 1;\n"
+       "  localparam c      = 2;\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
+  style.alignment_group_boundary = AlignmentGroupBoundary::kNone;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Verify that alignment_group_boundary=kSeparatorComments treats only
+// separator comments (not blank lines) as boundary breaks for param
+// declarations.
+TEST(FormatterEndToEndTest,
+     ParamDeclarationAlignmentBoundarySeparatorComments) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// Separator comment breaks alignment group
+       "module m;\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "// ============\n"
+       "localparam baaaaz = 1;\n"
+       "localparam c = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo  = 1;\n"
+       "  localparam barr = 2;\n"
+       "  // ============\n"
+       "  localparam baaaaz = 1;\n"
+       "  localparam c      = 2;\n"
+       "endmodule\n"},
+      {// Blank line does NOT break group with kSeparatorComments
+       "module m;\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "\n"
+       "localparam baaaaz = 1;\n"
+       "localparam c = 2;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam foo    = 1;\n"
+       "  localparam barr   = 2;\n"
+       "\n"
+       "  localparam baaaaz = 1;\n"
+       "  localparam c      = 2;\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
+  style.alignment_group_boundary = AlignmentGroupBoundary::kSeparatorComments;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Verify that class body parameter/localparam declarations are NOT affected
+// by --parameter_declaration_alignment for the kFlushLeft, kPreserve,
+// and kInferUserIntent policies (kAlign is covered in
+// ClassBodyParamNotAffected).
+TEST(FormatterEndToEndTest, ClassBodyParamNotAffectedOtherPolicies) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// kFlushLeft: class body params remain flush-left
+       "class c;\n"
+       "parameter int X = 1;\n"
+       "parameter int YYYY = 2;\n"
+       "localparam foo = 3;\n"
+       "localparam barrrr = 4;\n"
+       "endclass\n",
+       "class c;\n"
+       "  parameter int X = 1;\n"
+       "  parameter int YYYY = 2;\n"
+       "  localparam foo = 3;\n"
+       "  localparam barrrr = 4;\n"
+       "endclass\n"},
+      {// kPreserve: parameter_declaration_alignment does not apply to class
+       // bodies; whitespace is normalized by default formatting.
+       "class c;\n"
+       "parameter int X     = 1;\n"
+       "parameter int YYYY  = 2;\n"
+       "endclass\n",
+       "class c;\n"
+       "  parameter int X = 1;\n"
+       "  parameter int YYYY = 2;\n"
+       "endclass\n"},
+      {// kInferUserIntent: class body params infer flush-left
+       "class c;\n"
+       "parameter int X = 1;\n"
+       "parameter int YYYY = 2;\n"
+       "endclass\n",
+       "class c;\n"
+       "  parameter int X = 1;\n"
+       "  parameter int YYYY = 2;\n"
+       "endclass\n"},
+  };
+  // kFlushLeft
+  {
+    FormatStyle style;
+    style.column_limit = 40;
+    style.indentation_spaces = 2;
+    style.wrap_spaces = 4;
+    style.parameter_declaration_alignment = AlignmentPolicy::kFlushLeft;
+    const auto &tc = kTestCases[0];
+    std::ostringstream stream;
+    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
+  }
+  // kPreserve
+  {
+    FormatStyle style;
+    style.column_limit = 40;
+    style.indentation_spaces = 2;
+    style.wrap_spaces = 4;
+    style.parameter_declaration_alignment = AlignmentPolicy::kPreserve;
+    const auto &tc = kTestCases[1];
+    std::ostringstream stream;
+    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
+  }
+  // kInferUserIntent
+  {
+    FormatStyle style;
+    style.column_limit = 40;
+    style.indentation_spaces = 2;
+    style.wrap_spaces = 4;
+    style.parameter_declaration_alignment = AlignmentPolicy::kInferUserIntent;
+    const auto &tc = kTestCases[2];
+    std::ostringstream stream;
+    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
+  }
+}
+
+// Verify formal_parameters_alignment and parameter_declaration_alignment
+// independence for kPreserve and kInferUserIntent combinations.
+TEST(FormatterEndToEndTest,
+     FormalAndBodyParamAlignmentIndependenceOtherPolicies) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// formal kPreserve + body kAlign: only body params aligned
+       "module m #(\n"
+       "int W = 2,\n"
+       "int LLLL = 4\n"
+       ");\n"
+       "localparam foo = 0;\n"
+       "localparam barrrr = 0;\n"
+       "endmodule\n",
+       "module m #(\n"
+       "    int W = 2,\n"
+       "    int LLLL = 4\n"
+       ");\n"
+       "  localparam foo    = 0;\n"
+       "  localparam barrrr = 0;\n"
+       "endmodule\n"},
+      {// formal kAlign + body kPreserve: only formal params aligned
+       "module m #(\n"
+       "int W = 2,\n"
+       "int LLLL = 4\n"
+       ");\n"
+       "localparam foo   = 0;\n"
+       "localparam barrrr = 0;\n"
+       "endmodule\n",
+       "module m #(\n"
+       "    int W    = 2,\n"
+       "    int LLLL = 4\n"
+       ");\n"
+       "  localparam foo   = 0;\n"
+       "  localparam barrrr = 0;\n"
+       "endmodule\n"},
+      {// formal kInferUserIntent + body kAlign: only body params aligned
+       "module m #(\n"
+       "int W = 2,\n"
+       "int LLLL = 4\n"
+       ");\n"
+       "localparam foo = 0;\n"
+       "localparam barrrr = 0;\n"
+       "endmodule\n",
+       "module m #(\n"
+       "    int W = 2,\n"
+       "    int LLLL = 4\n"
+       ");\n"
+       "  localparam foo    = 0;\n"
+       "  localparam barrrr = 0;\n"
+       "endmodule\n"},
+  };
+  // formal kPreserve + body kAlign
+  {
+    FormatStyle style;
+    style.column_limit = 40;
+    style.indentation_spaces = 2;
+    style.wrap_spaces = 4;
+    style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
+    style.formal_parameters_alignment = AlignmentPolicy::kPreserve;
+    const auto &tc = kTestCases[0];
+    std::ostringstream stream;
+    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
+  }
+  // formal kAlign + body kPreserve
+  {
+    FormatStyle style;
+    style.column_limit = 40;
+    style.indentation_spaces = 2;
+    style.wrap_spaces = 4;
+    style.parameter_declaration_alignment = AlignmentPolicy::kPreserve;
+    style.formal_parameters_alignment = AlignmentPolicy::kAlign;
+    const auto &tc = kTestCases[1];
+    std::ostringstream stream;
+    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
+  }
+  // formal kInferUserIntent + body kAlign
+  {
+    FormatStyle style;
+    style.column_limit = 40;
+    style.indentation_spaces = 2;
+    style.wrap_spaces = 4;
+    style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
+    style.formal_parameters_alignment = AlignmentPolicy::kInferUserIntent;
+    const auto &tc = kTestCases[2];
+    std::ostringstream stream;
+    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
+  }
+}
+
+// Verify parameter declarations with string, real, and function-call default
+// value types to exercise the ColumnSchemaScanner on non-standard type tokens.
+TEST(FormatterEndToEndTest, ParamDeclarationAlignmentTypeVariants) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// parameter real type
+       "module m;\n"
+       "parameter real X = 1.0;\n"
+       "parameter real Y_LONG = 2.0;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter real X      = 1.0;\n"
+       "  parameter real Y_LONG = 2.0;\n"
+       "endmodule\n"},
+      {// parameter string type
+       "module m;\n"
+       "parameter string s = \"hello\";\n"
+       "parameter string long_s = \"world\";\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter string s      = \"hello\";\n"
+       "  parameter string long_s = \"world\";\n"
+       "endmodule\n"},
+      {// parameter with function call in default value
+       "module m;\n"
+       "parameter int W = func(1, 2);\n"
+       "parameter int H_LONG = other(3);\n"
+       "endmodule\n",
+       "module m;\n"
+       "  parameter int W      = func(1, 2);\n"
+       "  parameter int H_LONG = other(3);\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Verify parameter_declaration_alignment kInferUserIntent in package bodies.
+TEST(FormatterEndToEndTest, ParamDeclarationAlignmentPackageInfer) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// flush-left params with small diff: infer aligns
+       "package p;\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "endpackage\n",
+       "package p;\n"
+       "  localparam foo  = 1;\n"
+       "  localparam barr = 2;\n"
+       "endpackage\n"},
+      {// pre-aligned params: infer preserves
+       "package p;\n"
+       "localparam foo    = 1;\n"
+       "localparam barr   = 2;\n"
+       "localparam baaaaz = 3;\n"
+       "endpackage\n",
+       "package p;\n"
+       "  localparam foo    = 1;\n"
+       "  localparam barr   = 2;\n"
+       "  localparam baaaaz = 3;\n"
+       "endpackage\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kInferUserIntent;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Verify parameter_declaration_alignment boundary behavior in package bodies.
+TEST(FormatterEndToEndTest, ParamDeclarationAlignmentPackageBoundary) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// blank line breaks alignment group in package
+       "package p;\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "\n"
+       "localparam baaaaz = 1;\n"
+       "localparam c = 2;\n"
+       "endpackage\n",
+       "package p;\n"
+       "  localparam foo  = 1;\n"
+       "  localparam barr = 2;\n"
+       "\n"
+       "  localparam baaaaz = 1;\n"
+       "  localparam c      = 2;\n"
+       "endpackage\n"},
+      {// separator comment breaks alignment group in package
+       "package p;\n"
+       "localparam foo = 1;\n"
+       "localparam barr = 2;\n"
+       "// ============\n"
+       "localparam baaaaz = 1;\n"
+       "localparam c = 2;\n"
+       "endpackage\n",
+       "package p;\n"
+       "  localparam foo  = 1;\n"
+       "  localparam barr = 2;\n"
+       "  // ============\n"
+       "  localparam baaaaz = 1;\n"
+       "  localparam c      = 2;\n"
+       "endpackage\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
+  style.alignment_group_boundary =
+      AlignmentGroupBoundary::kBlankLinesAndSeparatorComments;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Verify the most common default scenario: both formal_parameters_alignment
+// and parameter_declaration_alignment set to kInferUserIntent.
+TEST(FormatterEndToEndTest, BothParamAlignmentsInferUserIntent) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// both flush-left with small diff: infer aligns both formal and body
+       "module m #(\n"
+       "int W = 2,\n"
+       "int LL = 4\n"
+       ");\n"
+       "localparam foo = 0;\n"
+       "localparam barr = 0;\n"
+       "endmodule\n",
+       "module m #(\n"
+       "    int W  = 2,\n"
+       "    int LL = 4\n"
+       ");\n"
+       "  localparam foo  = 0;\n"
+       "  localparam barr = 0;\n"
+       "endmodule\n"},
+      {// both infer: pre-aligned formal, pre-aligned body preserved
+       "module m #(\n"
+       "int W    = 2,\n"
+       "int LLLL = 4\n"
+       ");\n"
+       "localparam foo    = 0;\n"
+       "localparam barrrr = 0;\n"
+       "endmodule\n",
+       "module m #(\n"
+       "    int W    = 2,\n"
+       "    int LLLL = 4\n"
+       ");\n"
+       "  localparam foo    = 0;\n"
+       "  localparam barrrr = 0;\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kInferUserIntent;
+  style.formal_parameters_alignment = AlignmentPolicy::kInferUserIntent;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Verify that a large multi-line comment block between parameter
+// declarations does not crash the formatter.  The tree-unwrapper may
+// produce a partition structure where the comment tokens are absorbed
+// into the following parameter partition, which the alignment code
+// must handle gracefully by skipping alignment for that row.
+TEST(FormatterEndToEndTest, ParamDeclarationAlignmentCommentBlockNoCrash) {
+  // These inputs contain large multi-line comment blocks between
+  // parameter/localparam declarations.  The formatter must not crash
+  // (SIGABRT).  Output correctness is secondary; the formatter may
+  // fall back to preserving the original input when the partition
+  // structure prevents safe alignment.
+  const char *kInputs[] = {
+      "module m;\n"
+      "parameter int W = 8;\n"
+      "// Multi-line comment block\n"
+      "// that spans across\n"
+      "//\n"
+      "// several lines\n"
+      "// of explanatory text\n"
+      "//\n"
+      "// It contains enough\n"
+      "// lines to trigger\n"
+      "// the partition structure\n"
+      "// edge case where\n"
+      "// comment tokens are\n"
+      "// absorbed into the\n"
+      "// following parameter\n"
+      "// partition.\n"
+      "//\n"
+      "localparam int H = 2;\n"
+      "endmodule\n",
+      "package p;\n"
+      "parameter int X = 1;\n"
+      "// Long comment block\n"
+      "// with many lines\n"
+      "//\n"
+      "// of text\n"
+      "//\n"
+      "localparam int Y = 2;\n"
+      "endpackage\n",
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
+  for (const char *input : kInputs) {
+    VLOG(1) << "code-to-format:\n" << input << "<EOF>";
+    std::ostringstream stream;
+    const auto status = FormatVerilog(input, "<filename>", style, stream);
+    // The primary requirement is that the formatter does not crash
+    // (SIGABRT).  Gtest will report failure if the process aborts.
+    // The partition structure may cause output format differences;
+    // the important thing is the formatter handled it gracefully.
+  }
+}
+
+}  // namespace
+}  // namespace formatter
+}  // namespace verilog
diff --git a/verible/verilog/formatting/formatter_class_package_test.cc b/verible/verilog/formatting/formatter_class_package_test.cc
new file mode 100644
index 0000000..0c5e067
--- /dev/null
+++ b/verible/verilog/formatting/formatter_class_package_test.cc
@@ -0,0 +1,974 @@
+// Copyright 2017-2026 The Verible Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Test cases in this file should be *insensitive* to wrapping penalties.
+// Penalty-sensitive tests belong in formatter-tuning_test.cc.
+
+#include "gtest/gtest.h"
+#include "verible/verilog/formatting/formatter-test-utils.h"
+
+namespace verilog {
+namespace formatter {
+namespace {
+
+static constexpr FormatterTestCase kClassPackageFormatterTestCases[] = {
+    // interface test cases
+    {// two interface declarations
+     " interface if1 ; endinterface\t\t"
+     "interface  if2; endinterface   ",
+     "interface if1;\n"
+     "endinterface\n"
+     "interface if2;\n"
+     "endinterface\n"},
+    {// two interface declarations, end labels
+     " interface if1 ; endinterface:if1\t\t"
+     "interface  if2; endinterface    :  if2   ",
+     "interface if1;\n"
+     "endinterface : if1\n"
+     "interface if2;\n"
+     "endinterface : if2\n"},
+    {// interface declaration with parameters
+     " interface if1#( parameter int W= 8 );endinterface\t\t",
+     "interface if1 #(\n"
+     "    parameter int W = 8\n"
+     ");\n"
+     "endinterface\n"},
+    {// interface declaration with ports (empty)
+     " interface if1()\n;endinterface\t\t",
+     "interface if1 ();\n"
+     "endinterface\n"},
+    {// interface declaration with parameter comment only, empty ports
+     " interface if1#( \n"
+     "//param\n"
+     ")();endinterface\t\t",
+     "interface if1 #(\n"
+     "    //param\n"
+     ") ();\n"
+     "endinterface\n"},
+    {// interface declaration with parameter, empty ports
+     " interface if1#( parameter int W= 8 )();endinterface\t\t",
+     "interface if1 #(\n"
+     "    parameter int W = 8\n"
+     ") ();\n"
+     "endinterface\n"},
+    {// interface declaration with ports
+     " interface if1( input\tlogic   z)\n;endinterface\t\t",
+     "interface if1 (\n"
+     "    input logic z\n"
+     ");\n"
+     "endinterface\n"},
+    {// interface declaration with multiple ports
+     " interface if1( input\tlogic   z, output logic a)\n;endinterface\t\t",
+     "interface if1 (\n"
+     "    input  logic z,\n"  // should be one-per-line, even it it fits
+     "    output logic a\n"   // aligned
+     ");\n"
+     "endinterface\n"},
+    {// interface declaration with parameters and ports
+     " interface if1#( parameter int W= 8 )(input logic z);endinterface\t\t",
+     // doesn't fit on one line
+     "interface if1 #(\n"
+     "    parameter int W = 8\n"
+     ") (\n"
+     "    input logic z\n"
+     ");\n"
+     "endinterface\n"},
+    {
+        // interface with modport declarations
+        "interface\tfoo_if  ;"
+        "modport  mp1\t( output a, input b);"
+        "modport\tmp2  (output c,input d );\t"
+        "endinterface",
+        "interface foo_if;\n"
+        "  modport mp1(output a, input b);\n"
+        "  modport mp2(output c, input d);\n"
+        "endinterface\n",
+    },
+    {
+        // interface with long modport port names
+        "interface\tfoo_if  ;"
+        "modport  mp1\t( output a_long_output, input detailed_input_name);"
+        "endinterface",
+        "interface foo_if;\n"
+        "  modport mp1(\n"
+        "      output a_long_output,\n"
+        "      input detailed_input_name\n"
+        "  );\n"
+        "endinterface\n",
+    },
+    {
+        // interface with modport declaration with multiple ports
+        "interface\tfoo_if  ;"
+        "modport  mp1\t( output a_long_output, input detailed_input_name);"
+        "endinterface",
+        "interface foo_if;\n"
+        "  modport mp1(\n"
+        "      output a_long_output,\n"
+        "      input detailed_input_name\n"
+        "  );\n"
+        "endinterface\n",
+    },
+    {
+        // interface with modport TF port declaration
+        "interface\tfoo_if  ;"
+        "modport  mp1\t( output a, input b, import c);"
+        "endinterface",
+        "interface foo_if;\n"
+        "  modport mp1(\n"
+        "      output a,\n"
+        "      input b,\n"
+        "      import c\n"
+        "  );\n"
+        "endinterface\n",
+    },
+    {
+        // interface with complex modport ports list
+        "interface\tfoo_if  ;"
+        "modport producer\t(input ready,\toutput data, valid, user,"
+        " strobe, keep, last,\timport producer_reset, producer_tick);"
+        "modport consumer\t(input data, valid, user, strobe, keep, last,"
+        " output ready,\timport consumer_reset, consumer_tick, consume);"
+        "endinterface",
+        "interface foo_if;\n"
+        "  modport producer(\n"
+        "      input ready,\n"
+        "      output data, valid, user, strobe,\n"
+        "          keep, last,\n"
+        "      import producer_reset,\n"
+        "          producer_tick\n"
+        "  );\n"
+        "  modport consumer(\n"
+        "      input data, valid, user, strobe,\n"
+        "          keep, last,\n"
+        "      output ready,\n"
+        "      import consumer_reset,\n"
+        "          consumer_tick, consume\n"
+        "  );\n"
+        "endinterface\n",
+    },
+    {
+        // interface with modports and comments inside
+        "interface foo_if;\n"
+        " modport mp1(\n"
+        "  // Our output\n"
+        "     output a,\n"
+        "  /* Inputs */\n"
+        "      input b1, b_f /*last*/,"
+        "  import c\n"
+        "  );\n"
+        "endinterface\n",
+        "interface foo_if;\n"
+        "  modport mp1(\n"
+        "      // Our output\n"
+        "      output a,\n"
+        "      /* Inputs */\n"
+        "      input b1, b_f  /*last*/,\n"
+        "      import c\n"
+        "  );\n"
+        "endinterface\n",
+    },
+
+    // class test cases
+    {"class action;int xyz;endclass  :  action\n",
+     "class action;\n"
+     "  int xyz;\n"
+     "endclass : action\n"},
+    {"class action  extends mypkg :: inaction;endclass  :  action\n",
+     "class action extends mypkg::inaction;\n"  // tests for spacing around ::
+     "endclass : action\n"},
+    {"class c;function new;endfunction endclass",
+     "class c;\n"
+     "  function new;\n"
+     "  endfunction\n"
+     "endclass\n"},
+    {"class c;function new ( );endfunction endclass",
+     "class c;\n"
+     "  function new();\n"
+     "  endfunction\n"
+     "endclass\n"},
+    {"class c;function new ( string s );endfunction endclass",
+     "class c;\n"
+     "  function new(string s);\n"
+     "  endfunction\n"
+     "endclass\n"},
+    {"class c;function new ( string s ,int i );endfunction endclass",
+     "class c;\n"
+     "  function new(string s, int i);\n"
+     "  endfunction\n"
+     "endclass\n"},
+    {"class c;function void f;endfunction endclass",
+     "class c;\n"
+     "  function void f;\n"
+     "  endfunction\n"
+     "endclass\n"},
+    {"class c;virtual function void f;endfunction endclass",
+     "class c;\n"
+     "  virtual function void f;\n"
+     "  endfunction\n"
+     "endclass\n"},
+    {"class c;function int f ( );endfunction endclass",
+     "class c;\n"
+     "  function int f();\n"
+     "  endfunction\n"
+     "endclass\n"},
+    {"class c;function int f ( int  ii );endfunction endclass",
+     "class c;\n"
+     "  function int f(int ii);\n"
+     "  endfunction\n"
+     "endclass\n"},
+    {"class c;function int f ( int  ii ,bit  bb );endfunction endclass",
+     "class c;\n"
+     "  function int f(int ii, bit bb);\n"
+     "  endfunction\n"
+     "endclass\n"},
+    {"class c;task t ;endtask endclass",
+     "class c;\n"
+     "  task t;\n"
+     "  endtask\n"
+     "endclass\n"},
+    {"class c;task t ( int  ii ,bit  bb );endtask endclass",
+     "class c;\n"
+     "  task t(int ii, bit bb);\n"
+     "  endtask\n"
+     "endclass\n"},
+    {"class c; task automatic repeated_assigner;"
+     "repeat (count) y = w;"  // single statement body
+     "endtask endclass",
+     "class c;\n"
+     "  task automatic repeated_assigner;\n"
+     "    repeat (count) y = w;\n"
+     "  endtask\n"
+     "endclass\n"},
+    {"class c; task automatic delayed_assigner;"
+     "#   100   y = w;"  // delayed assignment
+     "endtask endclass",
+     "class c;\n"
+     "  task automatic delayed_assigner;\n"
+     "    #100 y = w;\n"
+     "  endtask\n"
+     "endclass\n"},
+    {"class c; task automatic labeled_assigner;"
+     "lbl   :   y = w;"  // delayed assignment
+     "endtask endclass",
+     "class c;\n"
+     "  task automatic labeled_assigner;\n"
+     "    lbl : y = w;\n"  // TODO(fangism): no space before ':'
+     "  endtask\n"
+     "endclass\n"},
+    // task with macro call
+    {"module m1;\ntask automatic t1();\n"
+     "t2(`R1(1)+ 8);endtask : t1\nendmodule",
+     "module m1;\n"
+     "  task automatic t1();\n"
+     "    t2(`R1(1) + 8);\n"
+     "  endtask : t1\n"
+     "endmodule\n"},
+
+    // tasks with control statements
+    {"class c; task automatic waiter;"
+     "if (count == 0) begin #0; return;end "
+     "endtask endclass",
+     "class c;\n"
+     "  task automatic waiter;\n"
+     "    if (count == 0) begin\n"
+     "      #0;\n"
+     "      return;\n"
+     "    end\n"
+     "  endtask\n"
+     "endclass\n"},
+    {"class c; task automatic heartbreaker;"
+     "if( c)if( d) break ;"
+     "endtask endclass",
+     "class c;\n"
+     "  task automatic heartbreaker;\n"
+     "    if (c) if (d) break;\n"
+     "  endtask\n"
+     "endclass\n"},
+    {"class c; task automatic waiter;"
+     "repeat (count) @(posedge clk);"
+     "endtask endclass",
+     "class c;\n"
+     "  task automatic waiter;\n"
+     "    repeat (count) @(posedge clk);\n"
+     "  endtask\n"
+     "endclass\n"},
+    {"class c; task automatic repeat_assigner;"
+     "repeat( r )\ny = w;"
+     "repeat( q )\ny = 1;"
+     "endtask endclass",
+     "class c;\n"
+     "  task automatic repeat_assigner;\n"
+     "    repeat (r) y = w;\n"
+     "    repeat (q) y = 1;\n"
+     "  endtask\n"
+     "endclass\n"},
+    {"class c; task automatic event_control_assigner;"
+     "@ ( posedge clk )\ny = w;"
+     "@ ( negedge clk )\nz = w;"
+     "endtask endclass",
+     "class c;\n"
+     "  task automatic event_control_assigner;\n"
+     "    @(posedge clk) y = w;\n"
+     "    @(negedge clk) z = w;\n"
+     "  endtask\n"
+     "endclass\n"},
+    {
+        // classes with surrrounding comments
+        // vertical spacing preserved
+        "\n// pre-c\n\n"
+        "  class   c  ;\n"
+        "// c stuff\n"
+        "endclass\n"
+        "  // pre-d\n"
+        "\n\nclass d ;\n"
+        " // d stuff\n"
+        "endclass\n"
+        "\n// the end\n",
+        "\n// pre-c\n\n"
+        "class c;\n"
+        "  // c stuff\n"
+        "endclass\n"
+        "// pre-d\n\n\n"
+        "class d;\n"
+        "  // d stuff\n"
+        "endclass\n\n"
+        "// the end\n",
+    },
+    {// class with comments around task/function declarations
+     "class c;      // c is for cookie\n"
+     "    // f is for false\n"
+     "\tfunction f(integer size) ; endfunction\n"
+     " // t is for true\n"
+     "task t();endtask\n"
+     " // class is about to end\n"
+     "endclass",
+     "class c;  // c is for cookie\n"
+     "  // f is for false\n"
+     "  function f(integer size);\n"
+     "  endfunction\n"
+     "  // t is for true\n"
+     "  task t();\n"
+     "  endtask\n"
+     "  // class is about to end\n"
+     "endclass\n"},
+
+    // interface class test cases
+    {"interface class Foo;\nendclass\n",
+     "interface class Foo;\n"
+     "endclass\n"},
+    {"interface   class   Foo  ;  endclass\n",
+     "interface class Foo;\n"
+     "endclass\n"},
+    {"interface class Foo extends Bar , Baz ;\nendclass\n",
+     "interface class Foo extends Bar, Baz;\n"
+     "endclass\n"},
+    {"interface class Foo;\n  pure   virtual   task   foo (  ) ; \nendclass\n",
+     "interface class Foo;\n"
+     "  pure virtual task foo();\n"
+     "endclass\n"},
+
+    // class property alignment test cases
+    {"class c;\n"
+     "int foo  ;\n"
+     "byte bar;\n"
+     "endclass : c\n",
+     "class c;\n"
+     "  int  foo;\n"
+     "  byte bar;\n"
+     "endclass : c\n"},
+    {"class c;\n"
+     "int foo;\n"
+     "const bit b;\n"
+     "endclass : c\n",
+     "class c;\n"
+     "  int       foo;\n"
+     "  const bit b;\n"
+     "endclass : c\n"},
+    {"class c;\n"
+     "rand logic l;\n"
+     "int foo;\n"
+     "endclass : c\n",
+     "class c;\n"
+     "  rand logic l;\n"
+     "  int        foo;\n"
+     "endclass : c\n"},
+    {"class c;\n"
+     "rand logic l;\n"
+     "const static int foo;\n"  // more qualifiers
+     "endclass : c\n",
+     "class c;\n"
+     "  rand logic       l;\n"
+     "  const static int foo;\n"
+     "endclass : c\n"},
+    {"class c;\n"
+     "static local int foo;\n"
+     "const bit b;\n"
+     "endclass : c\n",
+     "class c;\n"
+     "  static local int foo;\n"
+     "  const bit        b;\n"
+     "endclass : c\n"},
+    {// example with queue
+     "class c;\n"
+     "int foo [$] ;\n"
+     "int foo_bar ;\n"
+     "endclass : c\n",
+     "class c;\n"
+     "  int foo     [$];\n"
+     "  int foo_bar;\n"
+     "endclass : c\n"},
+    {// subcolumns
+     "class cc;\n"
+     "rand bit [A-1:0] foo;\n"
+     "rand bit [A-1:0][2] bar;\n"
+     "int foobar[X+1:Y];\n"
+     "int baz[42];\n"
+     "rand bit qux[Z];\n"
+     "rand bit [1:0] quux[3:0];\n"
+     "rand bit [A:BB][42] quuz[7];\n"
+     "endclass\n",
+     "class cc;\n"
+     "  rand bit [A-1: 0]     foo;\n"
+     "  rand bit [A-1: 0][ 2] bar;\n"
+     "  int                   foobar[X+1:Y];\n"
+     "  int                   baz   [   42];\n"
+     "  rand bit              qux   [    Z];\n"
+     "  rand bit [  1: 0]     quux  [  3:0];\n"
+     "  rand bit [  A:BB][42] quuz  [    7];\n"
+     "endclass\n"},
+    {"class cc;\n"
+     "int qux[2];\n"
+     "int quux[SIZE-1+SHIFT:SHIFT];\n"
+     "int quuz[SOME_CONSTANT];\n"
+     "endclass\n",
+     "class cc;\n"
+     "  int qux [                 2];\n"
+     "  int quux[SIZE-1+SHIFT:SHIFT];\n"
+     "  int quuz[     SOME_CONSTANT];\n"
+     "endclass\n"},
+    {// aligns over comments (ignored)
+     "class c;\n"
+     "// foo is...\n"
+     "int foo;\n"
+     "// b is...\n"
+     "const bit b;\n"
+     " // llama is...\n"
+     "logic llama;\n"
+     "endclass : c\n",
+     "class c;\n"
+     "  // foo is...\n"
+     "  int       foo;\n"
+     "  // b is...\n"
+     "  const bit b;\n"
+     "  // llama is...\n"
+     "  logic     llama;\n"
+     "endclass : c\n"},
+    {// aligns over comments (ignored), even with blank lines
+     "class c;\n"
+     "// foo is...\n"
+     "int foo;\n"
+     "\n"
+     "// b is...\n"
+     "const bit b;\n"
+     "\n"
+     " // llama is...\n"
+     "logic llama;\n"
+     "endclass : c\n",
+     "class c;\n"
+     "  // foo is...\n"
+     "  int       foo;\n"
+     "\n"
+     "  // b is...\n"
+     "  const bit b;\n"
+     "\n"
+     "  // llama is...\n"
+     "  logic     llama;\n"
+     "endclass : c\n"},
+    {"class c;\n"
+     "rand logic l;\n"
+     "int [1:0] foo;\n"
+     "endclass : c\n",
+     "class c;\n"
+     "  rand logic       l;\n"
+     "  int        [1:0] foo;\n"
+     "endclass : c\n"},
+    {// non-data-declarations break up groups
+     "class c;\n"
+     "rand logic l;\n"
+     "int foo;\n"
+     "`uvm_bar_foo()\n"
+     "logic k;\n"
+     "rand int bar;\n"
+     "endclass : c\n",
+     "class c;\n"
+     "  rand logic l;\n"
+     "  int        foo;\n"
+     "  `uvm_bar_foo()\n"  // separates alignment groups above/below
+     "  logic    k;\n"
+     "  rand int bar;\n"
+     "endclass : c\n"},
+    {// non-data-declarations break up groups
+     "class c;\n"
+     "logic k;\n"
+     "rand int bar;\n"
+     "function void f();\n"
+     "endfunction\n"
+     "rand logic l;\n"
+     "int foo;\n"
+     "endclass : c\n",
+     "class c;\n"
+     "  logic    k;\n"
+     "  rand int bar;\n"
+     "  function void f();\n"  // function declaration breaks groups
+     "  endfunction\n"
+     "  rand logic l;\n"
+     "  int        foo;\n"
+     "endclass : c\n"},
+    {// align single-value initializers at the '='
+     "class c;\n"
+     "const logic foo=0;\n"
+     "const bit b=1;\n"
+     "endclass : c\n",
+     "class c;\n"
+     "  const logic foo = 0;\n"
+     "  const bit   b   = 1;\n"
+     "endclass : c\n"},
+    {// align single-value initializers at the '=', over non-initialized
+     "class c;\n"
+     "const logic foo=0;\n"
+     "rand int iidrv;\n"
+     "const bit b=1;\n"
+     "endclass : c\n",
+     "class c;\n"
+     "  const logic foo    = 0;\n"
+     "  rand int    iidrv;\n"  // no initializer, but align across this
+     "  const bit   b      = 1;\n"
+     "endclass : c\n"},
+
+    // constraint test cases
+    {
+        "class foo; constraint c1_c{ } endclass",
+        "class foo;\n"
+        "  constraint c1_c {}\n"
+        "endclass\n",
+    },
+    {
+        "class foo; constraint c1_c{  } constraint c2_c{ } endclass",
+        "class foo;\n"
+        "  constraint c1_c {}\n"
+        "  constraint c2_c {}\n"
+        "endclass\n",
+    },
+    {
+        "class foo; constraint c1_c{soft z==y;unique{baz};}endclass",
+        "class foo;\n"
+        "  constraint c1_c {\n"
+        "    soft z == y;\n"
+        "    unique {baz};\n"
+        "  }\n"
+        "endclass\n",
+    },
+    {
+        "class foo; constraint c1_c{ //comment1\n"
+        "//comment2\n"
+        "//comment3\n"
+        "} endclass",
+        "class foo;\n"
+        "  constraint c1_c {  //comment1\n"
+        "    //comment2\n"
+        "    //comment3\n"
+        "  }\n"
+        "endclass\n",
+    },
+
+    {"class foo;constraint c { "
+     "timer_enable dist { [ 8'h0 : 8'hfe ] :/ 90 , 8'hff :/ 10 }; "
+     "} endclass\n",
+     "class foo;\n"
+     "  constraint c {\n"
+     "    timer_enable dist {\n"
+     "      [8'h0 : 8'hfe] :/ 90,\n"
+     "      8'hff          :/ 10\n"  // aligned
+     "    };\n"
+     "  }\n"
+     "endclass\n"},
+
+    {
+        "class Foo; constraint if_c { if (z) { soft x == y; } } endclass\n",
+        "class Foo;\n"
+        "  constraint if_c {\n"
+        "    if (z) {\n"
+        "      soft x == y;\n"
+        "    }\n"
+        "  }\n"
+        "endclass\n",
+    },
+    {
+        "class Foo; constraint if_c { if (z) {\n"
+        "//comment-a\n"
+        "soft x == y;\n"
+        "//comment-b\n"
+        "} } endclass\n",
+        "class Foo;\n"
+        "  constraint if_c {\n"
+        "    if (z) {\n"
+        "      //comment-a\n"  // properly indented
+        "      soft x == y;\n"
+        "      //comment-b\n"  // properly indented
+        "    }\n"
+        "  }\n"
+        "endclass\n",
+    },
+    {
+        "class c; "
+        "constraint c_has_config_error {"
+        "if (yyy) {zzzz == 1;} else {yyyyyyy == 0;}} "
+        "endclass",
+        "class c;\n"
+        "  constraint c_has_config_error {\n"
+        "    if (yyy) {\n"
+        "      zzzz == 1;\n"
+        "    } else {\n"
+        "      yyyyyyy == 0;\n"
+        "    }\n"
+        "  }\n"
+        "endclass\n",
+    },
+    // distributions: colon alignment
+    {"class c;\n"
+     "constraint co {\n"
+     "d dist {\n"
+     "[1:2]:/2,\n"
+     "[11:33]:/22,\n"
+     "[111:444]:/8,\n"
+     "[1:42]:/10,\n"
+     "[11:12]:/3\n"
+     "};\n"
+     "}\n"
+     "endclass\n",
+     "class c;\n"
+     "  constraint co {\n"
+     "    d dist {\n"
+     "      [  1 :   2] :/ 2,\n"
+     "      [ 11 :  33] :/ 22,\n"
+     "      [111 : 444] :/ 8,\n"
+     "      [  1 :  42] :/ 10,\n"
+     "      [ 11 :  12] :/ 3\n"
+     "    };\n"
+     "  }\n"
+     "endclass\n"},
+    // distributions: subcolumns
+    {"class foo;\n"
+     "constraint bar {\n"
+     "baz dist {\n"
+     "[1:2]:/2,\n"
+     "QUX[3:0]:/10,\n"
+     "[11:33]:/22,\n"
+     "ID_LONGER_THAN_RANGES:/3,\n"
+     "[111:QUUZ[Z]]:/8,\n"
+     "[X[4:0]:Y[8:Z-2]]:/8\n"
+     "};\n"
+     "}\n"
+     "endclass\n",
+     "class foo;\n"
+     "  constraint bar {\n"
+     "    baz dist {\n"
+     "      [     1 :        2]   :/ 2,\n"
+     "      QUX[3:0]              :/ 10,\n"
+     "      [    11 :       33]   :/ 22,\n"
+     "      ID_LONGER_THAN_RANGES :/ 3,\n"
+     "      [   111 :  QUUZ[Z]]   :/ 8,\n"
+     "      [X[4:0] : Y[8:Z-2]]   :/ 8\n"
+     "    };\n"
+     "  }\n"
+     "endclass\n"},
+    // class with empty parameter list
+    {"class foo #(); endclass",
+     "class foo #();\n"
+     "endclass\n"},
+    // class with empty parameter list, with comment
+    {"class foo #(  \n"
+     "// comment\n"
+     "); endclass",
+     "class foo #(\n"
+     "    // comment\n"
+     ");\n"
+     "endclass\n"},
+    // class with empty parameter list, extends
+    {"class foo #()extends bar ; endclass",
+     "class foo #() extends bar;\n"
+     "endclass\n"},
+    // class extends from type with named parameters
+    {"class foo extends bar #(.N(N), .M(M)); endclass",
+     "class foo extends bar #(\n"
+     "    .N(N),\n"
+     "    .M(M)\n"
+     ");\n"
+     "endclass\n"},
+
+    // class with one parameter list
+    {"class foo #(type a = b); endclass",
+     "class foo #(\n"
+     "    type a = b\n"
+     ");\n"
+     "endclass\n"},
+
+    // class with multiple paramter list
+    {"class foo #(type a = b, type c = d, type e = f); endclass",
+     "class foo #(\n"
+     "    type a = b,\n"
+     "    type c = d,\n"
+     "    type e = f\n"
+     ");\n"
+     "endclass\n"},
+
+    // class with data members
+    {"class  i_love_data ;const\ninteger  sizer\t;endclass",
+     "class i_love_data;\n"
+     "  const integer sizer;\n"
+     "endclass\n"},
+    {"class  i_love_data ;const\ninteger  sizer=3\t;endclass",
+     "class i_love_data;\n"
+     "  const integer sizer = 3;\n"
+     "endclass\n"},
+    {"class  i_love_data ;protected\nint  count  \t;endclass",
+     "class i_love_data;\n"
+     "  protected int count;\n"
+     "endclass\n"},
+    {"class  i_love_data ;\t\nint  counter\n ;int  countess \t;endclass",
+     "class i_love_data;\n"
+     "  int counter;\n"
+     "  int countess;\n"
+     "endclass\n"},
+    {"class  i_love_params ;foo#( . bar)  baz\t;endclass",
+     "class i_love_params;\n"
+     "  foo #(.bar) baz;\n"
+     "endclass\n"},
+    {"class  i_love_params ;foo#( . bar ( bah ))  baz\t;endclass",
+     "class i_love_params;\n"
+     "  foo #(.bar(bah)) baz;\n"
+     "endclass\n"},
+    {"class  i_love_params ;foo#( . bar ( bah\n),"
+     ".\ncat( dog) )  baz\t;endclass",
+     "class i_love_params;\n"
+     "  foo #(\n"
+     "      .bar(bah),\n"
+     "      .cat(dog)\n"
+     "  ) baz;\n"
+     "endclass\n"},
+    {"class  i_love_params ;foo#( . bar)  baz1,baz2\t;endclass",
+     "class i_love_params;\n"
+     "  foo #(.bar) baz1, baz2;\n"
+     "endclass\n"},
+    {"class  i_love_params ;foo#( . bar)  baz\t;baz#(.foo)bar;endclass",
+     "class i_love_params;\n"
+     "  foo #(.bar) baz;\n"
+     "  baz #(.foo) bar;\n"
+     "endclass\n"},
+    {"class i_love_params // comment\n"
+     ";\n"
+     "foo#(\n"
+     ".foobar(quuuuux) // comment\n"
+     ", .cat(dog)\n"
+     ") baz // comment\n"
+     ";endclass\n",
+     "class i_love_params  // comment\n"
+     ";\n"
+     "  foo #(\n"
+     "        .foobar(quuuuux)  // comment\n"
+     "      , .cat   (dog)\n"
+     "  ) baz  // comment\n"
+     "  ;\n"
+     "endclass\n"},
+
+    // typedef test cases
+    {"typedef enum logic\t{ A=0, B=1 }foo_t;",
+     "typedef enum logic {\n"
+     "  A = 0,\n"
+     "  B = 1\n"
+     "} foo_t;\n"},
+    {"typedef enum uint8_t\t{ kA=8'b0, kB=8'b1 }foo_t;",
+     "typedef enum uint8_t {\n"  // uint8_t is user-defined
+     "  kA = 8'b0,\n"
+     "  kB = 8'b1\n"
+     "} foo_t;\n"},
+    {// With comments on same line as enum value
+     "typedef enum logic\t{ A=0, // foo\n"
+     "B,// bar\n"
+     "`ifndef DO_PANIC\n"
+     "C=42,// answer\n"
+     "`endif\n"
+     "D=3    // baz\n"
+     "}foo_t;",
+     "typedef enum logic {\n"
+     "  A = 0,   // foo\n"
+     "  B,       // bar\n"
+     "`ifndef DO_PANIC\n"
+     "  C = 42,  // answer\n"
+     "`endif\n"
+     "  D = 3    // baz\n"
+     "} foo_t;\n"},
+    {// with scalar dimensions
+     "typedef enum logic[2]\t{ A=0, B=1 }foo_t;",
+     "typedef enum logic [2] {\n"
+     "  A = 0,\n"
+     "  B = 1\n"
+     "} foo_t;\n"},
+    {// with range dimensions
+     "typedef enum logic[1:0]\t{ A=0, B=1 }foo_t;",
+     "typedef enum logic [1:0] {\n"
+     "  A = 0,\n"
+     "  B = 1\n"
+     "} foo_t;\n"},
+    {"typedef foo_pkg::baz_t#(.L(L), .W(W)) bar_t;\n",
+     "typedef foo_pkg::baz_t#(\n"
+     "    .L(L),\n"
+     "    .W(W)\n"
+     ") bar_t;\n"},
+    // By default (class_parameter_space == false), no space before '#'
+    {"typedef dv_base_env_cov #(.CFG_T(tl_agent_env_cfg)) tl_agent_env_cov;\n",
+     "typedef dv_base_env_cov#(\n"
+     "    .CFG_T(tl_agent_env_cfg)\n"
+     ") tl_agent_env_cov;\n"},
+    {"typedef dv_base_env_cov#(.CFG_T(tl_agent_env_cfg)) tl_agent_env_cov;\n",
+     "typedef dv_base_env_cov#(\n"
+     "    .CFG_T(tl_agent_env_cfg)\n"
+     ") tl_agent_env_cov;\n"},
+    // single short parameter stays on one line
+    {"typedef my_class #(.P(P)) my_class_t;\n",
+     "typedef my_class#(.P(P)) my_class_t;\n"},
+
+    // let declarations each stay on their own line
+    {"module t;\n"
+     "let OFF = 4;\n"
+     "let UNIQUE = 32;\n"
+     "let PP(a) = 30 + a;\n"
+     "endmodule\n",
+     "module t;\n"
+     "  let OFF = 4;\n"
+     "  let UNIQUE = 32;\n"
+     "  let PP(a) = 30 + a;\n"
+     "endmodule\n"},
+
+    // let declarations each stay on their own line
+    {"module t;\n"
+     "let OFF = 4;\n"
+     "let UNIQUE = 32;\n"
+     "let PP(a) = 30 + a;\n"
+     "endmodule\n",
+     "module t;\n"
+     "  let OFF = 4;\n"
+     "  let UNIQUE = 32;\n"
+     "  let PP(a) = 30 + a;\n"
+     "endmodule\n"},
+
+    // package test cases
+    {"package fedex;localparam  int  www=3 ;endpackage   :  fedex\n",
+     "package fedex;\n"
+     "  localparam int www = 3;\n"
+     "endpackage : fedex\n"},
+    {"package   typey ;"
+     "typedef enum int{ A=0, B=1 }foo_t;"
+     "typedef enum{ C=0, D=1 }bar_t;"
+     "endpackage:typey\n",
+     "package typey;\n"
+     "  typedef enum int {\n"
+     "    A = 0,\n"
+     "    B = 1\n"
+     "  } foo_t;\n"
+     "  typedef enum {\n"
+     "    C = 0,\n"
+     "    D = 1\n"
+     "  } bar_t;\n"
+     "endpackage : typey\n"},
+    {// net type declarations
+     "package foo_pkg;"
+     "nettype shortreal\t\tfoo  ;"
+     "nettype\nbar[1:0 ] baz  with\tquux ;"
+     "endpackage",
+     "package foo_pkg;\n"
+     "  nettype shortreal foo;\n"
+     "  nettype bar [1:0] baz with quux;\n"
+     "endpackage\n"},
+    {"package foo_pkg; \n"
+     "// function description.......\n"
+     "function automatic void bar();"
+     "endfunction "
+     "endpackage\n",
+     "package foo_pkg;\n"
+     "  // function description.......\n"
+     "  function automatic void bar();\n"
+     "  endfunction\n"
+     "endpackage\n"},
+    {"package foo_pkg; \n"
+     "// function description.......\n"
+     "function void bar(string name=\"x\" ) ;"
+     "endfunction "
+     "endpackage\n",
+     "package foo_pkg;\n"
+     "  // function description.......\n"
+     "  function void bar(string name = \"x\");\n"
+     "  endfunction\n"
+     "endpackage\n"},
+    {" package foo_pkg; \n"
+     "// class description.............\n"
+     "class classy;"
+     "endclass "
+     "endpackage\n",
+     "package foo_pkg;\n"
+     "  // class description.............\n"
+     "  class classy;\n"
+     "  endclass\n"
+     "endpackage\n"},
+    {"package\tfoo_pkg; \n"
+     "// class description.............\n"
+     "class   classy;    \n"
+     "// function description.......\n"
+     "function\nautomatic   void bar( );"
+     "endfunction   "
+     "endclass\t"
+     "endpackage\n",
+     "package foo_pkg;\n"
+     "  // class description.............\n"
+     "  class classy;\n"
+     "    // function description.......\n"
+     "    function automatic void bar();\n"
+     "    endfunction\n"
+     "  endclass\n"
+     "endpackage\n"},
+    {"package fedex;\n"
+     "  import \"asdf\" context function void bar(\n"
+     "    input bit              [2:1] aaaa,   // EOL COMMENT\n"
+     "                                          // another\n"
+     "    input bit foo\n"
+     "  );\n"
+     "endpackage\n",
+     "package fedex;\n"
+     "  import \"asdf\" context\n"
+     "      function void bar(\n"
+     "    input\n        bit [2:1] aaaa,  // EOL COMMENT\n"
+     "                         // another\n"
+     "    input bit foo\n"
+     "  );\n"
+     "endpackage\n"},
+
+};
+
+TEST(FormatterEndToEndTest, ClassPackageFormatterTestCases) {
+  RunFormatterTestCases40(kClassPackageFormatterTestCases);
+}
+
+}  // namespace
+}  // namespace formatter
+}  // namespace verilog
diff --git a/verible/verilog/formatting/formatter_disable_test.cc b/verible/verilog/formatting/formatter_disable_test.cc
new file mode 100644
index 0000000..b653063
--- /dev/null
+++ b/verible/verilog/formatting/formatter_disable_test.cc
@@ -0,0 +1,5814 @@
+// Copyright 2017-2026 The Verible Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Test cases in this file should be *insensitive* to wrapping penalties.
+// Penalty-sensitive tests belong in formatter-tuning_test.cc.
+
+#include "gtest/gtest.h"
+#include "verible/verilog/formatting/formatter-test-utils.h"
+
+namespace verilog {
+namespace formatter {
+namespace {
+
+static constexpr FormatterTestCase kDisableFormatterTestCases[] = {
+    // comment-controlled formatter disabling
+    {"// verilog_format: off\n"  // disables whole file
+     "  `include  \t\t  \"path/to/file.vh\"\n",
+     "// verilog_format: off\n"
+     "  `include  \t\t  \"path/to/file.vh\"\n"},  // keeps bad spacing
+    {"/* verilog_format: off */\n"                // disables whole file
+     "  `include  \t\t  \"path/to/file.svh\"  \n",
+     "/* verilog_format: off */\n"
+     "  `include  \t\t  \"path/to/file.svh\"  \n"},  // keeps bad spacing
+    {"// verilog_format: on\n"  // already enabled, no effect
+     "  `include  \t  \"path/to/file.svh\"  \t\n",
+     "// verilog_format: on\n"
+     "`include \"path/to/file.svh\"\n"},
+    {"// verilog_format: off\n"
+     "// verilog_format: on\n"  // re-enable right away
+     "  `include  \t\t  \"path/to/file.svh\"  \n",
+     "// verilog_format: off\n"
+     "// verilog_format: on\n"
+     "`include \"path/to/file.svh\"\n"},
+    {"/* aaa *//* bbb */\n"                         // not formatting controls
+     "  `include  \t\t  \"path/to/file.svh\"  \n",  // should format
+     "/* aaa */  /* bbb */\n"  // currently inserts 2 spaces
+     "`include \"path/to/file.svh\"\n"},
+    {"/* verilog_format: off *//* verilog_format: on */\n"  // re-enable
+     "  `include  \t\t  \"path/to/file.svh\"  \n",
+     // Note that this case normally wouldn't fit in 40 columns,
+     // but disabling formatting lets it overflow.
+     "/* verilog_format: off *//* verilog_format: on */\n"
+     "`include \"path/to/file.svh\"\n"},
+    {"// verilog_format: off\n"
+     "  `include  \t\t  \"path/to/fileA.svh\"  // verilog_format: on\n"
+     "  `include  \t\t  \"path/to/fileB.svh\"  \n",
+     // re-enable formatting with comment trailing other tokens
+     "// verilog_format: off\n"
+     "  `include  \t\t  \"path/to/fileA.svh\"  // verilog_format: on\n"
+     "`include \"path/to/fileB.svh\"\n"},
+    {"  `include  \t\t  \"path/to/file1.vh\" \n"  // format this
+     "// verilog_format: off\n"                   // start disabling
+     "  `include  \t\t  \"path/to/file2.vh\" \n"
+     "\t\t\n"
+     "  `include  \t\t  \"path/to/file3.vh\" \n"
+     "// verilog_format: on\n"                     // stop disabling
+     "  `include  \t\t  \"path/to/file4.vh\" \n",  // format this
+     "`include \"path/to/file1.vh\"\n"
+     "// verilog_format: off\n"  // start disabling
+     "  `include  \t\t  \"path/to/file2.vh\" \n"
+     "\t\t\n"
+     "  `include  \t\t  \"path/to/file3.vh\" \n"
+     "// verilog_format: on\n"  // stop disabling
+     "`include \"path/to/file4.vh\"\n"},
+    {// disabling formatting on a module (to end of file)
+     "// verilog_format: off\n"
+     "module m;endmodule\n",
+     "// verilog_format: off\n"
+     "module m;endmodule\n"},
+    {// disabling formatting on a module (to end of file)
+     "// verilog_format: off\n"
+     "module m;\n"
+     "unindented instantiation;\n"
+     "endmodule\n",
+     "// verilog_format: off\n"
+     "module m;\n"
+     "unindented instantiation;\n"
+     "endmodule\n"},
+    {// disabling formatting inside a port declaration list disables alignment,
+     // but falls back to standard compaction.
+     "module align_off(\n"
+     "input w  ,\n"
+     "    // verilog_format: off\n"
+     "input wire  [y:z] wwww,\n"
+     "    // verilog_format: on\n"
+     "output  reg    xx\n"
+     ");\n"
+     "endmodule",
+     "module align_off (\n"
+     "    input w  ,\n"  // preserved because group is partially disabled
+     "    // verilog_format: off\n"
+     "input wire  [y:z] wwww,\n"  // not compacted
+     "    // verilog_format: on\n"
+     "    output  reg    xx\n"  // preserved because group is partially disabled
+     ");\n"
+     "endmodule\n"},
+
+    {// multiple tokens with EOL comment
+     "module please;  // don't break before the comment\n"
+     "endmodule\n",
+     "module please\n"
+     "    ;  // don't break before the comment\n"
+     "endmodule\n"},
+    {// one token with EOL comment
+     "module please;\n"
+     "endmodule  // don't break before the comment\n",
+     "module please;\n"
+     "endmodule  // don't break before the comment\n"},
+    {
+        // line with only an EOL comment
+        "module wild;\n"
+        "// a really long comment on its own line to be left alone\n"
+        "endmodule",
+        "module wild;\n"
+        "  // a really long comment on its own line to be left alone\n"
+        "endmodule\n",
+    },
+    {
+        // primitive declaration
+        "primitive primitive1(o, s, r);output o;reg o;input s;input r;table 1 "
+        "? :"
+        " ? : 0; ? 1    : 0   : -; endtable endprimitive",
+        "primitive primitive1(o, s, r);\n"
+        "  output o;\n"
+        "  reg o;\n"
+        "  input s;\n"
+        "  input r;\n"
+        "  table\n"
+        "    1 ? : ? : 0;\n"
+        "    ? 1 : 0 : -;\n"
+        "  endtable\n"
+        "endprimitive\n",
+    },
+    {
+        // one-input combinatorial UDP
+        "primitive primitive1 ( o,i ) ;output o;input i;"
+        " table 1  :   0 ;   0  :  1 ; endtable endprimitive",
+        "primitive primitive1(o, i);\n"
+        "  output o;\n"
+        "  input i;\n"
+        "  table\n"
+        "    1 : 0;\n"
+        "    0 : 1;\n"
+        "  endtable\n"
+        "endprimitive\n",
+    },
+    {
+        // two-input combinatorial UDP
+        "primitive primitive2(o, s, r);output o;input s;input r;"
+        "table 1 ? : 0;? 1 : -; endtable endprimitive",
+        "primitive primitive2(o, s, r);\n"
+        "  output o;\n"
+        "  input s;\n"
+        "  input r;\n"
+        "  table\n"
+        "    1 ? : 0;\n"
+        "    ? 1 : -;\n"
+        "  endtable\n"
+        "endprimitive\n",
+    },
+    {
+        // ten-input combinatorial UDP
+        "primitive comb10(o, i0, i1, i2, i3, i4, i5, i6, i7, i8, i9);"
+        "output o;input i0, i1, i2, i3, i4, i5, i6, i7, i8, i9;"
+        "table 0 ? ? ? ? ? ? ? ? 0 : 0;1 ? ? ? ? ? ? ? ? 0 : 1;"
+        "1 ? ? ? ? ? ? ? ? 1 : 1;0 ? ? ? ? ? ? ? ? 1 : 0;endtable endprimitive",
+        "primitive comb10(o, i0, i1, i2, i3, i4,\n"
+        "                 i5, i6, i7, i8, i9);\n"
+        "  output o;\n"
+        "  input i0, i1, i2, i3, i4, i5, i6, i7,\n"
+        "      i8, i9;\n"
+        "  table\n"
+        "    0 ? ? ? ? ? ? ? ? 0 : 0;\n"
+        "    1 ? ? ? ? ? ? ? ? 0 : 1;\n"
+        "    1 ? ? ? ? ? ? ? ? 1 : 1;\n"
+        "    0 ? ? ? ? ? ? ? ? 1 : 0;\n"
+        "  endtable\n"
+        "endprimitive\n",
+    },
+    {
+        // sequential level-sensitive UDP
+        "primitive level_seq(o, c, d);output o;reg o;"
+        "  input c;input d;table\n"
+        "//  C D  state O\n"
+        "0   ? : ? :  -;  // No Change\n"
+        "? 0   : 0 :  0;  // Unknown\n"
+        "endtable endprimitive",
+        "primitive level_seq(o, c, d);\n"
+        "  output o;\n"
+        "  reg o;\n"
+        "  input c;\n"
+        "  input d;\n"
+        "  table\n"
+        "    //  C D  state O\n"
+        "    0 ? : ? : -;  // No Change\n"
+        "    ? 0 : 0 : 0;  // Unknown\n"
+        "  endtable\n"
+        "endprimitive\n",
+    },
+    {
+        // sequential edge-sensitive UDP
+        "primitive edge_seq(o, c, d);output o;reg o;input c;input d;"
+        "table (01) 0 : ? :  0;(01) 1 : ? :  1;(0?) 1 : 1 :  1;(0?) 0 : 0 :  "
+        "0;\n"
+        "// ignore negative c\n"
+        "(?0) ? : ? :  -;\n"
+        "// ignore changes on steady c\n"
+        "?  (?\?) : ? :  -; endtable endprimitive",
+        "primitive edge_seq(o, c, d);\n"
+        "  output o;\n"
+        "  reg o;\n"
+        "  input c;\n"
+        "  input d;\n"
+        "  table\n"
+        "    (01) 0 : ? : 0;\n"
+        "    (01) 1 : ? : 1;\n"
+        "    (0?) 1 : 1 : 1;\n"
+        "    (0?) 0 : 0 : 0;\n"
+        "    // ignore negative c\n"
+        "    (?0) ? : ? : -;\n"
+        "    // ignore changes on steady c\n"
+        "    ? (?\?) : ? : -;\n"
+        "  endtable\n"
+        "endprimitive\n",
+    },
+    {
+        // mixed sequential UDP
+        "primitive mixed(o, clk, j, k, preset, clear);output o;reg o;"
+        "input c;input j, k;input preset, clear;table "
+        "?  ??  01:?:1 ; // preset logic\n"
+        "?  ??  *1:1:1 ;?  ??  10:?:0 ; // clear logic\n"
+        "?  ??  1*:0:0 ;r  00  00:0:1 ; // normal\n"
+        "r  00  11:?:- ;r  01  11:?:0 ;r  10  11:?:1 ;r  11  11:0:1 ;"
+        "r  11  11:1:0 ;f  ??  ??:?:- ;b  *?  ??:?:- ;"
+        " // j and k\n"
+        "b  ?*  ??:?:- ;endtable endprimitive\n",
+        "primitive mixed(o, clk, j, k, preset,\n"
+        "                clear);\n"
+        "  output o;\n"
+        "  reg o;\n"
+        "  input c;\n"
+        "  input j, k;\n"
+        "  input preset, clear;\n"
+        "  table\n"
+        "    ? ? ? 0 1 : ? : 1;  // preset logic\n"
+        "    ? ? ? * 1 : 1 : 1;\n"
+        "    ? ? ? 1 0 : ? : 0;  // clear logic\n"
+        "    ? ? ? 1 * : 0 : 0;\n"
+        "    r 0 0 0 0 : 0 : 1;  // normal\n"
+        "    r 0 0 1 1 : ? : -;\n"
+        "    r 0 1 1 1 : ? : 0;\n"
+        "    r 1 0 1 1 : ? : 1;\n"
+        "    r 1 1 1 1 : 0 : 1;\n"
+        "    r 1 1 1 1 : 1 : 0;\n"
+        "    f ? ? ? ? : ? : -;\n"
+        "    b * ? ? ? : ? : -;  // j and k\n"
+        "    b ? * ? ? : ? : -;\n"
+        "  endtable\n"
+        "endprimitive\n",
+    },
+    // un-lexed multiline macro arg token
+    {
+        " task  S ; "
+        "`ppgJH3JoxhwyTmZ2dgPiuMQzpRAWiSs("
+        "{xYtxuh6.FIMcVPEWfhtoI2FSe, xYtxuh6.ZVL5XASVGLYz32} == "
+        "SqRgavM[15:2];\n"
+        "JgQLBG == 4'h0;, \"foo\" )\n"
+        "endtask\n",
+        "task S;\n"
+        "  `ppgJH3JoxhwyTmZ2dgPiuMQzpRAWiSs(\n"
+        "      {xYtxuh6.FIMcVPEWfhtoI2FSe, xYtxuh6.ZVL5XASVGLYz32} == "
+        "SqRgavM[15:2];\n"
+        "JgQLBG == 4'h0;,\n"
+        "      \"foo\")\n"
+        "endtask\n",
+    },
+
+    // between identifier and '(', no args
+
+    {"// verilog_syntax: parse-as-module-body",
+     "// verilog_syntax: parse-as-module-body\n"},
+    {"// verilog_syntax: parse-as-statements",
+     "// verilog_syntax: parse-as-statements\n"},
+    {"// verilog_syntax: parse-as-class-body",
+     "// verilog_syntax: parse-as-class-body\n"},
+    {"// verilog_syntax: parse-as-package-body",
+     "// verilog_syntax: parse-as-package-body\n"},
+    {"// verilog_syntax: parse-as-library-map",
+     "// verilog_syntax: parse-as-library-map\n"},
+    {"// verilog_syntax: does-not-exist-mode",
+     "// verilog_syntax: does-not-exist-mode\n"},
+    {"// verilog_syntax: parse-as-module-body\n",
+     "// verilog_syntax: parse-as-module-body\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "// comment",
+     "// verilog_syntax: parse-as-module-body\n"
+     "// comment\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c */ ();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c */ ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c1 */ /* c2 */ ();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */  /* c2 */ ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c */\n"
+     "();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c */\n"
+     "    ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c1 */ /* c2 */\n"
+     "();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */  /* c2 */\n"
+     "    ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz // c\n"
+     "();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c\n"
+     "    ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c1 */ // c2\n"
+     "();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */  // c2\n"
+     "    ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c */ ();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c */ ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c1 */ /* c2 */ ();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c1 */  /* c2 */ ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c */\n"
+     "();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c */\n"
+     "    ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c1 */ /* c2 */\n"
+     "();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c1 */  /* c2 */\n"
+     "    ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "// c\n"
+     "();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    // c\n"
+     "    ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c1 */ // c2\n"
+     "();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c1 */  // c2\n"
+     "    ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     "();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c1 */\n"
+     "    /* c2 */\n"
+     "    ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "// c1\n"
+     "// c2\n"
+     "();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    // c1\n"
+     "    // c2\n"
+     "    ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c1 */\n"
+     "/* c2 */ ();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    /* c2 */ ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz // c1\n"
+     "/* c2 */ ();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c1\n"
+     "    /* c2 */ ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */ ();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */ ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c1 */\n"
+     "/* c2 */\n"
+     "();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    /* c2 */\n"
+     "    ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz // c1\n"
+     "/* c2 */\n"
+     "();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c1\n"
+     "    /* c2 */\n"
+     "    ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c1 */\n"
+     "// c2\n"
+     "();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    // c2\n"
+     "    ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz // c1\n"
+     "// c2\n"
+     "();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c1\n"
+     "    // c2\n"
+     "    ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     "();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */\n"
+     "    ();\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz // c1\n"
+     "// c2\n"
+     "// c3\n"
+     "();\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c1\n"
+     "    // c2\n"
+     "    // c3\n"
+     "    ();\n"},
+
+    // between identifier and '(', with arg
+
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c */ (arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c */ (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c1 */ /* c2 */ (arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */  /* c2 */ (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c */\n"
+     "(arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c */\n"
+     "    (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c1 */ /* c2 */\n"
+     "(arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */  /* c2 */\n"
+     "    (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz // c\n"
+     "(arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c\n"
+     "    (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c1 */ // c2\n"
+     "(arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */  // c2\n"
+     "    (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c */ (arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c */ (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c1 */ /* c2 */ (arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c1 */  /* c2 */ (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c */\n"
+     "(arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c */\n"
+     "    (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c1 */ /* c2 */\n"
+     "(arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c1 */  /* c2 */\n"
+     "    (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "// c\n"
+     "(arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    // c\n"
+     "    (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c1 */ // c2\n"
+     "(arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c1 */  // c2\n"
+     "    (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     "(arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c1 */\n"
+     "    /* c2 */\n"
+     "    (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "// c1\n"
+     "// c2\n"
+     "(arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    // c1\n"
+     "    // c2\n"
+     "    (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c1 */\n"
+     "/* c2 */ (arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    /* c2 */ (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz // c1\n"
+     "/* c2 */ (arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c1\n"
+     "    /* c2 */ (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */ (arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */ (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c1 */\n"
+     "/* c2 */\n"
+     "(arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    /* c2 */\n"
+     "    (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz // c1\n"
+     "/* c2 */\n"
+     "(arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c1\n"
+     "    /* c2 */\n"
+     "    (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c1 */\n"
+     "// c2\n"
+     "(arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    // c2\n"
+     "    (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz // c1\n"
+     "// c2\n"
+     "(arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c1\n"
+     "    // c2\n"
+     "    (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     "(arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */\n"
+     "    (arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz // c1\n"
+     "// c2\n"
+     "// c3\n"
+     "(arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c1\n"
+     "    // c2\n"
+     "    // c3\n"
+     "    (arg);\n"},
+
+    // after '(', no args
+
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c1 */ /* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c1 */  /* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c1 */ /* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c1 */  /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(// c\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  // c\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c1 */ // c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c1 */  // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "/* c */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "/* c */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "/* c1 */ /* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "/* c1 */  /* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "/* c */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "    /* c */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "/* c1 */ /* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "    /* c1 */  /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "// c\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "    // c\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "/* c1 */ // c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "    /* c1 */  // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "    /* c1 */\n"
+     "    /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "// c1\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "    // c1\n"
+     "    // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c1 */\n"
+     "/* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c1 */\n"
+     "/* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(// c1\n"
+     "/* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  // c1\n"
+     "/* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c1 */\n"
+     "    /* c2 */\n"
+     "/* c3 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c1 */\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c1 */\n"
+     "    /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(// c1\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  // c1\n"
+     "    /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c1 */\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c1 */\n"
+     "    // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(// c1\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  // c1\n"
+     "    // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  // c1\n"
+     "    // c2\n"
+     "    // c3\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */ /* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */  /* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */ /* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */  /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */ // c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */  // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */ /* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */  /* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */ /* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c1 */  /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "// c\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    // c\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */ // c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c1 */  // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c1 */\n"
+     "    /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "// c1\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    // c1\n"
+     "    // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "/* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "/* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c1\n"
+     "/* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c1\n"
+     "/* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    /* c2 */\n"
+     "/* c3 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c1\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c1\n"
+     "    /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c1\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c1\n"
+     "    // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c1\n"
+     "    // c2\n"
+     "    // c3\n"
+     ");\n"},
+
+    // after '(', with arg
+
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c */arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c */ arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c1 */ /* c2 */arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c1 */  /* c2 */ arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c */\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c */\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c1 */ /* c2 */\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c1 */  /* c2 */\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(// c\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  // c\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c1 */ // c2\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c1 */  // c2\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "/* c */arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "    /* c */ arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "/* c1 */ /* c2 */arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "    /* c1 */  /* c2 */ arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "/* c */\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "    /* c */\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "/* c1 */ /* c2 */\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "    /* c1 */  /* c2 */\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "// c\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "    // c\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "/* c1 */ // c2\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "    /* c1 */  // c2\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "    /* c1 */\n"
+     "    /* c2 */\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "// c1\n"
+     "// c2\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(\n"
+     "    // c1\n"
+     "    // c2\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c1 */\n"
+     "/* c2 */arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c1 */\n"
+     "    /* c2 */ arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(// c1\n"
+     "/* c2 */arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  // c1\n"
+     "    /* c2 */ arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */ arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c1 */\n"
+     "/* c2 */\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c1 */\n"
+     "    /* c2 */\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(// c1\n"
+     "/* c2 */\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  // c1\n"
+     "    /* c2 */\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c1 */\n"
+     "// c2\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c1 */\n"
+     "    // c2\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(// c1\n"
+     "// c2\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  // c1\n"
+     "    // c2\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(// c1\n"
+     "// c2\n"
+     "// c3\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(  // c1\n"
+     "    // c2\n"
+     "    // c3\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c */arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c */ arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */ /* c2 */arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */  /* c2 */ arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c */\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c */\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */ /* c2 */\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */  /* c2 */\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */ // c2\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */  // c2\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c */arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c */ arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */ /* c2 */arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c1 */  /* c2 */ arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c */\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c */\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */ /* c2 */\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c1 */  /* c2 */\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "// c\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    // c\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */ // c2\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c1 */  // c2\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c1 */\n"
+     "    /* c2 */\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "// c1\n"
+     "// c2\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    // c1\n"
+     "    // c2\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "/* c2 */arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    /* c2 */ arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c1\n"
+     "/* c2 */arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c1\n"
+     "    /* c2 */ arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */ arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "/* c2 */\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    /* c2 */\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c1\n"
+     "/* c2 */\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c1\n"
+     "    /* c2 */\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "// c2\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    // c2\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c1\n"
+     "// c2\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c1\n"
+     "    // c2\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */\n"
+     "    arg);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c1\n"
+     "// c2\n"
+     "// c3\n"
+     "arg);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c1\n"
+     "    // c2\n"
+     "    // c3\n"
+     "    arg);\n"},
+
+    // after single arg
+
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg/* c */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg  /* c */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg/* c1 */ /* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg  /* c1 */  /* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg/* c */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg  /* c */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg/* c1 */ /* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg  /* c1 */  /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg// c\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg  // c\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg/* c1 */ // c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg  /* c1 */  // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg\n"
+     "/* c */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg\n"
+     "/* c */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg\n"
+     "/* c1 */ /* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg\n"
+     "/* c1 */  /* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg\n"
+     "/* c */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg\n"
+     "           /* c */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg\n"
+     "/* c1 */ /* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg\n"
+     "           /* c1 */  /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg\n"
+     "// c\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg\n"
+     "           // c\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg\n"
+     "/* c1 */ // c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg\n"
+     "           /* c1 */  // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg\n"
+     "           /* c1 */\n"
+     "           /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg\n"
+     "// c1\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg\n"
+     "           // c1\n"
+     "           // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg/* c1 */\n"
+     "/* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg  /* c1 */\n"
+     "/* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg// c1\n"
+     "/* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg  // c1\n"
+     "/* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg  /* c1 */\n"
+     "           /* c2 */\n"
+     "/* c3 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg/* c1 */\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg  /* c1 */\n"
+     "           /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg// c1\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg  // c1\n"
+     "           /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg/* c1 */\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg  /* c1 */\n"
+     "           // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg// c1\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg  // c1\n"
+     "           // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg  /* c1 */\n"
+     "           /* c2 */\n"
+     "           /* c3 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg  // c1\n"
+     "           // c2\n"
+     "           // c3\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg/* c */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg  /* c */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg/* c1 */ /* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg  /* c1 */  /* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg/* c */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg  /* c */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg/* c1 */ /* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg  /* c1 */  /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg// c\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg  // c\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg/* c1 */ // c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg  /* c1 */  // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg\n"
+     "/* c */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg\n"
+     "/* c */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg\n"
+     "/* c1 */ /* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg\n"
+     "/* c1 */  /* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg\n"
+     "/* c */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg\n"
+     "           /* c */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg\n"
+     "/* c1 */ /* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg\n"
+     "           /* c1 */  /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg\n"
+     "// c\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg\n"
+     "           // c\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg\n"
+     "/* c1 */ // c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg\n"
+     "           /* c1 */  // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg\n"
+     "           /* c1 */\n"
+     "           /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg\n"
+     "// c1\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg\n"
+     "           // c1\n"
+     "           // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg/* c1 */\n"
+     "/* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg  /* c1 */\n"
+     "/* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg// c1\n"
+     "/* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg  // c1\n"
+     "/* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg  /* c1 */\n"
+     "           /* c2 */\n"
+     "/* c3 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg/* c1 */\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg  /* c1 */\n"
+     "           /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg// c1\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg  // c1\n"
+     "           /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg/* c1 */\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg  /* c1 */\n"
+     "           // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg// c1\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg  // c1\n"
+     "           // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg  /* c1 */\n"
+     "           /* c2 */\n"
+     "           /* c3 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg  // c1\n"
+     "           // c2\n"
+     "           // c3\n"
+     ");\n"},
+
+    // before colon
+
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1/* c */, arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1  /* c */, arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1/* c1 */ /* c2 */, arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1  /* c1 */  /* c2 */,\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1/* c */\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1  /* c */\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1/* c1 */ /* c2 */\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1  /* c1 */  /* c2 */\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1// c\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1  // c\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1/* c1 */ // c2\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1  /* c1 */  // c2\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1\n"
+     "/* c */, arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1\n"
+     "           /* c */, arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1\n"
+     "/* c1 */ /* c2 */, arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1\n"
+     "           /* c1 */  /* c2 */, arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1\n"
+     "/* c */\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1\n"
+     "           /* c */\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1\n"
+     "/* c1 */ /* c2 */\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1\n"
+     "           /* c1 */  /* c2 */\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1\n"
+     "// c\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1\n"
+     "           // c\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1\n"
+     "/* c1 */ // c2\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1\n"
+     "           /* c1 */  // c2\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1\n"
+     "           /* c1 */\n"
+     "           /* c2 */\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1\n"
+     "// c1\n"
+     "// c2\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1\n"
+     "           // c1\n"
+     "           // c2\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1/* c1 */\n"
+     "/* c2 */, arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1  /* c1 */\n"
+     "           /* c2 */, arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1// c1\n"
+     "/* c2 */, arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1  // c1\n"
+     "           /* c2 */, arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */, arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1  /* c1 */\n"
+     "           /* c2 */\n"
+     "           /* c3 */, arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1/* c1 */\n"
+     "/* c2 */\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1  /* c1 */\n"
+     "           /* c2 */\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1// c1\n"
+     "/* c2 */\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1  // c1\n"
+     "           /* c2 */\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1/* c1 */\n"
+     "// c2\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1  /* c1 */\n"
+     "           // c2\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1// c1\n"
+     "// c2\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1  // c1\n"
+     "           // c2\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1  /* c1 */\n"
+     "           /* c2 */\n"
+     "           /* c3 */\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1  // c1\n"
+     "           // c2\n"
+     "           // c3\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1/* c */, arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1  /* c */, arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1/* c1 */ /* c2 */, arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1  /* c1 */  /* c2 */,\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1/* c */\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1  /* c */\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1/* c1 */ /* c2 */\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1  /* c1 */  /* c2 */\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1// c\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1  // c\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1/* c1 */ // c2\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1  /* c1 */  // c2\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1\n"
+     "/* c */, arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1\n"
+     "           /* c */, arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1\n"
+     "/* c1 */ /* c2 */, arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1\n"
+     "           /* c1 */  /* c2 */, arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1\n"
+     "/* c */\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1\n"
+     "           /* c */\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1\n"
+     "/* c1 */ /* c2 */\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1\n"
+     "           /* c1 */  /* c2 */\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1\n"
+     "// c\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1\n"
+     "           // c\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1\n"
+     "/* c1 */ // c2\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1\n"
+     "           /* c1 */  // c2\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1\n"
+     "           /* c1 */\n"
+     "           /* c2 */\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1\n"
+     "// c1\n"
+     "// c2\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1\n"
+     "           // c1\n"
+     "           // c2\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1/* c1 */\n"
+     "/* c2 */, arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1  /* c1 */\n"
+     "           /* c2 */, arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1// c1\n"
+     "/* c2 */, arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1  // c1\n"
+     "           /* c2 */, arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */, arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1  /* c1 */\n"
+     "           /* c2 */\n"
+     "           /* c3 */, arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1/* c1 */\n"
+     "/* c2 */\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1  /* c1 */\n"
+     "           /* c2 */\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1// c1\n"
+     "/* c2 */\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1  // c1\n"
+     "           /* c2 */\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1/* c1 */\n"
+     "// c2\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1  /* c1 */\n"
+     "           // c2\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1// c1\n"
+     "// c2\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1  // c1\n"
+     "           // c2\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1  /* c1 */\n"
+     "           /* c2 */\n"
+     "           /* c3 */\n"
+     "           , arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ", arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1  // c1\n"
+     "           // c2\n"
+     "           // c3\n"
+     "           , arg2);\n"},
+
+    // after colon
+
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,/* c */arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,  /* c */ arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,/* c1 */ /* c2 */arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,  /* c1 */  /* c2 */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,/* c */\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,  /* c */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,/* c1 */ /* c2 */\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,  /* c1 */  /* c2 */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,// c\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,  // c\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,/* c1 */ // c2\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,  /* c1 */  // c2\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "/* c */arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "           /* c */ arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "/* c1 */ /* c2 */arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "           /* c1 */  /* c2 */ arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "/* c */\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "           /* c */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "/* c1 */ /* c2 */\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "           /* c1 */  /* c2 */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "// c\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "           // c\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "/* c1 */ // c2\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "           /* c1 */  // c2\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "           /* c1 */\n"
+     "           /* c2 */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "// c1\n"
+     "// c2\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "           // c1\n"
+     "           // c2\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,/* c1 */\n"
+     "/* c2 */arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,  /* c1 */\n"
+     "           /* c2 */ arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,// c1\n"
+     "/* c2 */arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,  // c1\n"
+     "           /* c2 */ arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,  /* c1 */\n"
+     "           /* c2 */\n"
+     "           /* c3 */ arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,/* c1 */\n"
+     "/* c2 */\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,  /* c1 */\n"
+     "           /* c2 */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,// c1\n"
+     "/* c2 */\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,  // c1\n"
+     "           /* c2 */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,/* c1 */\n"
+     "// c2\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,  /* c1 */\n"
+     "           // c2\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,// c1\n"
+     "// c2\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,  // c1\n"
+     "           // c2\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,  /* c1 */\n"
+     "           /* c2 */\n"
+     "           /* c3 */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,// c1\n"
+     "// c2\n"
+     "// c3\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,  // c1\n"
+     "           // c2\n"
+     "           // c3\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,/* c */arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,  /* c */ arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,/* c1 */ /* c2 */arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,  /* c1 */  /* c2 */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,/* c */\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,  /* c */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,/* c1 */ /* c2 */\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,  /* c1 */  /* c2 */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,// c\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,  // c\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,/* c1 */ // c2\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,  /* c1 */  // c2\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "/* c */arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "           /* c */ arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "/* c1 */ /* c2 */arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "           /* c1 */  /* c2 */ arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "/* c */\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "           /* c */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "/* c1 */ /* c2 */\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "           /* c1 */  /* c2 */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "// c\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "           // c\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "/* c1 */ // c2\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "           /* c1 */  // c2\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "           /* c1 */\n"
+     "           /* c2 */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "// c1\n"
+     "// c2\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "           // c1\n"
+     "           // c2\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,/* c1 */\n"
+     "/* c2 */arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,  /* c1 */\n"
+     "           /* c2 */ arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,// c1\n"
+     "/* c2 */arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,  // c1\n"
+     "           /* c2 */ arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,  /* c1 */\n"
+     "           /* c2 */\n"
+     "           /* c3 */ arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,/* c1 */\n"
+     "/* c2 */\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,  /* c1 */\n"
+     "           /* c2 */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,// c1\n"
+     "/* c2 */\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,  // c1\n"
+     "           /* c2 */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,/* c1 */\n"
+     "// c2\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,  /* c1 */\n"
+     "           // c2\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,// c1\n"
+     "// c2\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,  // c1\n"
+     "           // c2\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,  /* c1 */\n"
+     "           /* c2 */\n"
+     "           /* c3 */\n"
+     "           arg2);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,// c1\n"
+     "// c2\n"
+     "// c3\n"
+     "arg2);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,  // c1\n"
+     "           // c2\n"
+     "           // c3\n"
+     "           arg2);\n"},
+
+    // after last arg
+
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,/* c */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,  /* c */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,/* c1 */ /* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "           arg2,  /* c1 */  /* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,/* c */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,  /* c */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,/* c1 */ /* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1,\n"
+     "           arg2,  /* c1 */  /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,// c\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,  // c\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,/* c1 */ // c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,  /* c1 */  // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,\n"
+     "/* c */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,\n"
+     "/* c */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,\n"
+     "/* c1 */ /* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,\n"
+     "/* c1 */  /* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,\n"
+     "/* c */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,\n"
+     "           /* c */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,\n"
+     "/* c1 */ /* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,\n"
+     "           /* c1 */  /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,\n"
+     "// c\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,\n"
+     "           // c\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,\n"
+     "/* c1 */ // c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,\n"
+     "           /* c1 */  // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,\n"
+     "           /* c1 */\n"
+     "           /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,\n"
+     "// c1\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,\n"
+     "           // c1\n"
+     "           // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,/* c1 */\n"
+     "/* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,  /* c1 */\n"
+     "/* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,// c1\n"
+     "/* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,  // c1\n"
+     "/* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,  /* c1 */\n"
+     "           /* c2 */\n"
+     "/* c3 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,/* c1 */\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,  /* c1 */\n"
+     "           /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,// c1\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,  // c1\n"
+     "           /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,/* c1 */\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,  /* c1 */\n"
+     "           // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,// c1\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,  // c1\n"
+     "           // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,  /* c1 */\n"
+     "           /* c2 */\n"
+     "           /* c3 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg1, arg2,  // c1\n"
+     "           // c2\n"
+     "           // c3\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,/* c */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,  /* c */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,/* c1 */ /* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "           arg2,  /* c1 */  /* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,/* c */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,  /* c */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,/* c1 */ /* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1,\n"
+     "           arg2,  /* c1 */  /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,// c\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,  // c\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,/* c1 */ // c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,  /* c1 */  // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,\n"
+     "/* c */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,\n"
+     "/* c */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,\n"
+     "/* c1 */ /* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,\n"
+     "/* c1 */  /* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,\n"
+     "/* c */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,\n"
+     "           /* c */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,\n"
+     "/* c1 */ /* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,\n"
+     "           /* c1 */  /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,\n"
+     "// c\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,\n"
+     "           // c\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,\n"
+     "/* c1 */ // c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,\n"
+     "           /* c1 */  // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,\n"
+     "           /* c1 */\n"
+     "           /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,\n"
+     "// c1\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,\n"
+     "           // c1\n"
+     "           // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,/* c1 */\n"
+     "/* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,  /* c1 */\n"
+     "/* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,// c1\n"
+     "/* c2 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,  // c1\n"
+     "/* c2 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */);\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,  /* c1 */\n"
+     "           /* c2 */\n"
+     "/* c3 */);\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,/* c1 */\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,  /* c1 */\n"
+     "           /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,// c1\n"
+     "/* c2 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,  // c1\n"
+     "           /* c2 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,/* c1 */\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,  /* c1 */\n"
+     "           // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,// c1\n"
+     "// c2\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,  // c1\n"
+     "           // c2\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,  /* c1 */\n"
+     "           /* c2 */\n"
+     "           /* c3 */\n"
+     ");\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ");\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg1, arg2,  // c1\n"
+     "           // c2\n"
+     "           // c3\n"
+     ");\n"},
+
+    // after ')', no args
+
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()/* c */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()  /* c */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()/* c1 */ /* c2 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()  /* c1 */  /* c2 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()/* c */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()  /* c */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()/* c1 */ /* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()  /* c1 */  /* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()// c\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()  // c\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()/* c1 */ // c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()  /* c1 */  // c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()\n"
+     "/* c */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()\n"
+     "/* c */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()\n"
+     "/* c1 */ /* c2 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()\n"
+     "/* c1 */  /* c2 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()\n"
+     "/* c */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()\n"
+     "/* c */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()\n"
+     "/* c1 */ /* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()\n"
+     "/* c1 */  /* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()\n"
+     "// c\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()\n"
+     "// c\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()\n"
+     "/* c1 */ // c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()\n"
+     "/* c1 */  // c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()\n"
+     "// c1\n"
+     "// c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()\n"
+     "// c1\n"
+     "// c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()/* c1 */\n"
+     "/* c2 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()  /* c1 */\n"
+     "/* c2 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()// c1\n"
+     "/* c2 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()  // c1\n"
+     "/* c2 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()/* c1 */\n"
+     "/* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()  /* c1 */\n"
+     "/* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()// c1\n"
+     "/* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()  // c1\n"
+     "/* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()/* c1 */\n"
+     "// c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()  /* c1 */\n"
+     "// c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()// c1\n"
+     "// c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()  // c1\n"
+     "// c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz()  // c1\n"
+     "// c2\n"
+     "// c3\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()/* c */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()  /* c */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()/* c1 */ /* c2 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()  /* c1 */  /* c2 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()/* c */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()  /* c */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()/* c1 */ /* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()  /* c1 */  /* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()// c\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()  // c\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()/* c1 */ // c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()  /* c1 */  // c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()\n"
+     "/* c */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()\n"
+     "/* c */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()\n"
+     "/* c1 */ /* c2 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()\n"
+     "/* c1 */  /* c2 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()\n"
+     "/* c */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()\n"
+     "/* c */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()\n"
+     "/* c1 */ /* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()\n"
+     "/* c1 */  /* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()\n"
+     "// c\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()\n"
+     "// c\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()\n"
+     "/* c1 */ // c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()\n"
+     "/* c1 */  // c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()\n"
+     "// c1\n"
+     "// c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()\n"
+     "// c1\n"
+     "// c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()/* c1 */\n"
+     "/* c2 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()  /* c1 */\n"
+     "/* c2 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()// c1\n"
+     "/* c2 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()  // c1\n"
+     "/* c2 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()/* c1 */\n"
+     "/* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()  /* c1 */\n"
+     "/* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()// c1\n"
+     "/* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()  // c1\n"
+     "/* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()/* c1 */\n"
+     "// c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()  /* c1 */\n"
+     "// c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()// c1\n"
+     "// c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()  // c1\n"
+     "// c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ()  // c1\n"
+     "// c2\n"
+     "// c3\n"
+     ";\n"},
+
+    // after ')', with arg
+
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)/* c */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)  /* c */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)/* c1 */ /* c2 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)  /* c1 */  /* c2 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)/* c */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)  /* c */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)/* c1 */ /* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)  /* c1 */  /* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)// c\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)  // c\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)/* c1 */ // c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)  /* c1 */  // c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)\n"
+     "/* c */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)\n"
+     "/* c */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)\n"
+     "/* c1 */ /* c2 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)\n"
+     "/* c1 */  /* c2 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)\n"
+     "/* c */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)\n"
+     "/* c */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)\n"
+     "/* c1 */ /* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)\n"
+     "/* c1 */  /* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)\n"
+     "// c\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)  // c\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)\n"
+     "/* c1 */ // c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)\n"
+     "/* c1 */  // c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)\n"
+     "// c1\n"
+     "// c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)\n"
+     "// c1\n"
+     "// c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)/* c1 */\n"
+     "/* c2 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)  /* c1 */\n"
+     "/* c2 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)// c1\n"
+     "/* c2 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)  // c1\n"
+     "/* c2 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)/* c1 */\n"
+     "/* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)  /* c1 */\n"
+     "/* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)// c1\n"
+     "/* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)  // c1\n"
+     "/* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)/* c1 */\n"
+     "// c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)  /* c1 */\n"
+     "// c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)// c1\n"
+     "// c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)  // c1\n"
+     "// c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg)  // c1\n"
+     "// c2\n"
+     "// c3\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)/* c */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)  /* c */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)/* c1 */ /* c2 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)  /* c1 */  /* c2 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)/* c */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)  /* c */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)/* c1 */ /* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)  /* c1 */  /* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)// c\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)  // c\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)/* c1 */ // c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)  /* c1 */  // c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)\n"
+     "/* c */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)\n"
+     "/* c */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)\n"
+     "/* c1 */ /* c2 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)\n"
+     "/* c1 */  /* c2 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)\n"
+     "/* c */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)\n"
+     "/* c */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)\n"
+     "/* c1 */ /* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)\n"
+     "/* c1 */  /* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)\n"
+     "// c\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)\n"
+     "// c\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)\n"
+     "/* c1 */ // c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)\n"
+     "/* c1 */  // c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)\n"
+     "// c1\n"
+     "// c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)\n"
+     "// c1\n"
+     "// c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)/* c1 */\n"
+     "/* c2 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)  /* c1 */\n"
+     "/* c2 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)// c1\n"
+     "/* c2 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)  // c1\n"
+     "/* c2 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */;\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */;\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)/* c1 */\n"
+     "/* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)  /* c1 */\n"
+     "/* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)// c1\n"
+     "/* c2 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)  // c1\n"
+     "/* c2 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)/* c1 */\n"
+     "// c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)  /* c1 */\n"
+     "// c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)// c1\n"
+     "// c2\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)  // c1\n"
+     "// c2\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ";\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ";\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg)  // c1\n"
+     "// c2\n"
+     "// c3\n"
+     ";\n"},
+
+    // after ';', no args
+
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();  /* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();  /* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();  /* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();  /* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();// c\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();  // c\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();/* c1 */ // c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();  /* c1 */  // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();\n"
+     "/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();\n"
+     "/* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();\n"
+     "/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();\n"
+     "/* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();\n"
+     "/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();\n"
+     "/* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();\n"
+     "/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();\n"
+     "/* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();\n"
+     "// c\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();\n"
+     "// c\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();\n"
+     "/* c1 */ // c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();\n"
+     "/* c1 */  // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();\n"
+     "/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();\n"
+     "/* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();\n"
+     "// c1\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();\n"
+     "// c1\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();  /* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();// c1\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();  // c1\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();  /* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();// c1 c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();  // c1 c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();/* c1 */\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();  /* c1 */\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();// c1\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();  // c1\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();// c1\n"
+     "// c2\n"
+     "// c3\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz();  // c1\n"
+     "// c2\n"
+     "// c3\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();  /* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();  /* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();  /* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();  /* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();// c\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();  // c\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();/* c1 */ // c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();  /* c1 */  // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();\n"
+     "/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();\n"
+     "/* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();\n"
+     "/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();\n"
+     "/* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();\n"
+     "/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();\n"
+     "/* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();\n"
+     "/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();\n"
+     "/* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();\n"
+     "// c\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();\n"
+     "// c\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();\n"
+     "/* c1 */ // c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();\n"
+     "/* c1 */  // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();\n"
+     "/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();\n"
+     "/* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();\n"
+     "// c1\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();\n"
+     "// c1\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();  /* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();// c1\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();  // c1\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();  /* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();// c1\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();  // c1\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();/* c1 */\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();  /* c1 */\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();// c1\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();  // c1\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();// c1\n"
+     "// c2\n"
+     "// c3\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ();  // c1\n"
+     "// c2\n"
+     "// c3\n"},
+
+    // after ';', with arg
+
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);  /* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);  /* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);  /* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);  /* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);// c\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);  // c\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);/* c1 */ // c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);  /* c1 */  // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);\n"
+     "/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);\n"
+     "/* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);\n"
+     "/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);\n"
+     "/* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);\n"
+     "/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);\n"
+     "/* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);\n"
+     "/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);\n"
+     "/* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);\n"
+     "// c\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);\n"
+     "// c\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);\n"
+     "/* c1 */ // c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);\n"
+     "/* c1 */  // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);\n"
+     "/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);\n"
+     "/* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);\n"
+     "// c1\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);\n"
+     "// c1\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);  /* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);// c1\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);  // c1\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);  /* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);// c1 c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);  // c1 c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);/* c1 */\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);  /* c1 */\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);// c1\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);  // c1\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);// c1\n"
+     "// c2\n"
+     "// c3\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz(arg);  // c1\n"
+     "// c2\n"
+     "// c3\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);  /* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);  /* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);  /* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);  /* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);// c\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);  // c\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);/* c1 */ // c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);  /* c1 */  // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);\n"
+     "/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);\n"
+     "/* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);\n"
+     "/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);\n"
+     "/* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);\n"
+     "/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);\n"
+     "/* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);\n"
+     "/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);\n"
+     "/* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);\n"
+     "// c\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);\n"
+     "// c\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);\n"
+     "/* c1 */ // c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);\n"
+     "/* c1 */  // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);\n"
+     "/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);\n"
+     "/* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);\n"
+     "// c1\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);\n"
+     "// c1\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);  /* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);// c1\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);  // c1\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);  /* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);// c1\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);  // c1\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);/* c1 */\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);  /* c1 */\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);// c1\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);  // c1\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);// c1\n"
+     "// c2\n"
+     "// c3\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(arg);  // c1\n"
+     "// c2\n"
+     "// c3\n"},
+
+    // everywhere, no args
+
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c */(/* c */)/* c */;/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c */\n"
+     "    (  /* c */)  /* c */;  /* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c1 */ /* c2 */(/* c1 */ /* c2 */)/* c1 */ /* c2 */;/* c1 */ "
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */  /* c2 */\n"
+     "    (  /* c1 */  /* c2 */)  /* c1 */  /* c2 */;  /* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c */\n"
+     "(/* c */\n"
+     ")/* c */\n"
+     ";/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c */\n"
+     "    (  /* c */\n"
+     "    )  /* c */\n"
+     ";  /* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c1 */ /* c2 */\n"
+     "(/* c1 */ /* c2 */\n"
+     ")/* c1 */ /* c2 */\n"
+     ";/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */  /* c2 */\n"
+     "    (  /* c1 */  /* c2 */\n"
+     "    )  /* c1 */  /* c2 */\n"
+     ";  /* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz// c\n"
+     "(// c\n"
+     ")// c\n"
+     ";// c\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c\n"
+     "    (  // c\n"
+     "    )  // c\n"
+     ";  // c\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c1 */ // c2\n"
+     "(/* c1 */ // c2\n"
+     ")/* c1 */ // c2\n"
+     ";/* c1 */ // c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */  // c2\n"
+     "    (  /* c1 */  // c2\n"
+     "    )  /* c1 */  // c2\n"
+     ";  /* c1 */  // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c */(\n"
+     "/* c */)\n"
+     "/* c */;\n"
+     "/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c */ (\n"
+     "    /* c */)\n"
+     "/* c */;\n"
+     "/* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c1 */ /* c2 */(\n"
+     "/* c1 */ /* c2 */)\n"
+     "/* c1 */ /* c2 */;\n"
+     "/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c1 */  /* c2 */ (\n"
+     "    /* c1 */  /* c2 */)\n"
+     "/* c1 */  /* c2 */;\n"
+     "/* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c */\n"
+     "(\n"
+     "/* c */\n"
+     ")\n"
+     "/* c */\n"
+     ";\n"
+     "/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c */\n"
+     "    (\n"
+     "        /* c */\n"
+     "    )\n"
+     "/* c */\n"
+     ";\n"
+     "/* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c1 */ /* c2 */\n"
+     "(\n"
+     "/* c1 */ /* c2 */\n"
+     ")\n"
+     "/* c1 */ /* c2 */\n"
+     ";\n"
+     "/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c1 */  /* c2 */\n"
+     "    (\n"
+     "        /* c1 */  /* c2 */\n"
+     "    )\n"
+     "/* c1 */  /* c2 */\n"
+     ";\n"
+     "/* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "// c\n"
+     "(\n"
+     "// c\n"
+     ")\n"
+     "// c\n"
+     ";\n"
+     "// c\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    // c\n"
+     "    (\n"
+     "        // c\n"
+     "    )\n"
+     "// c\n"
+     ";\n"
+     "// c\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c1 */ // c2\n"
+     "(\n"
+     "/* c1 */ // c2\n"
+     ")\n"
+     "/* c1 */ // c2\n"
+     ";\n"
+     "/* c1 */ // c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c1 */  // c2\n"
+     "    (\n"
+     "        /* c1 */  // c2\n"
+     "    )\n"
+     "/* c1 */  // c2\n"
+     ";\n"
+     "/* c1 */  // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     "(\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ")\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ";\n"
+     "/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c1 */\n"
+     "    /* c2 */\n"
+     "    (\n"
+     "        /* c1 */\n"
+     "        /* c2 */\n"
+     "    )\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ";\n"
+     "/* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "// c1\n"
+     "// c2\n"
+     "(\n"
+     "// c1\n"
+     "// c2\n"
+     ")\n"
+     "// c1\n"
+     "// c2\n"
+     ";\n"
+     "// c1\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    // c1\n"
+     "    // c2\n"
+     "    (\n"
+     "        // c1\n"
+     "        // c2\n"
+     "    )\n"
+     "// c1\n"
+     "// c2\n"
+     ";\n"
+     "// c1\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c1 */\n"
+     "/* c2 */(/* c1 */\n"
+     "/* c2 */)/* c1 */\n"
+     "/* c2 */;/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    /* c2 */ (  /* c1 */\n"
+     "    /* c2 */)  /* c1 */\n"
+     "/* c2 */;  /* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz// c1\n"
+     "/* c2 */(// c1\n"
+     "/* c2 */)// c1\n"
+     "/* c2 */;// c1\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c1\n"
+     "    /* c2 */ (  // c1\n"
+     "    /* c2 */)  // c1\n"
+     "/* c2 */;  // c1\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */(/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */)/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */;/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */ (  /* c1 */\n"
+     "        /* c2 */\n"
+     "    /* c3 */)  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */;  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c1 */\n"
+     "/* c2 */\n"
+     "(/* c1 */\n"
+     "/* c2 */\n"
+     ")/* c1 */\n"
+     "/* c2 */\n"
+     ";/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    /* c2 */\n"
+     "    (  /* c1 */\n"
+     "        /* c2 */\n"
+     "    )  /* c1 */\n"
+     "/* c2 */\n"
+     ";  /* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz// c1\n"
+     "/* c2 */\n"
+     "(// c1\n"
+     "/* c2 */\n"
+     ")// c1\n"
+     "/* c2 */\n"
+     ";// c1\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c1\n"
+     "    /* c2 */\n"
+     "    (  // c1\n"
+     "        /* c2 */\n"
+     "    )  // c1\n"
+     "/* c2 */\n"
+     ";  // c1\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c1 */\n"
+     "// c2\n"
+     "(/* c1 */\n"
+     "// c2\n"
+     ")/* c1 */\n"
+     "// c2\n"
+     ";/* c1 */\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    // c2\n"
+     "    (  /* c1 */\n"
+     "        // c2\n"
+     "    )  /* c1 */\n"
+     "// c2\n"
+     ";  /* c1 */\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz// c1\n"
+     "// c2\n"
+     "(// c1\n"
+     "// c2\n"
+     ")// c1\n"
+     "// c2\n"
+     ";// c1\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c1\n"
+     "    // c2\n"
+     "    (  // c1\n"
+     "       // c2\n"
+     "    )  // c1\n"
+     "       // c2\n"
+     ";  // c1\n"
+     "   // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     "(/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ")/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ";/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */\n"
+     "    (  /* c1 */\n"
+     "        /* c2 */\n"
+     "        /* c3 */\n"
+     "    )  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ";  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz// c1\n"
+     "// c2\n"
+     "// c3\n"
+     "(// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ")// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ";// c1\n"
+     "// c2\n"
+     "// c3\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c1\n"
+     "    // c2\n"
+     "    // c3\n"
+     "    (  // c1\n"
+     "       // c2\n"
+     "       // c3\n"
+     "    )  // c1\n"
+     "       // c2\n"
+     "       // c3\n"
+     ";  // c1\n"
+     "   // c2\n"
+     "   // c3\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c */)/* c */;/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c */)  /* c */;  /* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */ /* c2 */)/* c1 */ /* c2 */;/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */  /* c2 */)  /* c1 */  /* c2 */;  /* c1 */  /* c2 "
+     "*/\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c */\n"
+     ")/* c */\n"
+     ";/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c */\n"
+     ")  /* c */\n"
+     ";  /* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */ /* c2 */\n"
+     ")/* c1 */ /* c2 */\n"
+     ";/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */  /* c2 */\n"
+     ")  /* c1 */  /* c2 */\n"
+     ";  /* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c\n"
+     ")// c\n"
+     ";// c\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c\n"
+     ")  // c\n"
+     ";  // c\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */ // c2\n"
+     ")/* c1 */ // c2\n"
+     ";/* c1 */ // c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */  // c2\n"
+     ")  /* c1 */  // c2\n"
+     ";  /* c1 */  // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c */)\n"
+     "/* c */;\n"
+     "/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c */)\n"
+     "/* c */;\n"
+     "/* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */ /* c2 */)\n"
+     "/* c1 */ /* c2 */;\n"
+     "/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */  /* c2 */)\n"
+     "/* c1 */  /* c2 */;\n"
+     "/* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c */\n"
+     ")\n"
+     "/* c */\n"
+     ";\n"
+     "/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c */\n"
+     ")\n"
+     "/* c */\n"
+     ";\n"
+     "/* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */ /* c2 */\n"
+     ")\n"
+     "/* c1 */ /* c2 */\n"
+     ";\n"
+     "/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c1 */  /* c2 */\n"
+     ")\n"
+     "/* c1 */  /* c2 */\n"
+     ";\n"
+     "/* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "// c\n"
+     ")\n"
+     "// c\n"
+     ";\n"
+     "// c\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    // c\n"
+     ")\n"
+     "// c\n"
+     ";\n"
+     "// c\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */ // c2\n"
+     ")\n"
+     "/* c1 */ // c2\n"
+     ";\n"
+     "/* c1 */ // c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c1 */  // c2\n"
+     ")\n"
+     "/* c1 */  // c2\n"
+     ";\n"
+     "/* c1 */  // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ")\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ";\n"
+     "/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c1 */\n"
+     "    /* c2 */\n"
+     ")\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ";\n"
+     "/* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "// c1\n"
+     "// c2\n"
+     ")\n"
+     "// c1\n"
+     "// c2\n"
+     ";\n"
+     "// c1\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    // c1\n"
+     "    // c2\n"
+     ")\n"
+     "// c1\n"
+     "// c2\n"
+     ";\n"
+     "// c1\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "/* c2 */)/* c1 */\n"
+     "/* c2 */;/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "/* c2 */)  /* c1 */\n"
+     "/* c2 */;  /* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c1\n"
+     "/* c2 */)// c1\n"
+     "/* c2 */;// c1\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c1\n"
+     "/* c2 */)  // c1\n"
+     "/* c2 */;  // c1\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */)/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */;/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    /* c2 */\n"
+     "/* c3 */)  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */;  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "/* c2 */\n"
+     ")/* c1 */\n"
+     "/* c2 */\n"
+     ";/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    /* c2 */\n"
+     ")  /* c1 */\n"
+     "/* c2 */\n"
+     ";  /* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c1\n"
+     "/* c2 */\n"
+     ")// c1\n"
+     "/* c2 */\n"
+     ";// c1\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c1\n"
+     "    /* c2 */\n"
+     ")  // c1\n"
+     "/* c2 */\n"
+     ";  // c1\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "// c2\n"
+     ")/* c1 */\n"
+     "// c2\n"
+     ";/* c1 */\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    // c2\n"
+     ")  /* c1 */\n"
+     "// c2\n"
+     ";  /* c1 */\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c1\n"
+     "// c2\n"
+     ")// c1\n"
+     "// c2\n"
+     ";// c1\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c1\n"
+     "    // c2\n"
+     ")  // c1\n"
+     "   // c2\n"
+     ";  // c1\n"
+     "   // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ")/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ";/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */\n"
+     ")  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ";  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ")// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ";// c1\n"
+     "// c2\n"
+     "// c3\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c1\n"
+     "    // c2\n"
+     "    // c3\n"
+     ")  // c1\n"
+     "   // c2\n"
+     "   // c3\n"
+     ";  // c1\n"
+     "   // c2\n"
+     "   // c3\n"},
+
+    // everywhere, with args
+
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c */(/* c */arg1/* c */,/* c */arg2/* c */)/* c */;/* c "
+     "*/\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c */ (  /* c */\n"
+     "    arg1  /* c */,  /* c */\n"
+     "    arg2  /* c */)  /* c */;  /* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c1 */ /* c2 */(/* c1 */ /* c2 */arg1/* c1 */ /* c2 */,/* c1 "
+     "*/ /* c2 */arg2/* c1 */ /* c2 */)/* c1 */ /* c2 */;/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */  /* c2 */ (  /* c1 */  /* c2 */\n"
+     "    arg1  /* c1 */  /* c2 */,  /* c1 */  /* c2 */\n"
+     "    arg2  /* c1 */  /* c2 */)  /* c1 */  /* c2 */;  /* c1 */  /* c2 "
+     "*/\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c */\n"
+     "(/* c */\n"
+     "arg1/* c */\n"
+     ",/* c */\n"
+     "arg2/* c */\n"
+     ")/* c */\n"
+     ";/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c */\n"
+     "    (  /* c */\n"
+     "        arg1  /* c */\n"
+     "        ,  /* c */\n"
+     "        arg2  /* c */\n"
+     "    )  /* c */\n"
+     ";  /* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c1 */ /* c2 */\n"
+     "(/* c1 */ /* c2 */\n"
+     "arg1/* c1 */ /* c2 */\n"
+     ",/* c1 */ /* c2 */\n"
+     "arg2/* c1 */ /* c2 */\n"
+     ")/* c1 */ /* c2 */\n"
+     ";/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */  /* c2 */\n"
+     "    (  /* c1 */  /* c2 */\n"
+     "        arg1  /* c1 */  /* c2 */\n"
+     "        ,  /* c1 */  /* c2 */\n"
+     "        arg2  /* c1 */  /* c2 */\n"
+     "    )  /* c1 */  /* c2 */\n"
+     ";  /* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz// c\n"
+     "(// c\n"
+     "arg1// c\n"
+     ",// c\n"
+     "arg2// c\n"
+     ")// c\n"
+     ";// c\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c\n"
+     "    (  // c\n"
+     "        arg1  // c\n"
+     "        ,  // c\n"
+     "        arg2  // c\n"
+     "    )  // c\n"
+     ";  // c\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c1 */ // c2\n"
+     "(/* c1 */ // c2\n"
+     "arg1/* c1 */ // c2\n"
+     ",/* c1 */ // c2\n"
+     "arg2/* c1 */ // c2\n"
+     ")/* c1 */ // c2\n"
+     ";/* c1 */ // c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */  // c2\n"
+     "    (  /* c1 */  // c2\n"
+     "        arg1  /* c1 */  // c2\n"
+     "        ,  /* c1 */  // c2\n"
+     "        arg2  /* c1 */  // c2\n"
+     "    )  /* c1 */  // c2\n"
+     ";  /* c1 */  // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c */(\n"
+     "/* c */arg1\n"
+     "/* c */,\n"
+     "/* c */arg2\n"
+     "/* c */)\n"
+     "/* c */;\n"
+     "/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c */ (\n"
+     "        /* c */ arg1\n"
+     "        /* c */,\n"
+     "        /* c */ arg2\n"
+     "    /* c */)\n"
+     "/* c */;\n"
+     "/* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c1 */ /* c2 */(\n"
+     "/* c1 */ /* c2 */arg1\n"
+     "/* c1 */ /* c2 */,\n"
+     "/* c1 */ /* c2 */arg2\n"
+     "/* c1 */ /* c2 */)\n"
+     "/* c1 */ /* c2 */;\n"
+     "/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c1 */  /* c2 */ (\n"
+     "        /* c1 */  /* c2 */ arg1\n"
+     "        /* c1 */  /* c2 */,\n"
+     "        /* c1 */  /* c2 */ arg2\n"
+     "    /* c1 */  /* c2 */)\n"
+     "/* c1 */  /* c2 */;\n"
+     "/* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c */\n"
+     "(\n"
+     "/* c */\n"
+     "arg1\n"
+     "/* c */\n"
+     ",\n"
+     "/* c */\n"
+     "arg2\n"
+     "/* c */\n"
+     ")\n"
+     "/* c */\n"
+     ";\n"
+     "/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c */\n"
+     "    (\n"
+     "        /* c */\n"
+     "        arg1\n"
+     "        /* c */\n"
+     "        ,\n"
+     "        /* c */\n"
+     "        arg2\n"
+     "        /* c */\n"
+     "    )\n"
+     "/* c */\n"
+     ";\n"
+     "/* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c1 */ /* c2 */\n"
+     "(\n"
+     "/* c1 */ /* c2 */\n"
+     "arg1\n"
+     "/* c1 */ /* c2 */\n"
+     ",\n"
+     "/* c1 */ /* c2 */\n"
+     "arg2\n"
+     "/* c1 */ /* c2 */\n"
+     ")\n"
+     "/* c1 */ /* c2 */\n"
+     ";\n"
+     "/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c1 */  /* c2 */\n"
+     "    (\n"
+     "        /* c1 */  /* c2 */\n"
+     "        arg1\n"
+     "        /* c1 */  /* c2 */\n"
+     "        ,\n"
+     "        /* c1 */  /* c2 */\n"
+     "        arg2\n"
+     "        /* c1 */  /* c2 */\n"
+     "    )\n"
+     "/* c1 */  /* c2 */\n"
+     ";\n"
+     "/* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "// c\n"
+     "(\n"
+     "// c\n"
+     "arg1\n"
+     "// c\n"
+     ",\n"
+     "// c\n"
+     "arg2\n"
+     "// c\n"
+     ")\n"
+     "// c\n"
+     ";\n"
+     "// c\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    // c\n"
+     "    (\n"
+     "        // c\n"
+     "        arg1\n"
+     "        // c\n"
+     "        ,\n"
+     "        // c\n"
+     "        arg2\n"
+     "        // c\n"
+     "    )\n"
+     "// c\n"
+     ";\n"
+     "// c\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c1 */ // c2\n"
+     "(\n"
+     "/* c1 */ // c2\n"
+     "arg1\n"
+     "/* c1 */ // c2\n"
+     ",\n"
+     "/* c1 */ // c2\n"
+     "arg2\n"
+     "/* c1 */ // c2\n"
+     ")\n"
+     "/* c1 */ // c2\n"
+     ";\n"
+     "/* c1 */ // c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c1 */  // c2\n"
+     "    (\n"
+     "        /* c1 */  // c2\n"
+     "        arg1\n"
+     "        /* c1 */  // c2\n"
+     "        ,\n"
+     "        /* c1 */  // c2\n"
+     "        arg2\n"
+     "        /* c1 */  // c2\n"
+     "    )\n"
+     "/* c1 */  // c2\n"
+     ";\n"
+     "/* c1 */  // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     "(\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     "arg1\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ",\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     "arg2\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ")\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ";\n"
+     "/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    /* c1 */\n"
+     "    /* c2 */\n"
+     "    (\n"
+     "        /* c1 */\n"
+     "        /* c2 */\n"
+     "        arg1\n"
+     "        /* c1 */\n"
+     "        /* c2 */\n"
+     "        ,\n"
+     "        /* c1 */\n"
+     "        /* c2 */\n"
+     "        arg2\n"
+     "        /* c1 */\n"
+     "        /* c2 */\n"
+     "    )\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ";\n"
+     "/* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "// c1\n"
+     "// c2\n"
+     "(\n"
+     "// c1\n"
+     "// c2\n"
+     "arg1\n"
+     "// c1\n"
+     "// c2\n"
+     ",\n"
+     "// c1\n"
+     "// c2\n"
+     "arg2\n"
+     "// c1\n"
+     "// c2\n"
+     ")\n"
+     "// c1\n"
+     "// c2\n"
+     ";\n"
+     "// c1\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz\n"
+     "    // c1\n"
+     "    // c2\n"
+     "    (\n"
+     "        // c1\n"
+     "        // c2\n"
+     "        arg1\n"
+     "        // c1\n"
+     "        // c2\n"
+     "        ,\n"
+     "        // c1\n"
+     "        // c2\n"
+     "        arg2\n"
+     "        // c1\n"
+     "        // c2\n"
+     "    )\n"
+     "// c1\n"
+     "// c2\n"
+     ";\n"
+     "// c1\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c1 */\n"
+     "/* c2 */(/* c1 */\n"
+     "/* c2 */arg1/* c1 */\n"
+     "/* c2 */,/* c1 */\n"
+     "/* c2 */arg2/* c1 */\n"
+     "/* c2 */)/* c1 */\n"
+     "/* c2 */;/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    /* c2 */ (  /* c1 */\n"
+     "        /* c2 */ arg1  /* c1 */\n"
+     "        /* c2 */,  /* c1 */\n"
+     "        /* c2 */ arg2  /* c1 */\n"
+     "    /* c2 */)  /* c1 */\n"
+     "/* c2 */;  /* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz// c1\n"
+     "/* c2 */(// c1\n"
+     "/* c2 */arg1// c1\n"
+     "/* c2 */,// c1\n"
+     "/* c2 */arg2// c1\n"
+     "/* c2 */)// c1\n"
+     "/* c2 */;// c1\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c1\n"
+     "    /* c2 */ (  // c1\n"
+     "        /* c2 */ arg1  // c1\n"
+     "        /* c2 */,  // c1\n"
+     "        /* c2 */ arg2  // c1\n"
+     "    /* c2 */)  // c1\n"
+     "/* c2 */;  // c1\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */(/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */arg1/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */,/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */arg2/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */)/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */;/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */ (  /* c1 */\n"
+     "        /* c2 */\n"
+     "        /* c3 */ arg1  /* c1 */\n"
+     "        /* c2 */\n"
+     "        /* c3 */,  /* c1 */\n"
+     "        /* c2 */\n"
+     "        /* c3 */ arg2  /* c1 */\n"
+     "        /* c2 */\n"
+     "    /* c3 */)  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */;  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c1 */\n"
+     "/* c2 */\n"
+     "(/* c1 */\n"
+     "/* c2 */\n"
+     "arg1/* c1 */\n"
+     "/* c2 */\n"
+     ",/* c1 */\n"
+     "/* c2 */\n"
+     "arg2/* c1 */\n"
+     "/* c2 */\n"
+     ")/* c1 */\n"
+     "/* c2 */\n"
+     ";/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    /* c2 */\n"
+     "    (  /* c1 */\n"
+     "        /* c2 */\n"
+     "        arg1  /* c1 */\n"
+     "        /* c2 */\n"
+     "        ,  /* c1 */\n"
+     "        /* c2 */\n"
+     "        arg2  /* c1 */\n"
+     "        /* c2 */\n"
+     "    )  /* c1 */\n"
+     "/* c2 */\n"
+     ";  /* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz// c1\n"
+     "/* c2 */\n"
+     "(// c1\n"
+     "/* c2 */\n"
+     "arg1// c1\n"
+     "/* c2 */\n"
+     ",// c1\n"
+     "/* c2 */\n"
+     "arg2// c1\n"
+     "/* c2 */\n"
+     ")// c1\n"
+     "/* c2 */\n"
+     ";// c1\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c1\n"
+     "    /* c2 */\n"
+     "    (  // c1\n"
+     "        /* c2 */\n"
+     "        arg1  // c1\n"
+     "        /* c2 */\n"
+     "        ,  // c1\n"
+     "        /* c2 */\n"
+     "        arg2  // c1\n"
+     "        /* c2 */\n"
+     "    )  // c1\n"
+     "/* c2 */\n"
+     ";  // c1\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c1 */\n"
+     "// c2\n"
+     "(/* c1 */\n"
+     "// c2\n"
+     "arg1/* c1 */\n"
+     "// c2\n"
+     ",/* c1 */\n"
+     "// c2\n"
+     "arg2/* c1 */\n"
+     "// c2\n"
+     ")/* c1 */\n"
+     "// c2\n"
+     ";/* c1 */\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    // c2\n"
+     "    (  /* c1 */\n"
+     "        // c2\n"
+     "        arg1  /* c1 */\n"
+     "        // c2\n"
+     "        ,  /* c1 */\n"
+     "        // c2\n"
+     "        arg2  /* c1 */\n"
+     "        // c2\n"
+     "    )  /* c1 */\n"
+     "// c2\n"
+     ";  /* c1 */\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz// c1\n"
+     "// c2\n"
+     "(// c1\n"
+     "// c2\n"
+     "arg1// c1\n"
+     "// c2\n"
+     ",// c1\n"
+     "// c2\n"
+     "arg2// c1\n"
+     "// c2\n"
+     ")// c1\n"
+     "// c2\n"
+     ";// c1\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c1\n"
+     "    // c2\n"
+     "    (  // c1\n"
+     "       // c2\n"
+     "        arg1  // c1\n"
+     "        // c2\n"
+     "        ,  // c1\n"
+     "           // c2\n"
+     "        arg2  // c1\n"
+     "        // c2\n"
+     "    )  // c1\n"
+     "       // c2\n"
+     ";  // c1\n"
+     "   // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     "(/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     "arg1/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ",/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     "arg2/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ")/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ";/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */\n"
+     "    (  /* c1 */\n"
+     "        /* c2 */\n"
+     "        /* c3 */\n"
+     "        arg1  /* c1 */\n"
+     "        /* c2 */\n"
+     "        /* c3 */\n"
+     "        ,  /* c1 */\n"
+     "        /* c2 */\n"
+     "        /* c3 */\n"
+     "        arg2  /* c1 */\n"
+     "        /* c2 */\n"
+     "        /* c3 */\n"
+     "    )  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ";  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz// c1\n"
+     "// c2\n"
+     "// c3\n"
+     "(// c1\n"
+     "// c2\n"
+     "// c3\n"
+     "arg1// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ",// c1\n"
+     "// c2\n"
+     "// c3\n"
+     "arg2// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ")// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ";// c1\n"
+     "// c2\n"
+     "// c3\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "$foobarbaz  // c1\n"
+     "    // c2\n"
+     "    // c3\n"
+     "    (  // c1\n"
+     "       // c2\n"
+     "       // c3\n"
+     "        arg1  // c1\n"
+     "        // c2\n"
+     "        // c3\n"
+     "        ,  // c1\n"
+     "           // c2\n"
+     "           // c3\n"
+     "        arg2  // c1\n"
+     "        // c2\n"
+     "        // c3\n"
+     "    )  // c1\n"
+     "       // c2\n"
+     "       // c3\n"
+     ";  // c1\n"
+     "   // c2\n"
+     "   // c3\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c */arg1/* c */,/* c */arg2/* c */)/* c */;/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c */\n"
+     "    arg1  /* c */,  /* c */\n"
+     "    arg2  /* c */)  /* c */;  /* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */ /* c2 */arg1/* c1 */ /* c2 */,/* c1 */ /* c2 "
+     "*/arg2/* c1 */ /* c2 */)/* c1 */ /* c2 */;/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */  /* c2 */\n"
+     "    arg1  /* c1 */  /* c2 */,  /* c1 */  /* c2 */\n"
+     "    arg2  /* c1 */  /* c2 */)  /* c1 */  /* c2 */;  /* c1 */  /* c2 "
+     "*/\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c */\n"
+     "arg1/* c */\n"
+     ",/* c */\n"
+     "arg2/* c */\n"
+     ")/* c */\n"
+     ";/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c */\n"
+     "    arg1  /* c */\n"
+     "    ,  /* c */\n"
+     "    arg2  /* c */\n"
+     ")  /* c */\n"
+     ";  /* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */ /* c2 */\n"
+     "arg1/* c1 */ /* c2 */\n"
+     ",/* c1 */ /* c2 */\n"
+     "arg2/* c1 */ /* c2 */\n"
+     ")/* c1 */ /* c2 */\n"
+     ";/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */  /* c2 */\n"
+     "    arg1  /* c1 */  /* c2 */\n"
+     "    ,  /* c1 */  /* c2 */\n"
+     "    arg2  /* c1 */  /* c2 */\n"
+     ")  /* c1 */  /* c2 */\n"
+     ";  /* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c\n"
+     "arg1// c\n"
+     ",// c\n"
+     "arg2// c\n"
+     ")// c\n"
+     ";// c\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c\n"
+     "    arg1  // c\n"
+     "    ,  // c\n"
+     "    arg2  // c\n"
+     ")  // c\n"
+     ";  // c\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */ // c2\n"
+     "arg1/* c1 */ // c2\n"
+     ",/* c1 */ // c2\n"
+     "arg2/* c1 */ // c2\n"
+     ")/* c1 */ // c2\n"
+     ";/* c1 */ // c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */  // c2\n"
+     "    arg1  /* c1 */  // c2\n"
+     "    ,  /* c1 */  // c2\n"
+     "    arg2  /* c1 */  // c2\n"
+     ")  /* c1 */  // c2\n"
+     ";  /* c1 */  // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c */arg1\n"
+     "/* c */,\n"
+     "/* c */arg2\n"
+     "/* c */)\n"
+     "/* c */;\n"
+     "/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c */ arg1\n"
+     "    /* c */,\n"
+     "    /* c */ arg2\n"
+     "/* c */)\n"
+     "/* c */;\n"
+     "/* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */ /* c2 */arg1\n"
+     "/* c1 */ /* c2 */,\n"
+     "/* c1 */ /* c2 */arg2\n"
+     "/* c1 */ /* c2 */)\n"
+     "/* c1 */ /* c2 */;\n"
+     "/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c1 */  /* c2 */ arg1\n"
+     "    /* c1 */  /* c2 */,\n"
+     "    /* c1 */  /* c2 */ arg2\n"
+     "/* c1 */  /* c2 */)\n"
+     "/* c1 */  /* c2 */;\n"
+     "/* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c */\n"
+     "arg1\n"
+     "/* c */\n"
+     ",\n"
+     "/* c */\n"
+     "arg2\n"
+     "/* c */\n"
+     ")\n"
+     "/* c */\n"
+     ";\n"
+     "/* c */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c */\n"
+     "    arg1\n"
+     "    /* c */\n"
+     "    ,\n"
+     "    /* c */\n"
+     "    arg2\n"
+     "    /* c */\n"
+     ")\n"
+     "/* c */\n"
+     ";\n"
+     "/* c */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */ /* c2 */\n"
+     "arg1\n"
+     "/* c1 */ /* c2 */\n"
+     ",\n"
+     "/* c1 */ /* c2 */\n"
+     "arg2\n"
+     "/* c1 */ /* c2 */\n"
+     ")\n"
+     "/* c1 */ /* c2 */\n"
+     ";\n"
+     "/* c1 */ /* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c1 */  /* c2 */\n"
+     "    arg1\n"
+     "    /* c1 */  /* c2 */\n"
+     "    ,\n"
+     "    /* c1 */  /* c2 */\n"
+     "    arg2\n"
+     "    /* c1 */  /* c2 */\n"
+     ")\n"
+     "/* c1 */  /* c2 */\n"
+     ";\n"
+     "/* c1 */  /* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "// c\n"
+     "arg1\n"
+     "// c\n"
+     ",\n"
+     "// c\n"
+     "arg2\n"
+     "// c\n"
+     ")\n"
+     "// c\n"
+     ";\n"
+     "// c\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    // c\n"
+     "    arg1\n"
+     "    // c\n"
+     "    ,\n"
+     "    // c\n"
+     "    arg2\n"
+     "    // c\n"
+     ")\n"
+     "// c\n"
+     ";\n"
+     "// c\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */ // c2\n"
+     "arg1\n"
+     "/* c1 */ // c2\n"
+     ",\n"
+     "/* c1 */ // c2\n"
+     "arg2\n"
+     "/* c1 */ // c2\n"
+     ")\n"
+     "/* c1 */ // c2\n"
+     ";\n"
+     "/* c1 */ // c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c1 */  // c2\n"
+     "    arg1\n"
+     "    /* c1 */  // c2\n"
+     "    ,\n"
+     "    /* c1 */  // c2\n"
+     "    arg2\n"
+     "    /* c1 */  // c2\n"
+     ")\n"
+     "/* c1 */  // c2\n"
+     ";\n"
+     "/* c1 */  // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     "arg1\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ",\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     "arg2\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ")\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ";\n"
+     "/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    /* c1 */\n"
+     "    /* c2 */\n"
+     "    arg1\n"
+     "    /* c1 */\n"
+     "    /* c2 */\n"
+     "    ,\n"
+     "    /* c1 */\n"
+     "    /* c2 */\n"
+     "    arg2\n"
+     "    /* c1 */\n"
+     "    /* c2 */\n"
+     ")\n"
+     "/* c1 */\n"
+     "/* c2 */\n"
+     ";\n"
+     "/* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "// c1\n"
+     "// c2\n"
+     "arg1\n"
+     "// c1\n"
+     "// c2\n"
+     ",\n"
+     "// c1\n"
+     "// c2\n"
+     "arg2\n"
+     "// c1\n"
+     "// c2\n"
+     ")\n"
+     "// c1\n"
+     "// c2\n"
+     ";\n"
+     "// c1\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(\n"
+     "    // c1\n"
+     "    // c2\n"
+     "    arg1\n"
+     "    // c1\n"
+     "    // c2\n"
+     "    ,\n"
+     "    // c1\n"
+     "    // c2\n"
+     "    arg2\n"
+     "    // c1\n"
+     "    // c2\n"
+     ")\n"
+     "// c1\n"
+     "// c2\n"
+     ";\n"
+     "// c1\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "/* c2 */arg1/* c1 */\n"
+     "/* c2 */,/* c1 */\n"
+     "/* c2 */arg2/* c1 */\n"
+     "/* c2 */)/* c1 */\n"
+     "/* c2 */;/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    /* c2 */ arg1  /* c1 */\n"
+     "    /* c2 */,  /* c1 */\n"
+     "    /* c2 */ arg2  /* c1 */\n"
+     "/* c2 */)  /* c1 */\n"
+     "/* c2 */;  /* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c1\n"
+     "/* c2 */arg1// c1\n"
+     "/* c2 */,// c1\n"
+     "/* c2 */arg2// c1\n"
+     "/* c2 */)// c1\n"
+     "/* c2 */;// c1\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c1\n"
+     "    /* c2 */ arg1  // c1\n"
+     "    /* c2 */,  // c1\n"
+     "    /* c2 */ arg2  // c1\n"
+     "/* c2 */)  // c1\n"
+     "/* c2 */;  // c1\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */arg1/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */,/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */arg2/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */)/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */;/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */ arg1  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */,  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */ arg2  /* c1 */\n"
+     "    /* c2 */\n"
+     "/* c3 */)  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */;  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "/* c2 */\n"
+     "arg1/* c1 */\n"
+     "/* c2 */\n"
+     ",/* c1 */\n"
+     "/* c2 */\n"
+     "arg2/* c1 */\n"
+     "/* c2 */\n"
+     ")/* c1 */\n"
+     "/* c2 */\n"
+     ";/* c1 */\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    /* c2 */\n"
+     "    arg1  /* c1 */\n"
+     "    /* c2 */\n"
+     "    ,  /* c1 */\n"
+     "    /* c2 */\n"
+     "    arg2  /* c1 */\n"
+     "    /* c2 */\n"
+     ")  /* c1 */\n"
+     "/* c2 */\n"
+     ";  /* c1 */\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c1\n"
+     "/* c2 */\n"
+     "arg1// c1\n"
+     "/* c2 */\n"
+     ",// c1\n"
+     "/* c2 */\n"
+     "arg2// c1\n"
+     "/* c2 */\n"
+     ")// c1\n"
+     "/* c2 */\n"
+     ";// c1\n"
+     "/* c2 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c1\n"
+     "    /* c2 */\n"
+     "    arg1  // c1\n"
+     "    /* c2 */\n"
+     "    ,  // c1\n"
+     "    /* c2 */\n"
+     "    arg2  // c1\n"
+     "    /* c2 */\n"
+     ")  // c1\n"
+     "/* c2 */\n"
+     ";  // c1\n"
+     "/* c2 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "// c2\n"
+     "arg1/* c1 */\n"
+     "// c2\n"
+     ",/* c1 */\n"
+     "// c2\n"
+     "arg2/* c1 */\n"
+     "// c2\n"
+     ")/* c1 */\n"
+     "// c2\n"
+     ";/* c1 */\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    // c2\n"
+     "    arg1  /* c1 */\n"
+     "    // c2\n"
+     "    ,  /* c1 */\n"
+     "    // c2\n"
+     "    arg2  /* c1 */\n"
+     "    // c2\n"
+     ")  /* c1 */\n"
+     "// c2\n"
+     ";  /* c1 */\n"
+     "// c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c1\n"
+     "// c2\n"
+     "arg1// c1\n"
+     "// c2\n"
+     ",// c1\n"
+     "// c2\n"
+     "arg2// c1\n"
+     "// c2\n"
+     ")// c1\n"
+     "// c2\n"
+     ";// c1\n"
+     "// c2\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c1\n"
+     "    // c2\n"
+     "    arg1  // c1\n"
+     "    // c2\n"
+     "    ,  // c1\n"
+     "       // c2\n"
+     "    arg2  // c1\n"
+     "    // c2\n"
+     ")  // c1\n"
+     "   // c2\n"
+     ";  // c1\n"
+     "   // c2\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     "arg1/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ",/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     "arg2/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ")/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ";/* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */\n"
+     "    arg1  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */\n"
+     "    ,  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */\n"
+     "    arg2  /* c1 */\n"
+     "    /* c2 */\n"
+     "    /* c3 */\n"
+     ")  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"
+     ";  /* c1 */\n"
+     "/* c2 */\n"
+     "/* c3 */\n"},
+    {"// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(// c1\n"
+     "// c2\n"
+     "// c3\n"
+     "arg1// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ",// c1\n"
+     "// c2\n"
+     "// c3\n"
+     "arg2// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ")// c1\n"
+     "// c2\n"
+     "// c3\n"
+     ";// c1\n"
+     "// c2\n"
+     "// c3\n",
+     "// verilog_syntax: parse-as-module-body\n"
+     "`FOOBARBAZ(  // c1\n"
+     "    // c2\n"
+     "    // c3\n"
+     "    arg1  // c1\n"
+     "    // c2\n"
+     "    // c3\n"
+     "    ,  // c1\n"
+     "       // c2\n"
+     "       // c3\n"
+     "    arg2  // c1\n"
+     "    // c2\n"
+     "    // c3\n"
+     ")  // c1\n"
+     "   // c2\n"
+     "   // c3\n"
+     ";  // c1\n"
+     "   // c2\n"
+     "   // c3\n"},
+    {"module indent();\n"
+     "   reg     a;\n"
+     "   reg [32:0] b;\n"
+     "   wire    c;\n"
+     "   wire    d = e ? kFoo : kBar;\n"
+     "endmodule\n",
+     "module indent ();\n"
+     "  reg         a;\n"
+     "  reg  [32:0] b;\n"
+     "  wire        c;\n"
+     "  wire        d = e ? kFoo : kBar;\n"
+     "endmodule\n"},
+
+    {"class C; T1 b; logic [$] a; T1 [$] c; endclass\n",
+     "class C;\n"
+     "  T1        b;\n"
+     "  logic [$] a;\n"
+     "  T1    [$] c;\n"
+     "endclass\n"},
+    {"class C;\n"
+     "  T1 b; //test\n"
+     "  logic [$] a; //test\n"
+     "  T1    [$] c; //test\n"
+     "endclass\n",
+     "class C;\n"
+     "  T1        b;  //test\n"
+     "  logic [$] a;  //test\n"
+     "  T1    [$] c;  //test\n"
+     "endclass\n"},
+    {"class C;\n"
+     "  T1\n"
+     "  b;\n"
+     "  logic\n"
+     "  [$]\n"
+     "  a;\n"
+     "  T1\n"
+     "  [$]\n"
+     "  c;\n"
+     "endclass\n",
+     "class C;\n"
+     "  T1        b;\n"
+     "  logic [$] a;\n"
+     "  T1    [$] c;\n"
+     "endclass\n"},
+    {"class C;\n"
+     "  logic/*t*/ [0 : 1] /*t*/\n"
+     "  a;/*t*/\n"
+     "  T1/*t*/[0 : 1]/*t*/\n"
+     "  c;/*t*/\n"
+     "endclass\n",
+     "class C;\n"
+     "  logic/*t*/ [0 : 1]  /*t*/ a;  /*t*/\n"
+     "  T1/*t*/    [0 : 1]  /*t*/ c;  /*t*/\n"
+     "endclass\n"},
+    {"always @(*/*t*/) begin\n"
+     "end\n",
+     "always @(*  /*t*/) begin\n"
+     "end\n"},
+    {"always @(/*t*/*) begin\n"
+     "end\n",
+     "always @(  /*t*/ *) begin\n"
+     "end\n"},
+    {"always @(/*t*/*/*t*/) begin\n"
+     "end\n",
+     "always @(  /*t*/ *  /*t*/) begin\n"
+     "end\n"},
+    {"always @(*) begin\n"
+     "end\n",
+     "always @(*) begin\n"
+     "end\n"},
+    {"always @(* ) begin\n"
+     "end\n",
+     "always @(*) begin\n"
+     "end\n"},
+    {"always @( *) begin\n"
+     "end\n",
+     "always @(*) begin\n"
+     "end\n"},
+    {"always @( * ) begin\n"
+     "end\n",
+     "always @(*) begin\n"
+     "end\n"},
+    {"always @(  /*t*/  *   /*t*/    ) begin\n"
+     "end\n",
+     "always @(  /*t*/ *  /*t*/) begin\n"
+     "end\n"},
+    {
+        // Don't touch verilog_format:off region #1538
+        R"(
+module testcode;
+  // verilog_format: off
+  assign a = b
+           & c;
+  // verilog_format: on
+      assign e = d;
+endmodule
+)",
+        R"(
+module testcode;
+  // verilog_format: off
+  assign a = b
+           & c;
+  // verilog_format: on
+  assign e = d;
+endmodule
+)",
+
+    },
+
+    // -----------------------------------------------------------------
+};
+
+TEST(FormatterEndToEndTest, DisableFormatterTestCases) {
+  RunFormatterTestCases40(kDisableFormatterTestCases);
+}
+
+}  // namespace
+}  // namespace formatter
+}  // namespace verilog
diff --git a/verible/verilog/formatting/formatter_function_task_test.cc b/verible/verilog/formatting/formatter_function_task_test.cc
new file mode 100644
index 0000000..88e30bb
--- /dev/null
+++ b/verible/verilog/formatting/formatter_function_task_test.cc
@@ -0,0 +1,2234 @@
+// Copyright 2017-2026 The Verible Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Test cases in this file should be *insensitive* to wrapping penalties.
+// Penalty-sensitive tests belong in formatter-tuning_test.cc.
+
+#include "gtest/gtest.h"
+#include "verible/verilog/formatting/formatter-test-utils.h"
+
+namespace verilog {
+namespace formatter {
+namespace {
+
+static constexpr FormatterTestCase kFunctionTaskFormatterTestCases[] = {
+    // function test cases
+    {"function f ;endfunction", "function f;\nendfunction\n"},
+    {"function f ;endfunction:   f", "function f;\nendfunction : f\n"},
+    {"function f ( );endfunction", "function f();\nendfunction\n"},
+    {"function f (input bit x);endfunction",
+     "function f(input bit x);\nendfunction\n"},
+    {"function f (input bit x,logic y );endfunction",
+     "function f(input bit x, logic y);\nendfunction\n"},
+    {"function f;\n// statement comment\nendfunction\n",
+     "function f;\n"
+     "  // statement comment\n"  // indented
+     "endfunction\n"},
+    {"function f();\n// statement comment\nendfunction\n",
+     "function f();\n"
+     "  // statement comment\n"  // indented
+     "endfunction\n"},
+    {"function f(input int x);\n"
+     "// statement comment\n"
+     "f=x;\n"
+     "// statement comment\n"
+     "endfunction\n",
+     "function f(input int x);\n"
+     "  // statement comment\n"  // indented
+     "  f = x;\n"
+     "  // statement comment\n"  // indented
+     "endfunction\n"},
+    {// line breaks around assignments
+     "function f;a=b;c+=d;endfunction",
+     "function f;\n"
+     "  a = b;\n"
+     "  c += d;\n"
+     "endfunction\n"},
+    {"function f;a&=b;c=d;endfunction",
+     "function f;\n"
+     "  a &= b;\n"
+     "  c = d;\n"
+     "endfunction\n"},
+    {"function f;a<<=b;c=b;d>>>=b;endfunction",
+     "function f;\n"
+     "  a <<= b;\n"
+     "  c = b;\n"
+     "  d >>>= b;\n"
+     "endfunction\n"},
+    {// port declaration exceeds line length limit
+     "function f (loooong_type if_it_fits_I_sits);endfunction",
+     "function f(\n"
+     "    loooong_type if_it_fits_I_sits);\n"
+     "endfunction\n"},
+    {"function\nvoid\tspace;a=( b+c )\n;endfunction   :space\n",
+     "function void space;\n"
+     "  a = (b + c);\n"
+     "endfunction : space\n"},
+    {"function\nvoid\twarranty;return  to_sender\n;endfunction   :warranty\n",
+     "function void warranty;\n"
+     "  return to_sender;\n"
+     "endfunction : warranty\n"},
+    {// if statement that fits on one line
+     "function if_i_fits_i_sits;"
+     "if(x)y=x;"
+     "endfunction",
+     "function if_i_fits_i_sits;\n"
+     "  if (x) y = x;\n"
+     "endfunction\n"},
+    {// for loop
+     "function\nvoid\twarranty;for(j=0; j<k; --k)begin "
+     "++j\n;end endfunction   :warranty\n",
+     "function void warranty;\n"
+     "  for (j = 0; j < k; --k) begin\n"
+     "    ++j;\n"
+     "  end\n"
+     "endfunction : warranty\n"},
+    {// for loop that needs wrapping
+     "function\nvoid\twarranty;for(jjjjj=0; jjjjj<kkkkk; --kkkkk)begin "
+     "++j\n;end endfunction   :warranty\n",
+     "function void warranty;\n"
+     "  for (\n"
+     "      jjjjj = 0; jjjjj < kkkkk; --kkkkk\n"
+     "  ) begin\n"
+     "    ++j;\n"
+     "  end\n"
+     "endfunction : warranty\n"},
+    {// for loop that needs more wrapping
+     "function\nvoid\twarranty;"
+     "for(jjjjjjjj=0; jjjjjjjj<kkkkkkkk; --kkkkkkkk)begin "
+     "++j\n;end endfunction   :warranty\n",
+     "function void warranty;\n"
+     "  for (\n"
+     "      jjjjjjjj = 0;\n"
+     "      jjjjjjjj < kkkkkkkk;\n"
+     "      --kkkkkkkk\n"
+     "  ) begin\n"
+     "    ++j;\n"
+     "  end\n"
+     "endfunction : warranty\n"},
+    {// for loop that fits on one line
+     "function loop_fits;"
+     "for(x=0;x<N;++x) y=x;"
+     "endfunction",
+     "function loop_fits;\n"
+     "  for (x = 0; x < N; ++x) y = x;\n"
+     "endfunction\n"},
+    {// for loop that would fit on one line, but is force-split with //comment
+     "function loop_fits;"
+     "for(x=0;x<N;++x) //\n y=x;"
+     "endfunction",
+     "function loop_fits;\n"
+     "  for (x = 0; x < N; ++x)  //\n"
+     "    y = x;\n"
+     "endfunction\n"},
+    {// for loop with function call in initializer
+     "function  void looper(); "
+     "for (int i=f(n); i>=0; i -- ) begin end "
+     "endfunction",
+     "function void looper();\n"
+     "  for (int i = f(n); i >= 0; i--) begin\n"
+     "  end\n"
+     "endfunction\n"},
+    {// for loop with function call in condition
+     "function  void looper(); "
+     "for (int i=0; i<f(m); i -- ) begin end "
+     "endfunction",
+     "function void looper();\n"
+     "  for (int i = 0; i < f(m); i--) begin\n"
+     "  end\n"
+     "endfunction\n"},
+    {// for loop with an attribute instance in the initializer.
+     // Regression: this used to abort with a CHECK failure while reshaping
+     // the kForSpec partitions when an attribute appears in the header.
+     "module m; initial for(int i=0(* a *);i<4;i++) x=i; endmodule",
+     "module m;\n"
+     "  initial\n"
+     "    for (int i = 0 (* a *); i < 4; i++)\n"
+     "      x = i;\n"
+     "endmodule\n"},
+    {// forever loop
+     "function\nvoid\tforevah;forever  begin "
+     "++k\n;end endfunction\n",
+     "function void forevah;\n"
+     "  forever begin\n"
+     "    ++k;\n"
+     "  end\n"
+     "endfunction\n"},
+    {// forever loop
+     "function\nvoid\tforevah;forever  "
+     "++k\n;endfunction\n",
+     "function void forevah;\n"
+     "  forever ++k;\n"
+     "endfunction\n"},
+    {// forever loop, forced break
+     "function\nvoid\tforevah;forever     //\n"
+     "++k\n;endfunction\n",
+     "function void forevah;\n"
+     "  forever  //\n"
+     "    ++k;\n"
+     "endfunction\n"},
+    {// repeat loop
+     "function\nvoid\tpete;repeat(3)  begin "
+     "++k\n;end endfunction\n",
+     "function void pete;\n"
+     "  repeat (3) begin\n"
+     "    ++k;\n"
+     "  end\n"
+     "endfunction\n"},
+    {// repeat loop
+     "function\nvoid\tpete;repeat(3)  "
+     "++k\n;endfunction\n",
+     "function void pete;\n"
+     "  repeat (3)++k;\n"  // TODO(fangism): space before ++
+     "endfunction\n"},
+    {// repeat loop, forced break
+     "function\nvoid\tpete;repeat(3)//\n"
+     "++k\n;endfunction\n",
+     "function void pete;\n"
+     "  repeat (3)  //\n"
+     "    ++k;\n"
+     "endfunction\n"},
+    {// while loop
+     "function\nvoid\twily;while( coyote )  begin "
+     "++super_genius\n;end endfunction\n",
+     "function void wily;\n"
+     "  while (coyote) begin\n"
+     "    ++super_genius;\n"
+     "  end\n"
+     "endfunction\n"},
+    {// while loop
+     "function\nvoid\twily;while( coyote )  "
+     "++ super_genius\n;   endfunction\n",
+     "function void wily;\n"
+     "  while (coyote)++super_genius;\n"  // TODO(fangism): space before ++
+     "endfunction\n"},
+    {// while loop, forced break
+     "function\nvoid\twily;while( coyote ) //\n "
+     "++ super_genius\n;   endfunction\n",
+     "function void wily;\n"
+     "  while (coyote)  //\n"
+     "    ++super_genius;\n"
+     "endfunction\n"},
+    {// do-while loop
+     "function\nvoid\tdonot;do  begin "
+     "++s\n;end  while( z);endfunction\n",
+     "function void donot;\n"
+     "  do begin\n"
+     "    ++s;\n"
+     "  end while (z);\n"
+     "endfunction\n"},
+    {// do-while loop, single statement
+     "function\nvoid\tdonot;do  "
+     "++s\n;  while( z);endfunction\n",
+     "function void donot;\n"
+     "  do ++s; while (z);\n"
+     "endfunction\n"},
+    {// do-while loop, single statement, forced break
+     "function\nvoid\tdonot;do  "
+     "++s\n;//\n  while( z);endfunction\n",
+     "function void donot;\n"
+     "  do\n"
+     "    ++s;  //\n"
+     "  while (z);\n"
+     "endfunction\n"},
+    {// foreach loop
+     "function\nvoid\tforeacher;foreach( m [n] )  begin "
+     "++m\n;end endfunction\n",
+     "function void foreacher;\n"
+     "  foreach (m[n]) begin\n"
+     "    ++m;\n"
+     "  end\n"
+     "endfunction\n"},
+    {// spaces in condition expression
+     "function f; return {a}? {b} :{ c };endfunction",
+     "function f;\n"
+     "  return {a} ? {b} : {c};\n"
+     "endfunction\n"},
+    {"task t;endtask",
+     "task t;\n"
+     "endtask\n"},
+    {"task t (   );endtask",
+     "task t();\n"
+     "endtask\n"},
+    {"task t (input    bit   drill   ) ;endtask",
+     "task t(input bit drill);\n"
+     "endtask\n"},
+    {"task t; ## 100 ;endtask",
+     "task t;\n"
+     "  ##100;\n"
+     "endtask\n"},
+    {"task t; ## (1+1) ;endtask",  // delay expression
+     "task t;\n"
+     "  ##(1 + 1);\n"
+     "endtask\n"},
+    {"task t; ## delay_value ;endtask",
+     "task t;\n"
+     "  ##delay_value;\n"
+     "endtask\n"},
+    {"task t; ## `DELAY_VALUE ;endtask",
+     "task t;\n"
+     "  ##`DELAY_VALUE;\n"
+     "endtask\n"},
+    {"task t;\n"
+     "`uvm_error( foo,bar);\n"
+     "endtask\n",
+     "task t;\n"
+     "  `uvm_error(foo, bar);\n"
+     "endtask\n"},
+    {"task t;\n"
+     "`uvm_error(foo,bar)\n"
+     ";\n"  // null statement
+     "endtask\n",
+     "task t;\n"
+     "  `uvm_error(foo, bar)\n"
+     "  ;\n"
+     "endtask\n"},
+    {"task t;\n"
+     "if(expr)begin\t\n"
+     "`uvm_error(foo,bar);\n"
+     "end\n"
+     "endtask\n",
+     "task t;\n"
+     "  if (expr) begin\n"
+     "    `uvm_error(foo, bar);\n"
+     "  end\n"
+     "endtask\n"},
+    {"task\nrabbit;$kill(the,\nrabbit)\n;endtask:  rabbit\n",
+     "task rabbit;\n"
+     "  $kill(the, rabbit);\n"
+     "endtask : rabbit\n"},
+    {"function  int foo( );if( a )a+=1 ; endfunction",
+     "function int foo();\n"
+     "  if (a) a += 1;\n"
+     "endfunction\n"},
+    {"function  void foo( );foo=`MACRO(b,c) ; endfunction",
+     "function void foo();\n"
+     "  foo = `MACRO(b, c);\n"
+     "endfunction\n"},
+    {"module foo;if    \t  (bar)begin assign a=1; end endmodule",
+     "module foo;\n"
+     "  if (bar) begin\n"
+     "    assign a = 1;\n"
+     "  end\n"
+     "endmodule\n"},
+    {"module proc_cont_assigner;\n"
+     "always begin\n"
+     "assign x1 =   y1;\n"
+     "deassign   x2 ;\n"
+     "force x3=y3;\n"
+     "release   x4 ;\n"
+     "end\n"
+     "endmodule\n",
+     "module proc_cont_assigner;\n"
+     "  always begin\n"
+     "    assign x1 = y1;\n"
+     "    deassign x2;\n"
+     "    force x3 = y3;\n"
+     "    release x4;\n"
+     "  end\n"
+     "endmodule\n"},
+    {"module g_test(  );\n"
+     "\tinitial begin:main_test \t"
+     "for(int i=0;i<k;i++)begin "
+     "case(i )\n"
+     " 6'd0  :release in[0];  \n"
+     "   endcase  "
+     " \t\tend \t"
+     "\t end:main_test\n"
+     "endmodule:g_test\n",
+     "module g_test ();\n"
+     "  initial begin : main_test\n"
+     "    for (int i = 0; i < k; i++) begin\n"
+     "      case (i)\n"
+     "        6'd0: release in[0];\n"
+     "      endcase\n"
+     "    end\n"
+     "  end : main_test\n"
+     "endmodule : g_test\n"},
+    {// conditional generate (case)
+     "module mc; case(s)a : bb c ; d : ee f; endcase endmodule",
+     "module mc;\n"
+     "  case (s)\n"
+     "    a: bb c;\n"
+     "    d: ee f;\n"
+     "  endcase\n"
+     "endmodule\n"},
+    {// conditional generate (case), with comments
+     "module mc; case(s)\n//comment a\na:bb  c;\n//comment b\n endcase "
+     "endmodule",
+     "module mc;\n"
+     "  case (s)\n"
+     "    //comment a\n"  // indented to case-item level
+     "    a: bb c;\n"
+     "    //comment b\n"  // indented to case-item level
+     "  endcase\n"
+     "endmodule\n"},
+
+    {// "default:", not "default :"
+     "function f; case (x) default: x=y; endcase endfunction\n",
+     "function f;\n"
+     "  case (x)\n"
+     "    default: x = y;\n"
+     "  endcase\n"
+     "endfunction\n"},
+    {// default with null statement: "default: ;", not "default :;"
+     "function f; case (x) default :; endcase endfunction\n",
+     "function f;\n"
+     "  case (x)\n"
+     "    default: ;\n"
+     "  endcase\n"
+     "endfunction\n"},
+    {// case statement
+     "function f; case (x) State0 : a=b; State1 : begin a=b; end "
+     "endcase endfunction\n",
+     "function f;\n"
+     "  case (x)\n"
+     "    State0: a = b;\n"
+     "    State1: begin\n"
+     "      a = b;\n"
+     "    end\n"
+     "  endcase\n"
+     "endfunction\n"},
+    {// case statement, interleaved with comments
+     "function f; case (x) \n//c1\nState0 : a=b;//c2\n//c3\n State1 : "
+     "a=b;//c4\n//c5\n "
+     "endcase endfunction\n",
+     "function f;\n"
+     "  case (x)\n"
+     "    //c1\n"
+     "    State0: a = b;  //c2\n"
+     "    //c3\n"
+     "    State1: a = b;  //c4\n"
+     "    //c5\n"
+     "  endcase\n"
+     "endfunction\n"},
+    {// case inside statement, comments
+     "function f; case (x)inside \n//comment\n"
+     "[0:1]:x=y; \n"
+     "    //comment\n"
+     "endcase endfunction\n",
+     "function f;\n"
+     "  case (x) inside\n"
+     "    //comment\n"
+     "    [0 : 1]: x = y;\n"
+     "    //comment\n"
+     "  endcase\n"
+     "endfunction\n"},
+    {// case inside statement
+     "function f; case (x)inside k1 : return b; k2 : begin return b; end "
+     "endcase endfunction\n",
+     "function f;\n"
+     "  case (x) inside\n"
+     "    k1: return b;\n"
+     "    k2: begin\n"
+     "      return b;\n"
+     "    end\n"
+     "  endcase\n"
+     "endfunction\n"},
+    {// case inside statement, with ranges
+     "function f; case (x) inside[a:b] : return b; [c:d] : return b; "
+     "default :return z;"
+     "endcase endfunction\n",
+     "function f;\n"
+     "  case (x) inside\n"
+     "    [a : b]: return b;\n"
+     "    [c : d]: return b;\n"
+     "    default: return z;\n"
+     "  endcase\n"
+     "endfunction\n"},
+    {// case pattern statement
+     "function f;"
+     "case (y) matches "
+     ".foo   : return 0;"
+     ".*\t: return 1;"
+     "endcase "
+     "case (z) matches "
+     ".foo\t\t: return 0;"
+     ".*   : return 1;"
+     "endcase "
+     "endfunction",
+     "function f;\n"
+     "  case (y) matches\n"
+     "    .foo: return 0;\n"
+     "    .*: return 1;\n"
+     "  endcase\n"
+     "  case (z) matches\n"
+     "    .foo: return 0;\n"
+     "    .*: return 1;\n"
+     "  endcase\n"
+     "endfunction\n"},
+    {// keep short case items on one line
+     "function f; case (x)k1 : if( b )break; default :return 2;"
+     "endcase endfunction\n",
+     "function f;\n"
+     "  case (x)\n"
+     "    k1:      if (b) break;\n"  // aligned
+     "    default: return 2;\n"
+     "  endcase\n"
+     "endfunction\n"},
+    {// keep short default items on one line
+     "function f; case (x)k1 :break; default :if( c )return 2;"
+     "endcase endfunction\n",
+     "function f;\n"
+     "  case (x)\n"
+     "    k1:      break;\n"  // aligned
+     "    default: if (c) return 2;\n"
+     "  endcase\n"
+     "endfunction\n"},
+    {// keep short case inside items on one line
+     "function f; case (x)inside k1 : if( b )return c; k2 : return a;"
+     "endcase endfunction\n",
+     "function f;\n"
+     "  case (x) inside\n"
+     "    k1: if (b) return c;\n"
+     "    k2: return a;\n"
+     "  endcase\n"
+     "endfunction\n"},
+    {// keep short case pattern items on one line
+     "function f;"
+     "case (y) matches "
+     ".foo   :if( n )return 0;"
+     ".*\t: return 1;"
+     "endcase "
+     "endfunction",
+     "function f;\n"
+     "  case (y) matches\n"
+     "    .foo: if (n) return 0;\n"
+     "    .*: return 1;\n"
+     "  endcase\n"
+     "endfunction\n"},
+    {// randcase
+     "function f; randcase k1 : return c; k2 : return a;"
+     "endcase endfunction\n",
+     "function f;\n"
+     "  randcase\n"
+     "    k1: return c;\n"
+     "    k2: return a;\n"
+     "  endcase\n"
+     "endfunction\n"},
+
+    // This tests checks for not breaking around hierarchy operators.
+    {"function\nvoid\twarranty;"
+     "foo.bar = fancyfunction(aaaaaaaa.bbbbbbb,"
+     "    ccccccccc.ddddddddd) ;"
+     "endfunction   :warranty\n",
+     "function void warranty;\n"
+     "  foo.bar = fancyfunction(\n"
+     "      aaaaaaaa.bbbbbbb,\n"
+     "      ccccccccc.ddddddddd\n"
+     "  );\n"
+     "endfunction : warranty\n"},
+
+    // Group of tests testing partitioning of arguments inside function calls
+    {// function with function call inside if statement header
+     "function foo;if(aa(bb,cc));endfunction\n",
+     "function foo;\n"
+     "  if (aa(bb, cc));\n"
+     "endfunction\n"},
+    {// function with function call inside if statement header and with
+     // begin-end block
+     "function foo;if (aa(bb,cc,dd,ee))begin end endfunction\n",
+     "function foo;\n"
+     "  if (aa(bb, cc, dd, ee)) begin\n"
+     "  end\n"
+     "endfunction\n"},
+    {// function with kMethodCallExtension inside if statement header and with
+     // begin-end block
+     "function foo;if (aa.bb(cc,dd,ee))begin end endfunction\n",
+     "function foo;\n"
+     "  if (aa.bb(cc, dd, ee)) begin\n"
+     "  end\n"
+     "endfunction\n"},
+    {// nested kMethodCallExtension calls - one level
+     "function foo;aa.bb(cc.dd(a1), ee.ff(a2));endfunction\n",
+     "function foo;\n"
+     "  aa.bb(cc.dd(a1), ee.ff(a2));\n"
+     "endfunction\n"},
+    {// nested kMethodCallExtension calls - two level
+     "function foo;aa.bb(cc.dd(a1.b1(a2), b1), ee.ff(c1, d1));endfunction\n",
+     "function foo;\n"
+     "  aa.bb(cc.dd(a1.b1(a2), b1), ee.ff(\n"
+     "        c1, d1));\n"
+     "endfunction\n"},
+
+    {// simple initial statement with function call
+     "module m;initial aa(bb,cc,dd,ee);endmodule\n",
+     "module m;\n"
+     "  initial aa(bb, cc, dd, ee);\n"
+     "endmodule\n"},
+    {// expressions and function calls inside if-statement headers
+     "module m;initial begin if(aa(bb)==cc(dd))a=b;if (xx()) b = a;end "
+     "endmodule\n",
+     "module m;\n"
+     "  initial begin\n"
+     "    if (aa(bb) == cc(dd)) a = b;\n"
+     "    if (xx()) b = a;\n"
+     "  end\n"
+     "endmodule\n"},
+    {// fuction with two arguments inside if-statement headers
+     "module\nm;initial\nbegin\nif(aa(bb,cc))x=y;end\nendmodule\n",
+     "module m;\n"
+     "  initial begin\n"
+     "    if (aa(bb, cc)) x = y;\n"
+     "  end\n"
+     "endmodule\n"},
+    {// kMethodCallExtension inside if-statement headers
+     "module m;initial begin if (aa.bb(cc)) x = y;end endmodule",
+     "module m;\n"
+     "  initial begin\n"
+     "    if (aa.bb(cc)) x = y;\n"
+     "  end\n"
+     "endmodule\n"},
+    {// initial statement with object method call
+     "module m; initial a.b(a,b,c); endmodule\n",
+     "module m;\n"
+     "  initial a.b(a, b, c);\n"
+     "endmodule\n"},
+    {// initial statement with method call on indexed object
+     "module m; initial a[i].b(a,b,c); endmodule\n",
+     "module m;\n"
+     "  initial a[i].b(a, b, c);\n"
+     "endmodule\n"},
+    {// initial statement with method call on function returned object
+     "module m; initial a(d,e,f).b(a,b,c); endmodule\n",
+     "module m;\n"
+     "  initial a(d, e, f).b(a, b, c);\n"
+     "endmodule\n"},
+    {// initial statement with indexed access to function returned object
+     "module m; initial a(a,b,c)[i]; endmodule\n",
+     "module m;\n"
+     "  initial a(a, b, c) [i];\n"
+     "endmodule\n"},
+    {// method call with no arguments on an object
+     "module m; initial foo.bar();endmodule\n",
+     "module m;\n"
+     "  initial foo.bar();\n"
+     "endmodule\n"},
+    {// method call with one argument on an object
+     "module m; initial foo.bar(aa);endmodule\n",
+     "module m;\n"
+     "  initial foo.bar(aa);\n"
+     "endmodule\n"},
+    {// method call with two arguments on an object
+     "module m; initial foo.bar(aa,bb);endmodule\n",
+     "module m;\n"
+     "  initial foo.bar(aa, bb);\n"
+     "endmodule\n"},
+    {// method call with three arguments on an object
+     "module m; initial foo.bar(aa,bb,cc);endmodule\n",
+     "module m;\n"
+     "  initial foo.bar(aa, bb, cc);\n"
+     "endmodule\n"},
+
+    {
+        // This tests for if-statements with null statements
+        "function foo;"
+        "if (zz) ; "
+        "if (yy) ; "
+        "endfunction",
+        "function foo;\n"
+        "  if (zz);\n"
+        "  if (yy);\n"
+        "endfunction\n",
+    },
+
+    {
+        // This tests for if-statements starting on their own line.
+        "function foo;"
+        "if (zz) begin "
+        "return 0;"
+        "end "
+        "if (yy) begin "
+        "return 1;"
+        "end "
+        "endfunction",
+        "function foo;\n"
+        "  if (zz) begin\n"
+        "    return 0;\n"
+        "  end\n"
+        "  if (yy) begin\n"
+        "    return 1;\n"
+        "  end\n"
+        "endfunction\n",
+    },
+
+    {
+        // This tests for if-statements with single statement bodies
+        "function foo;"
+        "if (zz) return 0;"
+        "if (yy) return 1;"
+        "endfunction",
+        "function foo;\n"
+        "  if (zz) return 0;\n"
+        "  if (yy) return 1;\n"
+        "endfunction\n",
+    },
+
+    {
+        // This tests for if-statement mixed with plain statements
+        "function foo;"
+        "a=b;"
+        "if (zz) return 0;"
+        "c=d;"
+        "endfunction",
+        "function foo;\n"
+        "  a = b;\n"
+        "  if (zz) return 0;\n"
+        "  c = d;\n"
+        "endfunction\n",
+    },
+
+    {
+        // This tests for if-statement with forced break mixed with others
+        "function foo;"
+        "a=b;"
+        "if (zz)//\n return 0;"
+        "c=d;"
+        "endfunction",
+        "function foo;\n"
+        "  a = b;\n"
+        "  if (zz)  //\n"
+        "    return 0;\n"
+        "  c = d;\n"
+        "endfunction\n",
+    },
+    {
+        "function t;"
+        "if (r == t)"
+        "a.b(c);"
+        "endfunction",
+        "function t;\n"
+        "  if (r == t) a.b(c);\n"
+        "endfunction\n",
+    },
+
+    {// This tests for for-statement with forced break mixed with others
+     "function f;"
+     "x=y;"
+     "for (int i=0; i<S*IPS; i++) #1ps a += $urandom();"
+     "return 2;"
+     "endfunction",
+     "function f;\n"
+     "  x = y;\n"
+     "  for (int i = 0; i < S * IPS; i++)\n"  // doesn't fit, so indents
+     "    #1ps a += $urandom();\n"
+     "  return 2;\n"
+     "endfunction\n"},
+
+    {
+        // This tests for-statements with null statements
+        "function foo;"
+        "for(;;)  ;\t"
+        "for(;;)  ;\t"
+        "endfunction",
+        "function foo;\n"
+        "  for (;;);\n"
+        "  for (;;);\n"
+        "endfunction\n",
+    },
+
+    {
+        // This tests for if-else-statements with null statements
+        "function foo;"
+        "if (zz) ;  else  ;"
+        "if (yy) ;   else   ;"
+        "endfunction",
+        "function foo;\n"
+        "  if (zz);\n"
+        "  else;\n"
+        "  if (yy);\n"
+        "  else;\n"
+        "endfunction\n",
+    },
+
+    {
+        // This tests for end-else-begin.
+        "function foo;"
+        "if (zz) begin "
+        "return 0;"
+        "end "
+        "else "
+        "begin "
+        "return 1;"
+        "end "
+        "endfunction",
+        "function foo;\n"
+        "  if (zz) begin\n"
+        "    return 0;\n"
+        "  end else begin\n"
+        "    return 1;\n"
+        "  end\n"
+        "endfunction\n",
+    },
+    {
+        // This tests for end-else-if
+        "function foo;"
+        "if (zz) begin "
+        "return 0;"
+        "end "
+        "else "
+        "if(yy)begin "
+        "return 1;"
+        "end "
+        "endfunction",
+        "function foo;\n"
+        "  if (zz) begin\n"
+        "    return 0;\n"
+        "  end else if (yy) begin\n"
+        "    return 1;\n"
+        "  end\n"
+        "endfunction\n",
+    },
+    {
+        // This tests labeled end-else-if
+        "function foo;"
+        "if (zz) begin : label1 "
+        "return 0;"
+        "end : label1 "
+        "else if (yy) begin : label2 "
+        "return 1;"
+        "end : label2 "
+        "endfunction",
+        "function foo;\n"
+        "  if (zz) begin : label1\n"
+        "    return 0;\n"
+        "  end : label1\n"
+        "  else if (yy) begin : label2\n"
+        "    return 1;\n"
+        "  end : label2\n"
+        "endfunction\n",
+    },
+    {
+        // This tests labeled end-else-if-else
+        "function foo;"
+        "if (zz) begin : label1 "
+        "return 0;"
+        "end : label1 "
+        "else if (yy) begin : label2 "
+        "return 1;"
+        "end : label2 "
+        "else begin : label3 "
+        "return 2;"
+        "end : label3 "
+        "endfunction",
+        "function foo;\n"
+        "  if (zz) begin : label1\n"
+        "    return 0;\n"
+        "  end : label1\n"
+        "  else if (yy) begin : label2\n"
+        "    return 1;\n"
+        "  end : label2\n"
+        "  else begin : label3\n"
+        "    return 2;\n"
+        "  end : label3\n"
+        "endfunction\n",
+    },
+
+    {
+        // randomize function
+        "function r ;"
+        "if ( ! randomize (bar )) begin    end "
+        "if ( ! obj.randomize (bar )) begin    end "
+        "endfunction",
+        "function r;\n"
+        "  if (!randomize(bar)) begin\n"
+        "  end\n"
+        "  if (!obj.randomize(bar)) begin\n"
+        "  end\n"
+        "endfunction\n",
+    },
+    {
+        // randomize-with call, with comments
+        "function f;"
+        "s = std::randomize() with {\n"
+        "// comment1\n"
+        "a == e;\n"
+        "// comment2\n"
+        "};"
+        "endfunction\n",
+        "function f;\n"
+        "  s = std::randomize() with {\n"
+        "    // comment1\n"
+        "    a == e;\n"
+        "    // comment2\n"
+        "  };\n"
+        "endfunction\n",
+    },
+    {
+        // randomize-with call, with comments, one joined
+        "function f;"
+        "s = std::randomize() with {\n"
+        "// comment1\n"
+        "a == e;// comment2\n"
+        "};"
+        "endfunction\n",
+        "function f;\n"
+        "  s = std::randomize() with {\n"
+        "    // comment1\n"
+        "    a == e;  // comment2\n"
+        "  };\n"
+        "endfunction\n",
+    },
+    {
+        // randomize-with call, with comment, and conditional
+        "function f;"
+        "s = std::randomize() with {\n"
+        "// comment\n"
+        "a == e;"
+        "if (x) {"
+        "a;"
+        "}"
+        "};"
+        "endfunction\n",
+        "function f;\n"
+        "  s = std::randomize() with {\n"
+        "    // comment\n"
+        "    a == e;\n"
+        "    if (x) {a;}\n"  // TODO(fangism): consider expanding
+        "  };\n"
+        "endfunction\n",
+    },
+
+    // module declaration test cases
+    {"   module       foo  ;     endmodule\n",
+     "module foo;\n"
+     "endmodule\n"},
+    {"   module       foo   (    )   ;     endmodule\n",
+     "module foo ();\n"
+     "endmodule\n"},
+    {"   module       foo   (  .x (  x) );     endmodule\n",
+     "module foo (\n"
+     "    .x(x)\n"
+     ");\n"
+     "endmodule\n"},
+    {"   module       foo   (  .x (  x)  \n,\n . y "
+     "  ( \ny) );     endmodule\n",
+     "module foo (\n"
+     "    .x(x),\n"
+     "    .y(y)\n"
+     ");\n"
+     "endmodule\n"},
+
+    // module instantiation test cases
+    {"  module foo   ; bar bq();endmodule\n",
+     "module foo;\n"
+     "  bar bq ();\n"  // single instance
+     "endmodule\n"},
+    {"  module foo   ; bar bq(), bq2(  );endmodule\n",
+     "module foo;\n"
+     "  bar bq (), bq2 ();\n"  // multiple instances, still fitting on one line
+     "endmodule\n"},
+    {"module foo; bar #(.N(N)) bq (.bus(bus));endmodule\n",
+     // instance parameter and port fits on line
+     "module foo;\n"
+     "  bar #(.N(N)) bq (.bus(bus));\n"
+     "endmodule\n"},
+    {"module foo; bar #(.N(N),.M(M)) bq ();endmodule\n",  // two named params
+     "module foo;\n"
+     "  bar #(\n"
+     "      .N(N),\n"
+     "      .M(M)\n"
+     "  ) bq ();\n"
+     "endmodule\n"},
+    {"module foo; bar #(//comment\n.N(N),.M(M)) bq ();endmodule\n",
+     "module foo;\n"
+     "  bar #(  //comment\n"  // EOL comment before first param
+     "      .N(N),\n"
+     "      .M(M)\n"
+     "  ) bq ();\n"
+     "endmodule\n"},
+    {"module foo; bar #(.N(N),//comment\n.M(M)) bq ();endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "      .N(N),  //comment\n"  // EOL comment after first param
+     "      .M(M)\n"
+     "  ) bq ();\n"
+     "endmodule\n"},
+    {"module foo; bar #(.N(N),.M(M)//comment\n) bq ();endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "      .N(N),\n"
+     "      .M(M)   //comment\n"  // EOL comment after last param
+     "  ) bq ();\n"
+     "endmodule\n"},
+    {"  module foo   ; bar bq(aa,bb,cc);endmodule\n",
+     "module foo;\n"
+     "  bar bq (\n"
+     "      aa,\n"
+     "      bb,\n"
+     "      cc\n"
+     "  );\n"  // multiple positional ports, one per line
+     "endmodule\n"},
+    {"  module foo   ; bar bq(aa,\n"
+     "`ifdef BB\n"
+     "bb,\n"
+     "`endif\n"
+     "cc);endmodule\n",
+     "module foo;\n"
+     "  bar bq (\n"
+     "      aa,\n"
+     "`ifdef BB\n"
+     "      bb,\n"  // keep same indentation as outside conditional
+     "`endif\n"
+     "      cc\n"
+     "  );\n"  // multiple positional ports, one per line
+     "endmodule\n"},
+    {"  module foo   ; bar bq(.aa,.bb);endmodule\n",
+     "module foo;\n"
+     "  bar bq (\n"
+     "      .aa,\n"
+     "      .bb\n"
+     "  );\n"  // multiple named ports, one per line
+     "endmodule\n"},
+    {"  module foo   ; bar bq(.aa(aa),.bb(bb));endmodule\n",
+     "module foo;\n"
+     "  bar bq (\n"
+     "      .aa(aa),\n"
+     "      .bb(bb)\n"
+     "  );\n"  // multiple named ports, one per line
+     "endmodule\n"},
+    {"  module foo   ; bar bq(.aa(aa),\n"
+     "`ifdef ZZ\n"
+     ".zz(  zz  ),\n"
+     "`else\n"
+     ".yy(  yy  ),\n"
+     "`endif\n"
+     ".bb(bb)\n"
+     ");endmodule\n",
+     "module foo;\n"
+     "  bar bq (\n"
+     "      .aa(aa),\n"
+     "`ifdef ZZ\n"
+     "      .zz(zz),\n"
+     "`else\n"
+     "      .yy(yy),\n"
+     "`endif\n"
+     "      .bb(bb)\n"
+     "  );\n"  // multiple named ports, one per line
+     "endmodule\n"},
+    {"  module foo   ; bar#(NNNNNNNN)"
+     "bq(.aa(aaaaaa),.bb(bbbbbb));endmodule\n",
+     "module foo;\n"
+     "  bar #(NNNNNNNN) bq (\n"
+     "      .aa(aaaaaa),\n"
+     "      .bb(bbbbbb)\n"
+     "  );\n"
+     "endmodule\n"},
+    {" module foo   ; barrrrrrr "
+     "bq(.aaaaaa(aaaaaa),.bbbbbb(bbbbbb));endmodule\n",
+     "module foo;\n"
+     "  barrrrrrr bq (\n"
+     "      .aaaaaa(aaaaaa),\n"
+     "      .bbbbbb(bbbbbb)\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo; bar #(.NNNNN(NNNNN)) bq (.bussss(bussss));endmodule\n",
+     // instance parameter and port does not fit on line
+     "module foo;\n"
+     "  bar #(\n"
+     "      .NNNNN(NNNNN)\n"
+     "  ) bq (\n"
+     "      .bussss(bussss)\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo; bar #(//\n.N(N)) bq (.bus(bus));endmodule\n",
+     "module foo;\n"
+     "  bar #(  //\n"  // would fit on one line, but forced to expand by //
+     "      .N(N)\n"
+     "  ) bq (\n"
+     "      .bus(bus)\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo; bar #(\n"
+     "`ifdef MM\n"
+     ".M(M)\n"
+     "`else\n"
+     ".N(N)\n"
+     "`endif\n"
+     ") bq (.bus(bus));endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"
+     "`ifdef MM\n"
+     "      .M(M)\n"
+     "`else\n"
+     "      .N(N)\n"
+     "`endif\n"
+     "  ) bq (\n"
+     "      .bus(bus)\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo; bar #(.N(N)//\n) bq (.bus(bus));endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"  // would fit on one line, but forced to expand by //
+     "      .N(N)  //\n"
+     "  ) bq (\n"
+     "      .bus(bus)\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo; bar #(.N(N)) bq (//\n.bus(bus));endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"  // would fit on one line, but forced to expand by //
+     "      .N(N)\n"
+     "  ) bq (  //\n"
+     "      .bus(bus)\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module foo; bar #(.N(N)) bq (.bus(bus)//\n);endmodule\n",
+     "module foo;\n"
+     "  bar #(\n"  // would fit on one line, but forced to expand by //
+     "      .N(N)\n"
+     "  ) bq (\n"
+     "      .bus(bus)  //\n"
+     "  );\n"
+     "endmodule\n"},
+    {" module foo   ; bar "
+     "bq(.aaa(aaa),.bbb(bbb),.ccc(ccc),.ddd(ddd));endmodule\n",
+     "module foo;\n"
+     "  bar bq (\n"
+     "      .aaa(aaa),\n"  // ports don't fit on one line, so expanded
+     "      .bbb(bbb),\n"
+     "      .ccc(ccc),\n"
+     "      .ddd(ddd)\n"
+     "  );\n"
+     "endmodule\n"},
+    {" module foo   ; bar "
+     "bq(.aa(aa),.bb(bb),.cc(cc),.dd(dd));endmodule\n",
+     "module foo;\n"
+     "  bar bq (\n"
+     "      .aa(aa),\n"  // one named port per line
+     "      .bb(bb),\n"
+     "      .cc(cc),\n"
+     "      .dd(dd)\n"
+     "  );\n"
+     "endmodule\n"},
+    {" module foo   ; bar "
+     "bq(.aa(aa),//\n.bb(bb),.cc(cc),.dd(dd));endmodule\n",
+     "module foo;\n"
+     "  bar bq (\n"
+     "      .aa(aa),  //\n"  // forced to expand by //
+     "      .bb(bb),\n"
+     "      .cc(cc),\n"
+     "      .dd(dd)\n"
+     "  );\n"
+     "endmodule\n"},
+    {" module foo   ; bar "
+     "bq(.aa(aa),.bb(bb),.cc(cc),.dd(dd)//\n);endmodule\n",
+     "module foo;\n"
+     "  bar bq (\n"
+     "      .aa(aa),\n"
+     "      .bb(bb),\n"
+     "      .cc(cc),\n"
+     "      .dd(dd)   //\n"  // forced to expand by //
+     "  );\n"
+     "endmodule\n"},
+    {// gate instantiation test
+     "module m;"
+     "and\tx0(a, \t\tb,c);"
+     "or\nx1(a,  \n b,    d);"
+     "endmodule\n",
+     "module m;\n"
+     "  and x0 (a, b, c);\n"
+     "  or x1 (a, b, d);\n"
+     "endmodule\n"},
+    {// ifdef inside port actuals
+     "module m;  foo bar   (\n"
+     "`ifdef   BAZ\n"
+     "`endif\n"
+     ")  ;endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "`ifdef BAZ\n"
+     "`endif\n"
+     "  );\n"
+     "endmodule\n"},
+    {// ifdef inside port actuals after a port connection
+     "module m;  foo bar   ( .a (a) ,\n"
+     "`ifdef   BAZ\n"
+     "`endif\n"
+     ")  ;endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .a(a),\n"
+     "`ifdef BAZ\n"
+     "`endif\n"
+     "  );\n"
+     "endmodule\n"},
+    {// ifdef inside port actuals before a port connection
+     "module m;  foo bar   (\n"
+     "`ifdef   BAZ\n"
+     "`endif\n"
+     ". b(b) )  ;endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "`ifdef BAZ\n"
+     "`endif\n"
+     "      .b(b)\n"
+     "  );\n"
+     "endmodule\n"},
+    {// ifdef-conditional port connection
+     "module m;  foo bar   (\n"
+     "`ifdef   BAZ\n"
+     ". c (\tc) \n"
+     "`endif\n"
+     " )  ;endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "`ifdef BAZ\n"
+     "      .c(c)\n"
+     "`endif\n"
+     "  );\n"
+     "endmodule\n"},
+    {// ifndef-else-conditional port connection
+     "module m;  foo bar   (\n"
+     "`ifndef   BAZ\n"
+     ". c (\tc) \n"
+     "  `else\n"
+     " . d(d\t)\n"
+     "  `endif\n"
+     " )  ;endmodule\n",
+     "module m;\n"
+     "  foo bar (\n"
+     "`ifndef BAZ\n"
+     "      .c(c)\n"
+     "`else\n"
+     "      .d(d)\n"
+     "`endif\n"
+     "  );\n"
+     "endmodule\n"},
+
+    {// comment following a delay in next line
+     "module t;\n"
+     "reg x;\n"
+     "initial begin\n"
+     "#20\n"
+     "//comment\n"
+     "x = 1;\n"
+     "x = 2;\n"
+     "end\n"
+     "endmodule\n",
+     "module t;\n"
+     "  reg x;\n"
+     "  initial begin\n"
+     "    #20\n"
+     "    //comment\n"
+     "    x = 1;\n"
+     "    x = 2;\n"
+     "  end\n"
+     "endmodule\n"},
+    {// comment following a delay in the same line
+     "module t;\n"
+     "reg x;\n"
+     "initial begin\n"
+     "#20 //comment\n"
+     "x = 1;\n"
+     "x = 2;\n"
+     "end\n"
+     "endmodule\n",
+     "module t;\n"
+     "  reg x;\n"
+     "  initial begin\n"
+     "    #20  //comment\n"
+     "    x = 1;\n"
+     "    x = 2;\n"
+     "  end\n"
+     "endmodule\n"},
+    // Macro calls inside [...]
+    {"module foo;\nlogic [`BAR(1)\n+2] foo;\nendmodule",
+     "module foo;\n"
+     "  logic [`BAR(1)\n"
+     "+2] foo;\n"
+     "endmodule\n"},
+    {"module foo;\nlogic [`BAR(1)+2] foo;\nendmodule",
+     "module foo;\n"
+     "  logic [`BAR(1)+2] foo;\n"
+     "endmodule\n"},
+    {"module foo ();\n  function bar();\n    "
+     "logic [12:34] data[`AAAAAAAAAAAAAAAAAAAAAAAA(1) : "
+     "`BBBBBBBBBBBBBBBBBBBBBBBB(2) + 3];\n  "
+     "endfunction\nendmodule",
+     "module foo ();\n"
+     "  function bar();\n"
+     "    logic [12:34] data[\n"
+     "    `AAAAAAAAAAAAAAAAAAAAAAAA(1) :\n"
+     "    `BBBBBBBBBBBBBBBBBBBBBBBB(2) + 3];\n"
+     "  endfunction\n"
+     "endmodule\n"},
+    {
+        // test that alternate top-syntax mode works
+        "// verilog_syntax: parse-as-module-body\n"
+        "`define           FOO\n",
+        "// verilog_syntax: parse-as-module-body\n"
+        "`define FOO\n",
+    },
+    {
+        // test alternate parsing mode in macro expansion
+        "class foo;\n"
+        "`MY_MACRO(\n"
+        " // verilog_syntax: parse-as-statements\n"
+        " // EOL comment\n"
+        " int count;\n"
+        " if(cfg.enable) begin\n"
+        " count = 1;\n"
+        " end,\n"
+        " utils_pkg::decrement())\n"
+        "endclass\n",
+        "class foo;\n"
+        "  `MY_MACRO(\n"
+        "      // verilog_syntax: parse-as-statements\n"
+        "      // EOL comment\n"
+        "      int count;\n"
+        "      if (cfg.enable) begin\n"
+        "        count = 1;\n"
+        "      end, utils_pkg::decrement())\n"
+        "endclass\n",
+    },
+
+    // tests top-level data declarations
+    {"a;",  // implicit type
+     "a;\n"},
+    {"a\tb;",  // explicit type
+     "a b;\n"},
+    {"a;b;",
+     "a;\n"
+     "b;\n"},
+    {"a ,b;",  // implicit type
+     "a, b;\n"},
+    /* TODO(b/149591599): implicit type data declarations in module body
+    {"module\tm ;a ;endmodule",
+     "module m;\n"
+     "  a;\n"
+     "endmodule\n"},
+    */
+    {"package\tp ;a ;endpackage",  // implicit type
+     "package p;\n"
+     "  a;\n"
+     "endpackage\n"},
+    {"package\tp ;a ,b ;endpackage",  // implicit type
+     "package p;\n"
+     "  a, b;\n"
+     "endpackage\n"},
+    {"package\tp ;a ;b ;endpackage",  // implicit type
+     "package p;\n"
+     "  a;\n"
+     "  b;\n"
+     "endpackage\n"},
+    /* TODO(b/149591627) : implicit type data declarations in class body
+    {"class\tc ;a ;endclass",
+     "class c;\n"
+     "  a;\n"
+     "endclass\n"},
+     */
+    {"function\tf ;a ;endfunction",  // implicit type
+     "function f;\n"
+     "  a;\n"
+     "endfunction\n"},
+    {"function\tf ;a   ;x ;endfunction",  // implicit type
+     "function f;\n"
+     "  a;\n"
+     "  x;\n"
+     "endfunction\n"},
+    /* TODO(b/149592527): multi-variable data declaration as block_item_decl
+     // same inside tasks
+    {"function\tf ;a  \t,x ;endfunction",  // implicit type
+     "function f;\n"
+     "  a, x;\n"
+     "endfunction\n"},
+     */
+    {"task\tt ;a ;endtask",  // implicit type
+     "task t;\n"
+     "  a;\n"
+     "endtask\n"},
+    {"task\tt ;a   ;x ;endtask",  // implicit type
+     "task t;\n"
+     "  a;\n"
+     "  x;\n"
+     "endtask\n"},
+
+    {// tests bind declaration
+     "bind   foo   bar baz  ( . clk ( clk  ) ) ;",
+     "bind foo bar baz (.clk(clk));\n"},
+    {// tests bind declaration, with type params
+     "bind   foo   bar# ( . W ( W ) ) baz  ( . clk ( clk  ) ) ;",
+     "bind foo bar #(.W(W)) baz (.clk(clk));\n"},
+    {// tests bind declarations
+     "bind   foo   bar baz  ( ) ;"
+     "bind goo  car  caz (   );",
+     "bind foo bar baz ();\n"
+     "bind goo car caz ();\n"},
+
+    {"bind blah foo #( .MaxCount(MaxCount), .MaxDelta(MaxDelta)) bar ("
+     "    .clk(clk), .rst(rst), .value(value) );",
+     "bind blah foo #(\n"
+     "    .MaxCount(MaxCount),\n"
+     "    .MaxDelta(MaxDelta)\n"
+     ") bar (\n"
+     "    .clk  (clk),\n"
+     "    .rst  (rst),\n"
+     "    .value(value)\n"
+     ");\n"},
+    {"bind foo bar baz(\\\n"
+     "`undef d\\\n"
+     "`undef d);",
+     "bind foo bar baz (\\\n"
+     "    `undef d\\\n"
+     "    `undef d\n"
+     ");\n"},
+    {
+        "bind expaaaaaaaaaaand_meeee looooooooong_name# ("
+        ".W(W_CONST), .H(H_CONST), .D(D_CONST)  )"
+        "instaaance_name (.in(iiiiiiiin), .out(ooooooout), .clk(ccccccclk));",
+        "bind expaaaaaaaaaaand_meeee\n"
+        "    looooooooong_name #(\n"
+        "    .W(W_CONST),\n"
+        "    .H(H_CONST),\n"
+        "    .D(D_CONST)\n"
+        ") instaaance_name (\n"
+        "    .in (iiiiiiiin),\n"
+        "    .out(ooooooout),\n"
+        "    .clk(ccccccclk)\n"
+        ");\n",
+    },
+
+    {
+        "bind expand_inst name# ("
+        ".W(W_CONST), .H(H_CONST), .D(D_CONST)  )"
+        "instaaance_name (.in(iiiiiiiin), .out(ooooooout), .clk(ccccccclk));",
+        "bind expand_inst name #(\n"
+        "    .W(W_CONST),\n"
+        "    .H(H_CONST),\n"
+        "    .D(D_CONST)\n"
+        ") instaaance_name (\n"
+        "    .in (iiiiiiiin),\n"
+        "    .out(ooooooout),\n"
+        "    .clk(ccccccclk)\n"
+        ");\n",
+    },
+
+    {
+        // tests import declaration
+        "import  foo_pkg :: bar ;",
+        "import foo_pkg::bar;\n",
+    },
+    {
+        // tests import declaration with wildcard
+        "import  foo_pkg :: * ;",
+        "import foo_pkg::*;\n",
+    },
+    {
+        // tests import declarations
+        "import  foo_pkg :: *\t;"
+        "import  goo_pkg\n:: thing ;",
+        "import foo_pkg::*;\n"
+        "import goo_pkg::thing;\n",
+    },
+    // preserve spaces inside [] dimensions, but limit spaces around ':' to one
+    // and adjust everything else
+    {"foo[W-1:0]a[0:K-1];",  // data declaration
+     "foo [W-1:0] a[0:K-1];\n"},
+    {"foo[W-1 : 0]a[0 : K-1];", "foo [W-1 : 0] a[0 : K-1];\n"},
+    {"foo[W  -  1 : 0 ]a [ 0  :  K  -  1] ;",
+     "foo [W  -  1 : 0] a[0 : K  -  1];\n"},
+    // remove spaces between [...] [...] in multi-dimension arrays
+    {"foo[K] [W]a;",  //
+     "foo [K][W] a;\n"},
+    {"foo b [K] [W] ;",  //
+     "foo b[K][W];\n"},
+    {"logic[K:1] [W:1]a;",  //
+     "logic [K:1][W:1] a;\n"},
+    {"logic b [K:1] [W:1] ;",  //
+     "logic b[K:1][W:1];\n"},
+    // spaces in bit slicing
+    {
+        // preserve 0 spaces
+        "always_ff @(posedge clk) begin "
+        "dummy  <=\tfoo  [  7:2  ] ; "
+        "end",
+        "always_ff @(posedge clk) begin\n"
+        "  dummy <= foo[7:2];\n"
+        "end\n",
+    },
+    {
+        // preserve 1 space
+        "always_ff @(posedge clk) begin "
+        "dummy  <=\tfoo  [  7 : 2  ] ; "
+        "end",
+        "always_ff @(posedge clk) begin\n"
+        "  dummy <= foo[7 : 2];\n"
+        "end\n",
+    },
+    {
+        // limit multiple spaces to 1
+        "always_ff @(posedge clk) begin "
+        "dummy  <=\tfoo  [  7  :  2  ] ; "
+        "end",
+        "always_ff @(posedge clk) begin\n"
+        "  dummy <= foo[7 : 2];\n"
+        "end\n",
+    },
+    {
+        "always_ff @(posedge clk) begin "
+        "dummy  <=\tfoo  [  7  : 2  ] ; "
+        "end",
+        "always_ff @(posedge clk) begin\n"
+        "  dummy <= foo[7 : 2];\n"
+        "end\n",
+    },
+    {
+        // keep value on the left when symmetrizing
+        "always_ff @(posedge clk) begin "
+        "dummy  <=\tfoo  [  7: 2  ] ; "
+        "end",
+        "always_ff @(posedge clk) begin\n"
+        "  dummy <= foo[7:2];\n"
+        "end\n",
+    },
+    {
+        "always_ff @(posedge clk) begin "
+        "dummy  <=\tfoo  [  7:  2  ] ; "
+        "end",
+        "always_ff @(posedge clk) begin\n"
+        "  dummy <= foo[7:2];\n"
+        "end\n",
+    },
+    {
+        "always_ff @(posedge clk) begin "
+        "dummy  <=\tfoo  [  7 :2  ] ; "
+        "end",
+        "always_ff @(posedge clk) begin\n"
+        "  dummy <= foo[7 : 2];\n"
+        "end\n",
+    },
+    {
+        "always_ff @(posedge clk) begin "
+        "dummy  <=\tfoo  [  7 :  2  ] ; "
+        "end",
+        "always_ff @(posedge clk) begin\n"
+        "  dummy <= foo[7 : 2];\n"
+        "end\n",
+    },
+    {
+        // use value on the left, but limit to 1 space
+        "always_ff @(posedge clk) begin "
+        "dummy  <=\tfoo  [  7  :2  ] ; "
+        "end",
+        "always_ff @(posedge clk) begin\n"
+        "  dummy <= foo[7 : 2];\n"
+        "end\n",
+    },
+
+    // task test cases
+    {"task t ;endtask:t",  //
+     "task t;\n"
+     "endtask : t\n"},
+    {"task t ;#   10 ;# 5ns ; # 0.1 ; # 1step ;endtask",
+     "task t;\n"
+     "  #10;\n"  // no space in delay expression
+     "  #5ns;\n"
+     "  #0.1;\n"
+     "  #1step;\n"
+     "endtask\n"},
+    {"task t\n;a<=b ;c<=d ;endtask\n",
+     "task t;\n"
+     "  a <= b;\n"
+     "  c <= d;\n"
+     "endtask\n"},
+    {"class c;   virtual protected task\tt  ( foo bar);"
+     "a.a<=b.b;\t\tc.c\n<=   d.d; endtask   endclass",
+     "class c;\n"
+     "  virtual protected task t(foo bar);\n"
+     "    a.a <= b.b;\n"
+     "    c.c <= d.d;\n"
+     "  endtask\n"
+     "endclass\n"},
+    {"task t;\n// statement comment\nendtask\n",
+     "task t;\n"
+     "  // statement comment\n"  // indented
+     "endtask\n"},
+    {"task t( );\n// statement comment\nendtask\n",
+     "task t();\n"
+     "  // statement comment\n"  // indented
+     "endtask\n"},
+    {"task t( input x  );\n"
+     "// statement comment\n"
+     "s();\n"
+     "// statement comment\n"
+     "endtask\n",
+     "task t(input x);\n"
+     "  // statement comment\n"  // indented
+     "  s();\n"
+     "  // statement comment\n"  // indented
+     "endtask\n"},
+    {"task fj;fork join fork join\tendtask",
+     "task fj;\n"
+     "  fork\n"
+     "  join\n"
+     "  fork\n"
+     "  join\n"
+     "endtask\n"},
+    {"task fj;fork join_any fork join_any\tendtask",
+     "task fj;\n"
+     "  fork\n"
+     "  join_any\n"
+     "  fork\n"
+     "  join_any\n"
+     "endtask\n"},
+    {"task fj;fork join_none fork join_none\tendtask",
+     "task fj;\n"
+     "  fork\n"
+     "  join_none\n"
+     "  fork\n"
+     "  join_none\n"
+     "endtask\n"},
+    {"task fj;fork\n"
+     "//c1\njoin\n"
+     "//c2\n"
+     "fork  \n"
+     "//c3\n"
+     "join\tendtask",
+     "task fj;\n"
+     "  fork\n"
+     "    //c1\n"
+     "  join\n"
+     "  //c2\n"
+     "  fork\n"
+     "    //c3\n"
+     "  join\n"
+     "endtask\n"},
+    {"task fj;\n"
+     "fork "
+     "begin "
+     "end "
+     "foo();"
+     "begin "
+     "end "
+     "join_any endtask",
+     "task fj;\n"
+     "  fork\n"
+     "    begin\n"
+     "    end\n"
+     "    foo();\n"
+     "    begin\n"
+     "    end\n"
+     "  join_any\n"
+     "endtask\n"},
+    {
+        // call and assertion statements
+        "task  t ;Fire() ;assert ( x);assert(y );endtask",
+        "task t;\n"
+        "  Fire();\n"
+        "  assert (x);\n"
+        "  assert (y);\n"
+        "endtask\n",
+    },
+    {
+        // assertion statements with body clause
+        "task  t ;Fire() ;assert ( x) fee ( );assert(y ) foo ( ) ;endtask",
+        "task t;\n"
+        "  Fire();\n"
+        "  assert (x) fee();\n"
+        "  assert (y) foo();\n"
+        "endtask\n",
+    },
+    {
+        // assertion statements with else clause
+        "task  t ;Fire() ;assert ( x) else  fee ( );"
+        "assert(y ) else  foo ( ) ;endtask",
+        "task t;\n"
+        "  Fire();\n"
+        "  assert (x)\n"
+        "  else fee();\n"
+        "  assert (y)\n"
+        "  else foo();\n"
+        "endtask\n",
+    },
+    {
+        // assertion statements with else clause
+        "task  t ;Fire() ;assert ( x) fa(); else  fee ( );"
+        "assert(y ) fi(); else  foo ( ) ;endtask",
+        "task t;\n"
+        "  Fire();\n"
+        "  assert (x) fa();\n"
+        "  else fee();\n"
+        "  assert (y) fi();\n"
+        "  else foo();\n"
+        "endtask\n",
+    },
+    {
+        // assume statements
+        "task  t ;Fire() ;assume ( x);assume(y );endtask",
+        "task t;\n"
+        "  Fire();\n"
+        "  assume (x);\n"
+        "  assume (y);\n"
+        "endtask\n",
+    },
+    {
+        // cover statements
+        "task  t ;Fire() ;cover ( x);cover(y );endtask",
+        "task t;\n"
+        "  Fire();\n"
+        "  cover (x);\n"
+        "  cover (y);\n"
+        "endtask\n",
+    },
+    {
+        // cover statements, with action
+        "task  t ;Fire() ;cover ( x)g( );cover(y ) h();endtask",
+        "task t;\n"
+        "  Fire();\n"
+        "  cover (x) g();\n"
+        "  cover (y) h();\n"
+        "endtask\n",
+    },
+    {
+        // cover statements, with action block
+        "task  t ;Fire() ;cover ( x) begin g( ); end "
+        "cover(y ) begin h(); end endtask",
+        "task t;\n"
+        "  Fire();\n"
+        "  cover (x) begin\n"
+        "    g();\n"
+        "  end\n"
+        "  cover (y) begin\n"
+        "    h();\n"
+        "  end\n"
+        "endtask\n",
+    },
+    {// shuffle calls
+     "task t; foo. shuffle  ( );bar .shuffle( ); endtask",
+     "task t;\n"
+     "  foo.shuffle();\n"
+     "  bar.shuffle();\n"
+     "endtask\n"},
+    {// wait statements (null)
+     "task t; wait  (a==b);wait(c<d); endtask",
+     "task t;\n"
+     "  wait (a == b);\n"
+     "  wait (c < d);\n"
+     "endtask\n"},
+    {// wait statements, single action statement
+     "task t; wait  (a==b) p();wait(c<d) q(); endtask",
+     "task t;\n"
+     "  wait (a == b) p();\n"
+     "  wait (c < d) q();\n"
+     "endtask\n"},
+    {// wait statements, block action statement
+     "task t; wait  (a==b) begin p(); end "
+     "wait(c<d) begin q(); end endtask",
+     "task t;\n"
+     "  wait (a == b) begin\n"
+     "    p();\n"
+     "  end\n"
+     "  wait (c < d) begin\n"
+     "    q();\n"
+     "  end\n"
+     "endtask\n"},
+    {// wait fork statements
+     "task t ; wait\tfork;wait   fork ;endtask",
+     "task t;\n"
+     "  wait fork;\n"
+     "  wait fork;\n"
+     "endtask\n"},
+    {// labeled single statements (prefix-style)
+     "task t;l1:x<=y ;endtask",
+     "task t;\n"
+     "  l1 : x <= y;\n"
+     "endtask\n"},
+    {// labeled block statements (prefix-style)
+     "task t;l1:begin end:l1 endtask",
+     "task t;\n"
+     "  l1 : begin\n"
+     "  end : l1\n"
+     "endtask\n"},
+    {// labeled seq block statements
+     "task t;begin:l1 end:l1 endtask",
+     "task t;\n"
+     "  begin : l1\n"
+     "  end : l1\n"
+     "endtask\n"},
+    {// labeled par block statements
+     "task t;fork:l1 join:l1 endtask",
+     "task t;\n"
+     "  fork : l1\n"
+     "  join : l1\n"
+     "endtask\n"},
+    {// task with disable statements
+     "task  t ;fork\tjoin\tdisable\tfork;endtask",
+     "task t;\n"
+     "  fork\n"
+     "  join\n"
+     "  disable fork;\n"
+     "endtask\n"},
+    {"task  t ;fork\tjoin_any\tdisable\tfork  ;endtask",
+     "task t;\n"
+     "  fork\n"
+     "  join_any\n"
+     "  disable fork;\n"
+     "endtask\n"},
+    {"task  t ;disable\tbean_counter  ;endtask",
+     "task t;\n"
+     "  disable bean_counter;\n"
+     "endtask\n"},
+    {
+        // task with if-statement
+        "task t;"
+        "if (r == t)"
+        "a.b(c);"
+        "endtask",
+        "task t;\n"
+        "  if (r == t) a.b(c);\n"
+        "endtask\n",
+    },
+    {
+        // task with system call inside if header
+        "task t;"
+        "if (!$cast(ssssssssssssssss,vvvvvvvvvv,gggggggg))begin end endtask:t",
+        "task t;\n"
+        "  if (!$cast(\n"
+        "          ssssssssssssssss,\n"
+        "          vvvvvvvvvv,\n"
+        "          gggggggg\n"
+        "      )) begin\n"
+        "  end\n"
+        "endtask : t\n",
+    },
+    {
+        // task with nested subtask call and arguments passed by name
+        "task t;"
+        "if (!$cast(ssssssssssssssss, vvvvvvvvvv.gggggggg("
+        ".ppppppp(ppppppp),"
+        ".yyyyy(\"xxxxxxxxxxxxx\")"
+        "))) begin "
+        "end "
+        "endtask : t",
+        "task t;\n"
+        "  if (!$cast(\n"
+        "          ssssssssssssssss,\n"
+        "          vvvvvvvvvv.gggggggg(\n"
+        "              .ppppppp(ppppppp),\n"
+        "              .yyyyy(\"xxxxxxxxxxxxx\")\n"
+        "          )\n"
+        "      )) begin\n"
+        "  end\n"
+        "endtask : t\n",
+    },
+
+    {
+        // assert property statements
+        "task  t ;assert  property( x);assert\tproperty(y );endtask",
+        "task t;\n"
+        "  assert property (x);\n"
+        "  assert property (y);\n"
+        "endtask\n",
+    },
+    {
+        // assert property statements, with action
+        "task  t ;assert  property( x) j();assert\tproperty(y )k( );endtask",
+        "task t;\n"
+        "  assert property (x) j();\n"
+        "  assert property (y) k();\n"
+        "endtask\n",
+    },
+    {
+        // assert property statements, with action block
+        "task  t ;assert  property( x) begin j();end "
+        " assert\tproperty(y )begin\tk( );  end endtask",
+        "task t;\n"
+        "  assert property (x) begin\n"
+        "    j();\n"
+        "  end\n"
+        "  assert property (y) begin\n"
+        "    k();\n"
+        "  end\n"
+        "endtask\n",
+    },
+    {
+        // assert property statements, else with null
+        "task  t ;assert  property( x) else;assert\tproperty(y )else;endtask",
+        "task t;\n"
+        "  assert property (x)\n"
+        "  else;\n"
+        "  assert property (y)\n"
+        "  else;\n"
+        "endtask\n",
+    },
+    {
+        // assert property statements, else with actions
+        "task  t ;assert  property( x) f(); else p(); "
+        "\tassert\tproperty(y ) g();else  q( );endtask",
+        "task t;\n"
+        "  assert property (x) f();\n"
+        "  else p();\n"
+        "  assert property (y) g();\n"
+        "  else q();\n"
+        "endtask\n",
+    },
+    {
+        // assert property statement, with action block, else statement
+        "task  t ;assert  property( x) begin j();end  else\tk( );  endtask",
+        "task t;\n"
+        "  assert property (x) begin\n"
+        "    j();\n"
+        "  end else k();\n"
+        "endtask\n",
+    },
+    {
+        // assert property statement, with action statement, else block
+        "task  t ;assert  property( x) j();  else  begin\tk( );end  endtask",
+        "task t;\n"
+        "  assert property (x) j();\n"
+        "  else begin\n"
+        "    k();\n"
+        "  end\n"
+        "endtask\n",
+    },
+    {
+        // assert property statement, with action block, else block
+        "task  t ;assert  property( x)begin j();end  "
+        "else  begin\tk( );end  endtask",
+        "task t;\n"
+        "  assert property (x) begin\n"
+        "    j();\n"
+        "  end else begin\n"
+        "    k();\n"
+        "  end\n"
+        "endtask\n",
+    },
+
+    {
+        // assume property statements
+        "task  t ;assume  property( x);assume\tproperty(y );endtask",
+        "task t;\n"
+        "  assume property (x);\n"
+        "  assume property (y);\n"
+        "endtask\n",
+    },
+    {
+        // assume property statements, with action
+        "task  t ;assume  property( x) j();assume\tproperty(y )k( );endtask",
+        "task t;\n"
+        "  assume property (x) j();\n"
+        "  assume property (y) k();\n"
+        "endtask\n",
+    },
+    {
+        // assume property statements, with action block
+        "task  t ;assume  property( x) begin j();end "
+        " assume\tproperty(y )begin\tk( );  end endtask",
+        "task t;\n"
+        "  assume property (x) begin\n"
+        "    j();\n"
+        "  end\n"
+        "  assume property (y) begin\n"
+        "    k();\n"
+        "  end\n"
+        "endtask\n",
+    },
+    {
+        // assume property statements, else with null
+        "task  t ;assume  property( x) else;assume\tproperty(y )else;endtask",
+        "task t;\n"
+        "  assume property (x)\n"
+        "  else;\n"
+        "  assume property (y)\n"
+        "  else;\n"
+        "endtask\n",
+    },
+    {
+        // assume property statements, else with actions
+        "task  t ;assume  property( x) f(); else p(); "
+        "\tassume\tproperty(y ) g();else  q( );endtask",
+        "task t;\n"
+        "  assume property (x) f();\n"
+        "  else p();\n"
+        "  assume property (y) g();\n"
+        "  else q();\n"
+        "endtask\n",
+    },
+    {
+        // assume property statement, with action block, else statement
+        "task  t ;assume  property( x) begin j();end  else\tk( );  endtask",
+        "task t;\n"
+        "  assume property (x) begin\n"
+        "    j();\n"
+        "  end else k();\n"
+        "endtask\n",
+    },
+    {
+        // assume property statement, with action statement, else block
+        "task  t ;assume  property( x) j();  else  begin\tk( );end  endtask",
+        "task t;\n"
+        "  assume property (x) j();\n"
+        "  else begin\n"
+        "    k();\n"
+        "  end\n"
+        "endtask\n",
+    },
+    {
+        // assume property statement, with action block, else block
+        "task  t ;assume  property( x)begin j();end  "
+        "else  begin\tk( );end  endtask",
+        "task t;\n"
+        "  assume property (x) begin\n"
+        "    j();\n"
+        "  end else begin\n"
+        "    k();\n"
+        "  end\n"
+        "endtask\n",
+    },
+
+    {
+        // expect property statements
+        "task  t ;expect  ( x);expect\t(y );endtask",
+        "task t;\n"
+        "  expect (x);\n"
+        "  expect (y);\n"
+        "endtask\n",
+    },
+    {
+        // expect property statements, with action
+        "task  t ;expect  ( x) j();expect\t(y )k( );endtask",
+        "task t;\n"
+        "  expect (x) j();\n"
+        "  expect (y) k();\n"
+        "endtask\n",
+    },
+    {
+        // expect property statements, with action block
+        "task  t ;expect  ( x) begin j();end "
+        " expect\t(y )begin\tk( );  end endtask",
+        "task t;\n"
+        "  expect (x) begin\n"
+        "    j();\n"
+        "  end\n"
+        "  expect (y) begin\n"
+        "    k();\n"
+        "  end\n"
+        "endtask\n",
+    },
+    {
+        // expect property statements, else with null
+        "task  t ;expect  ( x) else;expect\t(y )else;endtask",
+        "task t;\n"
+        "  expect (x)\n"
+        "  else;\n"
+        "  expect (y)\n"
+        "  else;\n"
+        "endtask\n",
+    },
+    {
+        // expect property statements, else with actions
+        "task  t ;expect  ( x) f(); else p(); "
+        "\texpect\t(y ) g();else  q( );endtask",
+        "task t;\n"
+        "  expect (x) f();\n"
+        "  else p();\n"
+        "  expect (y) g();\n"
+        "  else q();\n"
+        "endtask\n",
+    },
+    {
+        // expect property statement, with action block, else statement
+        "task  t ;expect  ( x) begin j();end  else\tk( );  endtask",
+        "task t;\n"
+        "  expect (x) begin\n"
+        "    j();\n"
+        "  end else k();\n"
+        "endtask\n",
+    },
+    {
+        // expect property statement, with action statement, else block
+        "task  t ;expect  ( x) j();  else  begin\tk( );end  endtask",
+        "task t;\n"
+        "  expect (x) j();\n"
+        "  else begin\n"
+        "    k();\n"
+        "  end\n"
+        "endtask\n",
+    },
+    {
+        // expect property statement, with action block, else block
+        "task  t ;expect  ( x)begin j();end  "
+        "else  begin\tk( );end  endtask",
+        "task t;\n"
+        "  expect (x) begin\n"
+        "    j();\n"
+        "  end else begin\n"
+        "    k();\n"
+        "  end\n"
+        "endtask\n",
+    },
+
+    {
+        // cover property statements
+        "task  t ;cover  property( x);cover\tproperty(y );endtask",
+        "task t;\n"
+        "  cover property (x);\n"
+        "  cover property (y);\n"
+        "endtask\n",
+    },
+    {
+        // cover property statements, with action
+        "task  t ;cover  property( x) j();cover\tproperty(y )k( );endtask",
+        "task t;\n"
+        "  cover property (x) j();\n"
+        "  cover property (y) k();\n"
+        "endtask\n",
+    },
+    {
+        // cover property statements, with action block
+        "task  t ;cover  property( x) begin j();end "
+        " cover\tproperty(y )begin\tk( );  end endtask",
+        "task t;\n"
+        "  cover property (x) begin\n"
+        "    j();\n"
+        "  end\n"
+        "  cover property (y) begin\n"
+        "    k();\n"
+        "  end\n"
+        "endtask\n",
+    },
+
+    {
+        // cover sequence statements
+        "task  t ;cover  sequence( x);cover\tsequence(y );endtask",
+        "task t;\n"
+        "  cover sequence (x);\n"
+        "  cover sequence (y);\n"
+        "endtask\n",
+    },
+    {
+        // cover sequence statements, with action
+        "task  t ;cover  sequence( x) j();cover\tsequence(y )k( );endtask",
+        "task t;\n"
+        "  cover sequence (x) j();\n"
+        "  cover sequence (y) k();\n"
+        "endtask\n",
+    },
+    {
+        // cover sequence statements, with action block
+        "task  t ;cover  sequence( x) begin j();end "
+        " cover\tsequence(y )begin\tk( );  end endtask",
+        "task t;\n"
+        "  cover sequence (x) begin\n"
+        "    j();\n"
+        "  end\n"
+        "  cover sequence (y) begin\n"
+        "    k();\n"
+        "  end\n"
+        "endtask\n",
+    },
+
+    {// module with disable statements
+     "module m;always begin :block disable m.block; end endmodule",
+     "module m;\n"
+     "  always begin : block\n"
+     "    disable m.block;\n"
+     "  end\n"
+     "endmodule\n"},
+    {"module m;always begin disable m.block; end endmodule",
+     "module m;\n"
+     "  always begin\n"
+     "    disable m.block;\n"
+     "  end\n"
+     "endmodule\n"},
+
+    // property test cases
+    {"module mp ;property p1 ; a|->b;endproperty endmodule",
+     "module mp;\n"
+     "  property p1;\n"
+     "    a |-> b;\n"
+     "  endproperty\n"
+     "endmodule\n"},
+    {"module mp ;property p1 ; a|->b;endproperty:p1 endmodule",
+     "module mp;\n"
+     "  property p1;\n"
+     "    a |-> b;\n"
+     "  endproperty : p1\n"  // with end label
+     "endmodule\n"},
+    {"module mp ;property p1 ; a|->## 1  b;endproperty endmodule",
+     "module mp;\n"
+     "  property p1;\n"
+     "    a |-> ##1 b;\n"  // with delay
+     "  endproperty\n"
+     "endmodule\n"},
+    {"module mp ;property p1 ; a|->## [0: 1]  b;endproperty endmodule",
+     "module mp;\n"
+     "  property p1;\n"
+     "    a |-> ##[0:1] b;\n"  // prefer no spaces with delay range
+     "  endproperty\n"
+     "endmodule\n"},
+    {"module mp ;property p1 ; a|->## [0  : 1]  b;endproperty endmodule",
+     "module mp;\n"
+     "  property p1;\n"
+     "    a |-> ##[0 : 1] b;\n"  // limit to one space, symmetrize
+     "  endproperty\n"
+     "endmodule\n"},
+    {"module mp ;property p1 ; a## 1  b;endproperty endmodule",
+     "module mp;\n"
+     "  property p1;\n"
+     "    a ##1 b;\n"
+     "  endproperty\n"
+     "endmodule\n"},
+    {"module mp ;property p1 ; (a^c)## 1  b;endproperty endmodule",
+     "module mp;\n"
+     "  property p1;\n"
+     "    (a ^ c) ##1 b;\n"
+     "  endproperty\n"
+     "endmodule\n"},
+
+    // covergroup test cases
+    {// Minimal case
+     "covergroup c; endgroup\n",
+     "covergroup c;\n"
+     "endgroup\n"},
+    {// Minimal useful case
+     "covergroup c @ (posedge clk); coverpoint a; endgroup\n",
+     "covergroup c @(posedge clk);\n"
+     "  coverpoint a;\n"
+     "endgroup\n"},
+    {// Multiple coverpoints
+     "covergroup foo @(posedge clk); coverpoint a; coverpoint b; "
+     "coverpoint c; coverpoint d; endgroup\n",
+     "covergroup foo @(posedge clk);\n"
+     "  coverpoint a;\n"
+     "  coverpoint b;\n"
+     "  coverpoint c;\n"
+     "  coverpoint d;\n"
+     "endgroup\n"},
+    {// Multiple bins
+     "covergroup memory @ (posedge ce); address  :coverpoint addr {"
+     "bins low={0,127}; bins high={128,255};} endgroup\n",
+     "covergroup memory @(posedge ce);\n"
+     "  address: coverpoint addr {\n"
+     "    bins low = {0, 127};\n"
+     "    bins high = {128, 255};\n"
+     "  }\n"
+     "endgroup\n"},
+    {// Custom sample() function
+     "covergroup c with function sample(bit i); endgroup\n",
+     "covergroup c with function sample (\n"
+     "    bit i\n"  // test cases are wrapped at 40
+     ");\n"
+     "endgroup\n"},
+
+};
+
+TEST(FormatterEndToEndTest, FunctionTaskFormatterTestCases) {
+  RunFormatterTestCases40(kFunctionTaskFormatterTestCases);
+}
+
+}  // namespace
+}  // namespace formatter
+}  // namespace verilog
diff --git a/verible/verilog/formatting/formatter_issue_regression_test.cc b/verible/verilog/formatting/formatter_issue_regression_test.cc
new file mode 100644
index 0000000..8f1fcef
--- /dev/null
+++ b/verible/verilog/formatting/formatter_issue_regression_test.cc
@@ -0,0 +1,319 @@
+// Copyright 2017-2026 The Verible Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Test cases in this file should be *insensitive* to wrapping penalties.
+// Penalty-sensitive tests belong in formatter-tuning_test.cc.
+
+#include <sstream>
+#include <string_view>
+
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+#include "verible/common/util/logging.h"
+#include "verible/verilog/formatting/format-style.h"
+#include "verible/verilog/formatting/formatter-test-utils.h"
+#include "verible/verilog/formatting/formatter.h"
+
+namespace verilog {
+namespace formatter {
+namespace {
+
+// Regression for https://github.com/chipsalliance/verible/issues/2547:
+// A localparam initialized to a sum of long macros must converge: infix `+`
+// stays with the following operand so re-format does not oscillate between
+// `+\n`MACRO` and `+ `MACRO`.
+TEST(FormatterEndToEndTest, LongMacroSumLocalparamConverges) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {"module m;\n"
+       "  localparam N =\n"
+       "      `MACRO_GEN3_SCRAMBLE_LFSR_REGOUT\n"
+       "      + `MACRO_GEN3_SCRAMBLE_REGIN\n"
+       "      + `MACRO_GEN3_SCRAMBLE_REGOUT\n"
+       "      ;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam N =\n"
+       "  `MACRO_GEN3_SCRAMBLE_LFSR_REGOUT\n"
+       "  + `MACRO_GEN3_SCRAMBLE_REGIN\n"
+       "  + `MACRO_GEN3_SCRAMBLE_REGOUT;\n"
+       "endmodule\n"},
+      // Already in pass-1 form must stay stable.
+      {"module m;\n"
+       "  localparam N =\n"
+       "  `MACRO_GEN3_SCRAMBLE_LFSR_REGOUT\n"
+       "  + `MACRO_GEN3_SCRAMBLE_REGIN\n"
+       "  + `MACRO_GEN3_SCRAMBLE_REGOUT;\n"
+       "endmodule\n",
+       "module m;\n"
+       "  localparam N =\n"
+       "  `MACRO_GEN3_SCRAMBLE_LFSR_REGOUT\n"
+       "  + `MACRO_GEN3_SCRAMBLE_REGIN\n"
+       "  + `MACRO_GEN3_SCRAMBLE_REGOUT;\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;  // default column_limit (100)
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Regression for https://github.com/chipsalliance/verible/issues/2544:
+// Wrapping a $bits(...)'(...) cast may leave `MACRO at EOL, reclassifying
+// MacroIdentifier as MacroIdItem. FormatEquivalent must accept that, and
+// formatting must still pass verification.
+TEST(FormatterEndToEndTest, MacroBeforeCloseParenFormatEquivalent) {
+  static constexpr std::string_view kInput =
+      "module m;\n"
+      "  assign result_value = $bits(result_value)'( "
+      "compare_bytes(input_data[DATA_WIDTH_INT-1:0], "
+      "input_datak[STROBE_WIDTH_INT-1:0], `TOKEN_BYTE) );\n"
+      "endmodule\n";
+  FormatStyle style;
+  std::ostringstream stream;
+  const auto status = FormatVerilog(kInput, "<filename>", style, stream);
+  EXPECT_OK(status) << status.message();
+  EXPECT_THAT(stream.str(), testing::HasSubstr("`TOKEN_BYTE"));
+}
+
+// Regression for https://github.com/chipsalliance/verible/issues/2542:
+// Continuation EOL comments after a wrapped assign must keep a stable column
+// across re-format (convergence).
+TEST(FormatterEndToEndTest, ContinuationCommentAfterWrappedAssignConverges) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// Comments originally column-aligned after a wrapped assign
+       "module m;\n"
+       "  assign status_ur = !(status_sc || status_ca ||\n"
+       "    status_crs);      // Completions with a Reserved Completion\n"
+       "                      // Status value are treated as UR\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign status_ur =\n"
+       "      !(status_sc || status_ca || status_crs);  // Completions with a "
+       "Reserved Completion\n"
+       "                                                // Status value are "
+       "treated as UR\n"
+       "endmodule\n"},
+      {// Previously mis-aligned continuation is not treated as a continuation
+       // (column delta > 1) and must still converge
+       "module m;\n"
+       "  assign status_ur = !(status_sc || status_ca ||\n"
+       "    status_crs);      // Completions with a Reserved Completion\n"
+       "                                                                       "
+       "// Status value are treated as UR\n"
+       "endmodule\n",
+       "module m;\n"
+       "  assign status_ur =\n"
+       "      !(status_sc || status_ca || status_crs);  // Completions with a "
+       "Reserved Completion\n"
+       "  // Status value are treated as UR\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;  // default column_limit (100)
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Regression for https://github.com/chipsalliance/verible/issues/2540:
+// Trailing EOL comment after `end` before `else if` must not change whether
+// the else-if assignment stays on one line across re-format (convergence).
+TEST(FormatterEndToEndTest, EndElseIfWithEOLCommentConverges) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// Comment on its own line between end and else if
+       "module m;\n"
+       "  always_comb begin\n"
+       "    case (state)\n"
+       "      STATE_A: begin\n"
+       "        if (cond_aaaa) next_state_value = STATE_B;\n"
+       "        else if (cond_bbbb) begin\n"
+       "          next_state_value = STATE_B;\n"
+       "        end\n"
+       "        // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n"
+       "        else if (cond_cccc) next_state_value = STATE_C;\n"
+       "      end\n"
+       "    endcase\n"
+       "  end\n"
+       "endmodule\n",
+       "module m;\n"
+       "  always_comb begin\n"
+       "    case (state)\n"
+       "      STATE_A: begin\n"
+       "        if (cond_aaaa) next_state_value = STATE_B;\n"
+       "        else if (cond_bbbb) begin\n"
+       "          next_state_value = STATE_B;\n"
+       "        end  // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n"
+       "        else if (cond_cccc) next_state_value = STATE_C;\n"
+       "      end\n"
+       "    endcase\n"
+       "  end\n"
+       "endmodule\n"},
+      {// Same construct with comment already on the end line
+       "module m;\n"
+       "  always_comb begin\n"
+       "    case (state)\n"
+       "      STATE_A: begin\n"
+       "        if (cond_aaaa) next_state_value = STATE_B;\n"
+       "        else if (cond_bbbb) begin\n"
+       "          next_state_value = STATE_B;\n"
+       "        end  // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n"
+       "        else if (cond_cccc) next_state_value = STATE_C;\n"
+       "      end\n"
+       "    endcase\n"
+       "  end\n"
+       "endmodule\n",
+       "module m;\n"
+       "  always_comb begin\n"
+       "    case (state)\n"
+       "      STATE_A: begin\n"
+       "        if (cond_aaaa) next_state_value = STATE_B;\n"
+       "        else if (cond_bbbb) begin\n"
+       "          next_state_value = STATE_B;\n"
+       "        end  // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n"
+       "        else if (cond_cccc) next_state_value = STATE_C;\n"
+       "      end\n"
+       "    endcase\n"
+       "  end\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;  // default column_limit (100)
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Regression for https://github.com/chipsalliance/verible/issues/2008
+// (also https://github.com/chipsalliance/verible/issues/2474 and
+// https://github.com/chipsalliance/verible/issues/2063):
+// Non-ANSI "input wire signed" used to abort in the tree-unwrapper because
+// the CST visited "signed" before "wire", which is the reverse of source
+// order.
+TEST(FormatterEndToEndTest, NonAnsiWireSignedModulePortDoesNotAbort) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {// Original issue #2008 sample
+       "module uut( sig1 );\n"
+       "\n"
+       "input wire signed [15:0] sig1;\n"
+       "\n"
+       "endmodule\n",
+       "module uut (\n"
+       "    sig1\n"
+       ");\n"
+       "\n"
+       "  input wire signed [15:0] sig1;\n"
+       "\n"
+       "endmodule\n"},
+      {// Issue #2474 sample
+       "module myModule (\n"
+       "    myinput\n"
+       ");\n"
+       "input wire signed [7:0] myInput;\n"
+       "endmodule\n",
+       "module myModule (\n"
+       "    myinput\n"
+       ");\n"
+       "  input wire signed [7:0] myInput;\n"
+       "endmodule\n"},
+      {// Issue #2063 sample: signed wire with no packed dimensions
+       "module top(a);\n"
+       "    input wire signed a;\n"
+       "endmodule\n",
+       "module top (\n"
+       "    a\n"
+       ");\n"
+       "  input wire signed a;\n"
+       "endmodule\n"},
+      {// Same production with logic instead of wire
+       "module uut(sig1);\n"
+       "input logic signed [15:0] sig1;\n"
+       "endmodule\n",
+       "module uut (\n"
+       "    sig1\n"
+       ");\n"
+       "  input logic signed [15:0] sig1;\n"
+       "endmodule\n"},
+      {// output / inout net types
+       "module uut(sig1, sig2);\n"
+       "output wire signed [15:0] sig1;\n"
+       "inout wire signed [7:0] sig2;\n"
+       "endmodule\n",
+       "module uut (\n"
+       "    sig1,\n"
+       "    sig2\n"
+       ");\n"
+       "  output wire signed [15:0] sig1;\n"
+       "  inout wire signed [7:0] sig2;\n"
+       "endmodule\n"},
+      {// unsigned is the same production
+       "module uut(sig1);\n"
+       "input wire unsigned [15:0] sig1;\n"
+       "endmodule\n",
+       "module uut (\n"
+       "    sig1\n"
+       ");\n"
+       "  input wire unsigned [15:0] sig1;\n"
+       "endmodule\n"},
+      {// ANSI form already worked; keep as a regression
+       "module uut(input wire signed [15:0] sig1);\n"
+       "endmodule\n",
+       "module uut (\n"
+       "    input wire signed [15:0] sig1\n"
+       ");\n"
+       "endmodule\n"},
+      {// Non-ANSI without signed still works
+       "module uut(sig1);\n"
+       "input wire [15:0] sig1;\n"
+       "endmodule\n",
+       "module uut (\n"
+       "    sig1\n"
+       ");\n"
+       "  input wire [15:0] sig1;\n"
+       "endmodule\n"},
+      {// Non-ANSI signed without net type still works
+       "module uut(sig1);\n"
+       "input signed [15:0] sig1;\n"
+       "endmodule\n",
+       "module uut (\n"
+       "    sig1\n"
+       ");\n"
+       "  input signed [15:0] sig1;\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;  // default column_limit (100)
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+}  // namespace
+}  // namespace formatter
+}  // namespace verilog
diff --git a/verible/verilog/formatting/formatter_macro_test.cc b/verible/verilog/formatting/formatter_macro_test.cc
new file mode 100644
index 0000000..25f4b90
--- /dev/null
+++ b/verible/verilog/formatting/formatter_macro_test.cc
@@ -0,0 +1,555 @@
+// Copyright 2017-2026 The Verible Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Test cases in this file should be *insensitive* to wrapping penalties.
+// Penalty-sensitive tests belong in formatter-tuning_test.cc.
+
+#include "gtest/gtest.h"
+#include "verible/verilog/formatting/formatter-test-utils.h"
+
+namespace verilog {
+namespace formatter {
+namespace {
+
+static constexpr FormatterTestCase kMacroFormatterTestCases[] = {
+    // preprocessor test cases
+    {"`include    \"path/to/file.vh\"\n", "`include \"path/to/file.vh\"\n"},
+    {"`include    `\"path/to/file.vh`\"\n", "`include `\"path/to/file.vh`\"\n"},
+    {"`define    FOO\n", "`define FOO\n"},
+    {"`define    FOO   BAR\n", "`define FOO BAR\n"},
+    {"`define    FOO\n"
+     "`define  BAR\n",
+     "`define FOO\n"
+     "`define BAR\n"},
+    {"`define FOO_``BAR 1\n", "`define FOO_``BAR 1\n"},
+    {"`define FOO_```BAR 1\n", "`define FOO_```BAR 1\n"},
+    {"`define FOO ``BAR\n", "`define FOO ``BAR\n"},
+    {"`define A``B``C 2\n", "`define A``B``C 2\n"},
+    {"`define A(x)``y\n", "`define A(x) ``y\n"},
+    {"`define    FOO_``BAR\n", "`define FOO_``BAR\n"},
+    {"`ifndef    FOO\n"
+     "`endif // FOO\n",
+     "`ifndef FOO\n"
+     "`endif  // FOO\n"},
+    {"`ifndef    FOO\n"
+     "`define   BAR\n"
+     "`endif\n",
+     "`ifndef FOO\n"
+     "`define BAR\n"
+     "`endif\n"},
+    {"`ifndef    FOO\n"
+     "`define   BAR\n\n"  // one more blank line
+     "`endif\n",
+     "`ifndef FOO\n"
+     "`define BAR\n\n"
+     "`endif\n"},
+    {"`define    FOO   \\\n"
+     "  BAR\n",
+     "`define FOO \\\n"  // TODO(b/72527558): right align '\'s to column limit
+     "  BAR\n"},
+    {"`define    FOOOOOOOOOOOOOOOO   \\\n"
+     "  BAAAAAAAAAAAAAAAAR BAAAAAAAAAAAAAZ;\n",
+     "`define FOOOOOOOOOOOOOOOO \\\n"  // macro text starts at '\'
+     "  BAAAAAAAAAAAAAAAAR BAAAAAAAAAAAAAZ;\n"},
+    {"`ifdef      FOO\n"
+     "  `fine()\n"
+     "`else\n"
+     "  `error()\n"
+     "`endif\n",
+     "`ifdef FOO\n"
+     "`fine()\n"
+     "`else\n"
+     "`error()\n"
+     "`endif\n"},
+    {"`ifdef      FOO\n"
+     "  `fine()\n"
+     "`else // trouble\n"
+     "  `error()\n"
+     "`endif\n",
+     "`ifdef FOO\n"
+     "`fine()\n"
+     "`else  // trouble\n"
+     "`error()\n"
+     "`endif\n"},
+    {"`ifdef      FOO\n"
+     "  `fine()\n"
+     "`else /* trouble */\n"
+     "  `error()\n"
+     "`endif\n",
+     "`ifdef FOO\n"
+     "`fine()\n"
+     "`else  /* trouble */\n"
+     "`error()\n"
+     "`endif\n"},
+    {"    // lonely comment\n", "// lonely comment\n"},
+    {"    // first comment\n"
+     "  // last comment\n",
+     "// first comment\n"
+     "// last comment\n"},
+    {"    // starting comment\n"
+     "  `define   FOO\n",
+     "// starting comment\n"
+     "`define FOO\n"},
+    {"  `define   FOO\n"
+     "   // trailing comment\n",
+     "`define FOO\n"
+     "// trailing comment\n"},
+    {"  `define   FOO\n"
+     "   // trailing comment 1\n"
+     "      // trailing comment 2\n",
+     "`define FOO\n"
+     "// trailing comment 1\n"
+     "// trailing comment 2\n"},
+    {
+        "  `define   FOO    \\\n"  // multiline macro definition
+        " 1\n",
+        "`define FOO \\\n"
+        " 1\n"  // TODO(b/141517267): Reflowing macro definitions
+    },
+    {"`define FOO    \\\n"  // multiline macro definition
+     "        b\n",
+     "`define FOO \\\n"  // no need to align '\'
+     "        b\n"},
+    {"`define FOO    \\\n"  // multiline macro definition
+     "        a +    \\\n"
+     "        b\n",
+     "`define FOO    \\\n"  // preserve spacing before '\'
+     "        a +    \\\n"  // to stay aligned with this one
+     "        b\n"},
+    {"    // comment with backslash\\\n", "// comment with backslash\\\n"},
+    {// macro with MacroArg tokens as arguments
+     "`FOOOOOO(\nbar1...\n,\nbar2...\n,\nbar3...\n,\nbar4\n)\n",
+     "`FOOOOOO(bar1..., bar2..., bar3...,\n"
+     "         bar4)\n"},
+    {// macro declaration exceeds line length limit
+     "`F_MACRO(looooooong_type if_it_fits_I_sits)\n",
+     "`F_MACRO(\n"
+     "    looooooong_type if_it_fits_I_sits)\n"},
+    {// macro call with not fitting arguments
+     "`MACRO_FFFFFFFFFFF("
+     "type_a_aaaa,type_b_bbbbb,"
+     "type_c_cccccc,type_d_dddddddd,"
+     "type_e_eeeeeeee,type_f_ffff)\n",
+     "`MACRO_FFFFFFFFFFF(\n"
+     "    type_a_aaaa, type_b_bbbbb,\n"
+     "    type_c_cccccc, type_d_dddddddd,\n"
+     "    type_e_eeeeeeee, type_f_ffff)\n"},
+    {// nested macro call
+     "`MACRO_FFFFFFFFFFF( "
+     "`A(type_a_aaaa), `B(type_b_bbbbb), "
+     "`C(type_c_cccccc), `D(type_d_dddddddd), "
+     "`E(type_e_eeeeeeee), `F(type_f_ffff))\n",
+     "`MACRO_FFFFFFFFFFF(`A(type_a_aaaa),\n"
+     "                   `B(type_b_bbbbb),\n"
+     "                   `C(type_c_cccccc),\n"
+     "                   `D(type_d_dddddddd),\n"
+     "                   `E(type_e_eeeeeeee),\n"
+     "                   `F(type_f_ffff))\n"},
+    {// two-level nested macro call
+     "`MACRO_FFFFFFFFFFF( "
+     "`A(type_a_aaaa, `B(type_b_bbbbb)), "
+     "`C(type_c_cccccc, `D(type_d_dddddddd)), "
+     "`E(type_e_eeeeeeee, `F(type_f_ffff)))\n",
+     "`MACRO_FFFFFFFFFFF(\n"
+     "    `A(type_a_aaaa, `B(type_b_bbbbb)),\n"
+     "    `C(type_c_cccccc,\n"
+     "       `D(type_d_dddddddd)),\n"
+     "    `E(type_e_eeeeeeee,\n"
+     "       `F(type_f_ffff)))\n"},
+    {// three-level nested macro call
+     "`MACRO_FFFFFFFFFFF(`A(type_a_aaaa,"
+     "`B(type_b_bbbbb,`C(type_c_cccccc))),"
+     "`D(type_d_dddddddd,`E(type_e_eeeeeeee,"
+     "`F(type_f_ffff))))\n",
+     "`MACRO_FFFFFFFFFFF(\n"
+     "    `A(type_a_aaaa,\n"
+     "       `B(type_b_bbbbb,\n"
+     "          `C(type_c_cccccc))),\n"
+     "    `D(type_d_dddddddd,\n"
+     "       `E(type_e_eeeeeeee,\n"
+     "          `F(type_f_ffff))))\n"},
+    {// macro call with MacroArg tokens as arugments and with semicolon
+     "`FOOOOOO(\nbar1...\n,\nbar2...\n,\nbar3...\n,\nbar4\n);\n",
+     "`FOOOOOO(bar1..., bar2..., bar3...,\n"
+     "         bar4);\n"},
+    {// macro declaration exceeds line length limit and contains semicolon
+     "`F_MACRO(looooooong_type if_it_fits_I_sits);\n",
+     "`F_MACRO(\n"
+     "    looooooong_type if_it_fits_I_sits);\n"},
+    {// macro call with not fitting arguments and semicolon
+     "`MACRO_FFFFFFFFFFF("
+     "type_a_aaaa,type_b_bbbbb,"
+     "type_c_cccccc,type_d_dddddddd,"
+     "type_e_eeeeeeee,type_f_ffff);\n",
+     "`MACRO_FFFFFFFFFFF(\n"
+     "    type_a_aaaa, type_b_bbbbb,\n"
+     "    type_c_cccccc, type_d_dddddddd,\n"
+     "    type_e_eeeeeeee, type_f_ffff);\n"},
+    {// nested macro call with semicolon
+     "`MACRO_FFFFFFFFFFF( "
+     "`A(type_a_aaaa), `B(type_b_bbbbb), "
+     "`C(type_c_cccccc), `D(type_d_dddddddd), "
+     "`E(type_e_eeeeeeee), `F(type_f_ffff));\n",
+     "`MACRO_FFFFFFFFFFF(`A(type_a_aaaa),\n"
+     "                   `B(type_b_bbbbb),\n"
+     "                   `C(type_c_cccccc),\n"
+     "                   `D(type_d_dddddddd),\n"
+     "                   `E(type_e_eeeeeeee),\n"
+     "                   `F(type_f_ffff));\n"},
+    {// two-level nested macro call with semicolon
+     "`MACRO_FFFFFFFFFFF( "
+     "`A(type_a_aaaa, `B(type_b_bbbbb)), "
+     "`C(type_c_cccccc, `D(type_d_dddddddd)), "
+     "`E(type_e_eeeeeeee, `F(type_f_ffff)));\n",
+     "`MACRO_FFFFFFFFFFF(\n"
+     "    `A(type_a_aaaa, `B(type_b_bbbbb)),\n"
+     "    `C(type_c_cccccc,\n"
+     "       `D(type_d_dddddddd)),\n"
+     "    `E(type_e_eeeeeeee,\n"
+     "       `F(type_f_ffff)));\n"},
+    {// three-level nested macro call with semicolon
+     "`MACRO_FFFFFFFFFFF(`A(type_a_aaaa,"
+     "`B(type_b_bbbbb,`C(type_c_cccccc))),"
+     "`D(type_d_dddddddd,`E(type_e_eeeeeeee,"
+     "`F(type_f_ffff))));\n",
+     "`MACRO_FFFFFFFFFFF(\n"
+     "    `A(type_a_aaaa,\n"
+     "       `B(type_b_bbbbb,\n"
+     "          `C(type_c_cccccc))),\n"
+     "    `D(type_d_dddddddd,\n"
+     "       `E(type_e_eeeeeeee,\n"
+     "          `F(type_f_ffff))));\n"},
+    {// macro call with no args
+     "`FOOOOOO()\n", "`FOOOOOO()\n"},
+    {// macro call with no args and semicolon
+     "`FOOOOOO();\n", "`FOOOOOO();\n"},
+    {// macro call with no args and semicolon separated by space
+     "`FOOOOOO() ;\n", "`FOOOOOO();\n"},
+    {// macro call with comments in argument list
+     "`FOO(aa, //aa\nbb , // bb\ncc)\n",
+     "`FOO(aa,  //aa\n"
+     "     bb,  // bb\n"
+     "     cc)\n"},
+    {// macro call with comment before first argument
+     "`FOO(//aa\naa, //bb\nbb , // cc\ncc)\n",
+     "`FOO(  //aa\n"
+     "    aa,  //bb\n"
+     "    bb,  // cc\n"
+     "    cc)\n"},
+    {// macro call with argument including trailing EOL comment
+     "`FOO(aa, bb,//cc\ndd)\n",
+     "`FOO(aa, bb,  //cc\n"
+     "     dd)\n"},
+    {// macro call with argument including EOL comment on own line
+     "`FOOOO(aa, bb,\n//cc\ndd)\n",
+     "`FOOOO(aa, bb,\n"
+     "       //cc\n"
+     "       dd)\n"},
+    {"  // leading comment\n"
+     "  `define   FOO    \\\n"  // multiline macro definition
+     "1\n"
+     "   // trailing comment\n",
+     "// leading comment\n"
+     "`define FOO \\\n"
+     "1\n"  // TODO(b/141517267): Reflowing macro definitions
+     "// trailing comment\n"},
+    {// macro call after define
+     "`define   FOO   BAR\n"
+     "  `FOO( bar )\n",
+     "`define FOO BAR\n"
+     "`FOO(bar)\n"},
+    {// multiple argument macro call
+     "  `FOO( bar , baz )\n", "`FOO(bar, baz)\n"},
+    {// long macro call breaking
+     " `ASSERT_INIT(S, (D == 4 && K inside {0, 1}) ||"
+     " (D == 3 && K== 4))\n",
+     "`ASSERT_INIT(\n"
+     "    S, (D == 4 && K inside {0, 1}) ||\n"
+     "           (D == 3 && K == 4))\n"},
+    {// long macro call breaking
+     " `AINIT(S, (D == 4 && K inside {0, 1}) ||"
+     " (D == 3 && K== 4))\n",
+     "`AINIT(S, (D == 4 && K inside {0, 1}) ||\n"
+     "              (D == 3 && K == 4))\n"},
+    {// long macro call breaking
+     " `ASSERT_INIT(S, D == 4 && K inside {0, 1})\n",
+     "`ASSERT_INIT(S,\n"
+     "             D == 4 && K inside {0, 1})\n"},
+    {// macro call in function
+     "function void foo( );   foo=`FOO( bar , baz ) ; endfunction\n",
+     "function void foo();\n"
+     "  foo = `FOO(bar, baz);\n"
+     "endfunction\n"},
+    {// nested macro call in function
+     "function void foo( );   foo=`FOO( `BAR ( baz ) ) ; endfunction\n",
+     "function void foo();\n"
+     "  foo = `FOO(`BAR(baz));\n"
+     "endfunction\n"},
+    {// macro call in class
+     "class foo;    `FOO  ( bar , baz ) ; endclass\n",
+     "class foo;\n"
+     "  `FOO(bar, baz);\n"
+     "endclass\n"},
+    {// nested macro call in class
+     "class foo;    `FOO  ( `BAR ( baz1 , baz2 ) ) ; endclass\n",
+     "class foo;\n"
+     "  `FOO(`BAR(baz1, baz2));\n"
+     "endclass\n"},
+    {// multi-line macro arg "aaaa..." should start on its own line,
+     // even if its first line would fit under the column limit
+     "`CHECK_FATAL(rd_tr,\n"
+     "             aaaa     == zzz;\n"
+     "             ggg      == vv::w;,\n"
+     "             \"Failed to ..........\")\n",
+     "`CHECK_FATAL(rd_tr,\n"
+     "             aaaa     == zzz;\n"
+     "             ggg      == vv::w;,\n"
+     "             \"Failed to ..........\")\n"},
+    {// macro call nested with function call containing an ifdef
+     "`J(D(`ifdef e))\n",
+     "`J(D(\n"
+     "   `ifdef e))\n"},
+
+    // `uvm macros indenting
+    {
+        // simple test case
+        "`uvm_object_utils_begin(aa)\n"
+        "`uvm_field_int(bb, UVM_DEFAULT)\n"
+        "`uvm_field_int(cc, UVM_DEFAULT)\n"
+        "`uvm_object_utils_end\n",
+        "`uvm_object_utils_begin(aa)\n"
+        "  `uvm_field_int(bb, UVM_DEFAULT)\n"
+        "  `uvm_field_int(cc, UVM_DEFAULT)\n"
+        "`uvm_object_utils_end\n",
+    },
+    {// multiple uvm.*begin - uvm.*end ranges
+     "`uvm_object_utils_begin(aa)\n"
+     "`uvm_field_int(bb, UVM_DEFAULT)\n"
+     "`uvm_field_int(cc, UVM_DEFAULT)\n"
+     "`uvm_object_utils_end\n"
+     "`uvm_field_int(bb, UVM_DEFAULT)\n"
+     "`uvm_field_int(cc, UVM_DEFAULT)\n"
+     "`uvm_object_utils_begin(bb)\n"
+     "`uvm_field_int(bb, UVM_DEFAULT)\n"
+     "`uvm_field_int(cc, UVM_DEFAULT)\n"
+     "`uvm_object_utils_end\n"
+     "`uvm_field_int(bb, UVM_DEFAULT)\n"
+     "`uvm_field_int(cc, UVM_DEFAULT)\n",
+     "`uvm_object_utils_begin(aa)\n"
+     "  `uvm_field_int(bb, UVM_DEFAULT)\n"
+     "  `uvm_field_int(cc, UVM_DEFAULT)\n"
+     "`uvm_object_utils_end\n"
+     "`uvm_field_int(bb, UVM_DEFAULT)\n"
+     "`uvm_field_int(cc, UVM_DEFAULT)\n"
+     "`uvm_object_utils_begin(bb)\n"
+     "  `uvm_field_int(bb, UVM_DEFAULT)\n"
+     "  `uvm_field_int(cc, UVM_DEFAULT)\n"
+     "`uvm_object_utils_end\n"
+     "`uvm_field_int(bb, UVM_DEFAULT)\n"
+     "`uvm_field_int(cc, UVM_DEFAULT)\n"},
+    {
+        // empty uvm.*begin - uvm.*end range
+        "`uvm_component_utils_begin(aa)\n"
+        "`uvm_component_utils_end\n",
+        "`uvm_component_utils_begin(aa)\n"
+        "`uvm_component_utils_end\n",
+    },
+    {
+        // uvm_field_utils
+        "`uvm_field_utils_begin(aa)\n"
+        "`uvm_field_int(bb, UVM_DEFAULT)\n"
+        "`uvm_field_int(cc, UVM_DEFAULT)\n"
+        "`uvm_field_utils_end\n",
+        "`uvm_field_utils_begin(aa)\n"
+        "  `uvm_field_int(bb, UVM_DEFAULT)\n"
+        "  `uvm_field_int(cc, UVM_DEFAULT)\n"
+        "`uvm_field_utils_end\n",
+    },
+    {
+        // uvm_component
+        "`uvm_component_utils_begin(aa)\n"
+        "`uvm_field_int(bb, UVM_DEFAULT)\n"
+        "`uvm_field_int(cc, UVM_DEFAULT)\n"
+        "`uvm_component_utils_end\n",
+        "`uvm_component_utils_begin(aa)\n"
+        "  `uvm_field_int(bb, UVM_DEFAULT)\n"
+        "  `uvm_field_int(cc, UVM_DEFAULT)\n"
+        "`uvm_component_utils_end\n",
+    },
+    {
+        // nested uvm macros
+        "`uvm_field_int(l0, UVM_DEFAULT)\n"
+        "`uvm_component_utils_begin(l0)\n"
+        "`uvm_field_int(l1, UVM_DEFAULT)\n"
+        "`uvm_component_utils_begin(l1)\n"
+        "`uvm_field_int(l2, UVM_DEFAULT)\n"
+        "`uvm_component_utils_begin(l2)\n"
+        "`uvm_field_int(l3, UVM_DEFAULT)\n"
+        "`uvm_component_utils_end\n"
+        "`uvm_field_int(l2, UVM_DEFAULT)\n"
+        "`uvm_component_utils_end\n"
+        "`uvm_field_int(l1, UVM_DEFAULT)\n"
+        "`uvm_component_utils_end\n"
+        "`uvm_field_int(l0, UVM_DEFAULT)\n",
+        "`uvm_field_int(l0, UVM_DEFAULT)\n"
+        "`uvm_component_utils_begin(l0)\n"
+        "  `uvm_field_int(l1, UVM_DEFAULT)\n"
+        "  `uvm_component_utils_begin(l1)\n"
+        "    `uvm_field_int(l2, UVM_DEFAULT)\n"
+        "    `uvm_component_utils_begin(l2)\n"
+        "      `uvm_field_int(l3, UVM_DEFAULT)\n"
+        "    `uvm_component_utils_end\n"
+        "    `uvm_field_int(l2, UVM_DEFAULT)\n"
+        "  `uvm_component_utils_end\n"
+        "  `uvm_field_int(l1, UVM_DEFAULT)\n"
+        "`uvm_component_utils_end\n"
+        "`uvm_field_int(l0, UVM_DEFAULT)\n",
+    },
+    {
+        // non-uvm macro
+        "`my_macro_begin(aa)\n"
+        "`my_field(b)\n"
+        "`my_field(c)\n"
+        "`my_macro_end\n",
+        "`my_macro_begin(aa)\n"
+        "`my_field(b)\n"
+        "`my_field(c)\n"
+        "`my_macro_end\n",
+    },
+    {
+        // unbalanced uvm macros: missing uvm.*end macro
+        "`uvm_component_utils_begin(aa)\n"
+        "`uvm_field_int(bb, UVM_DEFAULT)\n"
+        "`uvm_field_int(cc, UVM_DEFAULT)\n",
+        "`uvm_component_utils_begin(aa)\n"
+        "`uvm_field_int(bb, UVM_DEFAULT)\n"
+        "`uvm_field_int(cc, UVM_DEFAULT)\n",
+    },
+    {
+        // unbalanced uvm macros: missing uvm.*begin macro
+        "`uvm_field_int(bb, UVM_DEFAULT)\n"
+        "`uvm_field_int(cc, UVM_DEFAULT)\n"
+        "`uvm_component_utils_end\n",
+        "`uvm_field_int(bb, UVM_DEFAULT)\n"
+        "`uvm_field_int(cc, UVM_DEFAULT)\n"
+        "`uvm_component_utils_end\n",
+    },
+    {// unbalanced uvm macros: missing _begin macro between
+     // matching uvm.*begin-uvm.*end macros
+     "`uvm_component_utils_begin(aa)\n"
+     "`uvm_field_int(bb, UVM_DEFAULT)\n"
+     "`uvm_field_int(cc, UVM_DEFAULT)\n"
+     "`uvm_component_utils_end\n"
+     "`uvm_field_int(bb, UVM_DEFAULT)\n"
+     "`uvm_field_int(bb, UVM_DEFAULT)\n"
+     "`uvm_field_int(cc, UVM_DEFAULT)\n"
+     "`uvm_component_utils_end\n"
+     "`uvm_field_int(bb, UVM_DEFAULT)\n"
+     "`uvm_component_utils_begin(aa)\n"
+     "`uvm_field_int(bb, UVM_DEFAULT)\n"
+     "`uvm_field_int(cc, UVM_DEFAULT)\n"
+     "`uvm_component_utils_end\n",
+     "`uvm_component_utils_begin(aa)\n"
+     "  `uvm_field_int(bb, UVM_DEFAULT)\n"
+     "  `uvm_field_int(cc, UVM_DEFAULT)\n"
+     "`uvm_component_utils_end\n"
+     "`uvm_field_int(bb, UVM_DEFAULT)\n"
+     "`uvm_field_int(bb, UVM_DEFAULT)\n"
+     "`uvm_field_int(cc, UVM_DEFAULT)\n"
+     "`uvm_component_utils_end\n"
+     "`uvm_field_int(bb, UVM_DEFAULT)\n"
+     "`uvm_component_utils_begin(aa)\n"
+     "  `uvm_field_int(bb, UVM_DEFAULT)\n"
+     "  `uvm_field_int(cc, UVM_DEFAULT)\n"
+     "`uvm_component_utils_end\n"},
+
+    // top-level directive test cases
+    {"`timescale  1ns/1ps\n",  //
+     "`timescale 1ns / 1ps\n"},
+
+    // Multiple compiler directives should remain on separate lines
+    // (regression test for bug where they were merged onto one line)
+    {"`timescale 1 ps / 1 ps\n"
+     "`default_nettype none\n",
+     "`timescale 1 ps / 1 ps\n"
+     "`default_nettype none\n"},
+    {"`resetall\n"
+     "`timescale 1ns/1ps\n"
+     "`default_nettype wire\n",
+     "`resetall\n"
+     "`timescale 1ns / 1ps\n"
+     "`default_nettype wire\n"},
+    // Test with multiple different compiler directives
+    {"`resetall\n"
+     "`celldefine\n"
+     "`timescale 1ns/1ps\n"
+     "`default_nettype none\n",
+     "`resetall\n"
+     "`celldefine\n"
+     "`timescale 1ns / 1ps\n"
+     "`default_nettype none\n"},
+    // Test with compiler directives before module
+    {"`timescale 1ps/1ps\n"
+     "`default_nettype none\n"
+     "module foo;endmodule\n",
+     "`timescale 1ps / 1ps\n"
+     "`default_nettype none\n"
+     "module foo;\nendmodule\n"},
+    // Test with various compiler directives
+    {"`suppress_faults\n"
+     "`enable_portfaults\n"
+     "`delay_mode_distributed\n",
+     "`suppress_faults\n"
+     "`enable_portfaults\n"
+     "`delay_mode_distributed\n"},
+    {"`default_decay_time 10\n"
+     "`default_trireg_strength 50\n",
+     "`default_decay_time 10\n"
+     "`default_trireg_strength 50\n"},
+    // Alignment should ignore compiler directives; declarations align normally.
+    // Place directives at top-level between modules (valid SystemVerilog).
+    {"`timescale 1ns/1ps\n"
+     "module m;\n"
+     "  logic a;\n"
+     "  logic very_long_name;\n"
+     "endmodule\n"
+     "`default_nettype none\n"
+     "module n;\n"
+     "  logic b;\n"
+     "endmodule\n",
+     "`timescale 1ns / 1ps\n"
+     "module m;\n"
+     "  logic a;\n"
+     "  logic very_long_name;\n"
+     "endmodule\n"
+     "`default_nettype none\n"
+     "module n;\n"
+     "  logic b;\n"
+     "endmodule\n"},
+    {"`begin_keywords \"1800-2017\"\n"
+     "module test;endmodule\n"
+     "`end_keywords\n",
+     "`begin_keywords \"1800-2017\"\n"
+     "module test;\nendmodule\n"
+     "`end_keywords\n"},
+
+};
+
+TEST(FormatterEndToEndTest, MacroFormatterTestCases) {
+  RunFormatterTestCases40(kMacroFormatterTestCases);
+}
+
+}  // namespace
+}  // namespace formatter
+}  // namespace verilog
diff --git a/verible/verilog/formatting/formatter_module_test.cc b/verible/verilog/formatting/formatter_module_test.cc
new file mode 100644
index 0000000..4290e5e
--- /dev/null
+++ b/verible/verilog/formatting/formatter_module_test.cc
@@ -0,0 +1,3025 @@
+// Copyright 2017-2026 The Verible Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Test cases in this file should be *insensitive* to wrapping penalties.
+// Penalty-sensitive tests belong in formatter-tuning_test.cc.
+
+#include "gtest/gtest.h"
+#include "verible/verilog/formatting/formatter-test-utils.h"
+
+namespace verilog {
+namespace formatter {
+namespace {
+
+static constexpr FormatterTestCase kModuleFormatterTestCases[] = {
+    // parameter test cases
+    {
+        "  parameter  int   foo=0 ;",
+        "parameter int foo = 0;\n",
+    },
+    {
+        "  parameter  int   foo=bar [ 0 ] ;",  // index expression
+        "parameter int foo = bar[0];\n",
+    },
+    {
+        "  parameter  int   foo=bar [ a+b ] ;",  // binary inside index expr
+        "parameter int foo = bar[a+b];\n",       // allowed to be 0 spaces
+                                                 // (preserved)
+    },
+    {
+        "  parameter  int   foo=bar [ a+ b ] ;",  // binary inside index expr
+        "parameter int foo = bar[a+b];\n",        // allowed to be 0 spaces
+                                                  // (symmetrized)
+    },
+    {
+        "  parameter  int   foo=bar [ a +b ] ;",  // compact binary inside
+        "parameter int foo = bar[a+b];\n",        // index expression
+    },
+    {
+        "  parameter  int   foo=bar [ a  +b ] ;",  // compact binary inside
+        "parameter int foo = bar[a+b];\n",         // index expression
+    },
+    {
+        // with line continuations
+        "  parameter  \\\nint   \\\nfoo=a+ \\\nb ;",
+        "parameter\\\n    int\\\n    foo = a +\\\n    b;\n",
+        // TODO(fangism): should text following a line continuation hang-indent?
+    },
+    // unary prefix expressions
+    {
+        "  parameter  int   foo=- 1 ;",
+        "parameter int foo = -1;\n",
+    },
+    {
+        "  parameter  int   foo=+ 7 ;",
+        "parameter int foo = +7;\n",
+    },
+    {
+        "  parameter  int   foo=- J ;",
+        "parameter int foo = -J;\n",
+    },
+    {
+        "  parameter  int   foo=- ( y ) ;",
+        "parameter int foo = -(y);\n",
+    },
+    {
+        "  parameter  int   foo=- ( z*y ) ;",
+        "parameter int foo = -(z * y);\n",
+    },
+    {
+        "  parameter  int   foo=-  z*- y  ;",
+        "parameter int foo = -z * -y;\n",
+    },
+    {
+        "  parameter  int   foo=( - 2 ) ;",  //
+        "parameter int foo = (-2);\n",
+    },
+    {
+        "  parameter  int   foo=$bar(-  z,- y ) ;",
+        "parameter int foo = $bar(-z, -y);\n",
+    },
+    {"  parameter int a=b&~(c<<d);", "parameter int a = b & ~(c << d);\n"},
+    {"  parameter int a=~~~~b;", "parameter int a = ~~~~b;\n"},
+    {"  parameter int a = ~ ~ ~ ~ b;", "parameter int a = ~~~~b;\n"},
+    {"  parameter int a   =   ~--b;", "parameter int a = ~--b;\n"},
+    {"  parameter int a   =   ~ --b;", "parameter int a = ~--b;\n"},
+    {"  parameter int a = ~ ++ b;", "parameter int a = ~++b;\n"},
+    {"  parameter int a=--b- --c;", "parameter int a = --b - --c;\n"},
+    // ^~ and ~^ are bitwise nor, but ^ ~ isn't
+    {"  parameter int a=b^~(c<<d);", "parameter int a = b ^~ (c << d);\n"},
+    {"  parameter int a=b~^(c<<d);", "parameter int a = b ~^ (c << d);\n"},
+    {"  parameter int a=b^ ~ (c<<d);", "parameter int a = b ^ ~(c << d);\n"},
+    {"  parameter int a=b ^ ~(c<<d);", "parameter int a = b ^ ~(c << d);\n"},
+
+    {"  parameter int a=b^~{c};", "parameter int a = b ^~ {c};\n"},
+    {"  parameter int a=b~^{c};", "parameter int a = b ~^ {c};\n"},
+    {"  parameter int a=b^ ~ {c};", "parameter int a = b ^ ~{c};\n"},
+    {"  parameter int a=b ^ ~{c};", "parameter int a = b ^ ~{c};\n"},
+
+    {"  parameter int a={a}^{b};", "parameter int a = {a} ^ {b};\n"},
+    {"  parameter int a={b}^(c);", "parameter int a = {b} ^ (c);\n"},
+    {"  parameter int a=b[0]^ {c};", "parameter int a = b[0] ^ {c};\n"},
+    {"  parameter int a={c}^a[b];", "parameter int a = {c} ^ a[b];\n"},
+    {"  parameter int a=(c)^{a[b]};", "parameter int a = (c) ^ {a[b]};\n"},
+
+    {"  parameter int a={^{a,^b},c};", "parameter int a = {^{a, ^b}, c};\n"},
+    {"  parameter int a=(a)^(^d[e]^{c});",
+     "parameter int a = (a) ^ (^d[e] ^ {c});\n"},
+    {"  parameter int a=(a)^(^d[e]^f[g]);",
+     "parameter int a = (a) ^ (^d[e] ^ f[g]);\n"},
+    {"  parameter int a=(b^(c^(d^e)));",
+     "parameter int a = (b ^ (c ^ (d ^ e)));\n"},
+    {"  parameter int a={b^{c^{d^e}}};",
+     "parameter int a = {b ^ {c ^ {d ^ e}}};\n"},
+    {"  parameter int a={b^{c[d^e]}};",
+     "parameter int a = {b ^ {c[d^e]}};\n"},  // allow 0 spaces inside "[d^e]"
+    {"  parameter int a={(b^c),(d^^e)};",
+     "parameter int a = {(b ^ c), (d ^ ^e)};\n"},
+
+    {"  parameter int a={(b[x]^{c[y]})};",
+     "parameter int a = {(b[x] ^ {c[y]})};\n"},
+    {"  parameter int a={d^^e[f] ^ (g)};",
+     "parameter int a = {d ^ ^e[f] ^ (g)};\n"},
+
+    // ~| is unary reduction NOR, |~ and | ~ aren't
+    {"  parameter int a=b| ~(c<<d);", "parameter int a = b | ~(c << d);\n"},
+    {"  parameter int a=b|~(c<<d);", "parameter int a = b | ~(c << d);\n"},
+    {"  parameter int a=b| ~| ( c<<d);", "parameter int a = b | ~|(c << d);\n"},
+    {"  parameter int a=b| ~| ~| ( c<<d);",
+     "parameter int a = b | ~|~|(c << d);\n"},
+    {"  parameter int a=b| ~~~( c<<d);",
+     "parameter int a = b | ~~~(c << d);\n"},
+    {
+        "  parameter  int   foo=- - 1 ;",  // double negative
+        "parameter int foo = - -1;\n",
+    },
+    {
+        "  parameter  int   ternary=1?2:3;",
+        "parameter int ternary = 1 ? 2 : 3;\n",
+    },
+    {
+        "  parameter  int   ternary=a?b:c;",
+        "parameter int ternary = a ? b : c;\n",
+    },
+    {
+        "  parameter  int   ternary=\"a\"?\"b\":\"c\";",
+        "parameter int ternary = \"a\" ? \"b\" : \"c\";\n",
+    },
+    {
+        "  parameter  int   t=`\"a`\"?`\"b`\":`\"c`\";",
+        "parameter int t = `\"a`\" ? `\"b`\" : `\"c`\";\n",
+    },
+    {
+        "  parameter  int   ternary=(a)?(b):(c);",
+        "parameter int ternary = (a) ? (b) : (c);\n",
+    },
+    {
+        "  parameter  int   ternary={a}?{b}:{c};",
+        "parameter int ternary = {a} ? {b} : {c};\n",
+    },
+    {
+        "  parameter  int   long_ternary=cond?long_option_t:long_option_f;",
+        "parameter int long_ternary = cond ?\n"
+        "    long_option_t : long_option_f;\n",
+    },
+    {
+        "  parameter  int   break_two=cond\n"
+        "? a_really_long_option_number_one:a_really_long_option_number_two;",
+        "parameter int break_two = cond ?\n"
+        "    a_really_long_option_number_one :\n"
+        "    a_really_long_option_number_two;\n",
+    },
+    {
+        "  assign   ternary=1?2:3;",
+        "assign ternary = 1 ? 2 : 3;\n",
+    },
+    {
+        "  assign   ternary=a?b:c;",
+        "assign ternary = a ? b : c;\n",
+    },
+    {
+        "  assign   ternary={a}?{b}:{c};",
+        "assign ternary = {a} ? {b} : {c};\n",
+    },
+    {
+        "  assign   break_two=cond\n"
+        "? a_really_long_option_number_one:a_really_long_option_number_two;",
+        "assign break_two = cond ?\n"
+        "    a_really_long_option_number_one :\n"
+        "    a_really_long_option_number_two;\n",
+    },
+    {
+        "assign prefetch_d     =\n"
+        "lookup_grant_ic0 ? (lookup_addr_aligned + ADDR) :\n"
+        "                   addr_i;",
+        "assign prefetch_d = lookup_grant_ic0 ?\n"
+        "    (lookup_addr_aligned + ADDR) :\n"
+        "    addr_i;\n",
+    },
+    {
+        "assign prefetch_d     =\n"
+        "lookup_grant_ic0 ? (lookup_addr + 1) :\n"
+        "                   addr_i;",
+        "assign prefetch_d = lookup_grant_ic0 ?\n"
+        "    (lookup_addr + 1) : addr_i;\n",
+    },
+    {
+        "module test;\n"
+        " assign next = // EOL\n"
+        "  foo ? '0 :\n"
+        "  cnt;\n"
+        "endmodule\n",
+        "module test;\n"
+        "  assign next =  // EOL\n"
+        "      foo ? '0 : cnt;\n"
+        "endmodule\n",
+    },
+    {
+        "module test;\n"
+        " assign next = foo // EOL\n"
+        "  ? '0 :\n"
+        "  cnt;\n"
+        "endmodule\n",
+        "module test;\n"
+        "  assign next = foo  // EOL\n"
+        "      ? '0 : cnt;\n"
+        "endmodule\n",
+    },
+    {
+        "module test;\n"
+        " assign next = foo ? // EOL\n"
+        "  '0 :\n"
+        "  cnt;\n"
+        "endmodule\n",
+        "module test;\n"
+        "  assign next = foo ?  // EOL\n"
+        "      '0 : cnt;\n"
+        "endmodule\n",
+    },
+    {
+        "module test;\n"
+        " assign next = foo ? '0 // EOL\n"
+        "  :\n"
+        "  cnt;\n"
+        "endmodule\n",
+        "module test;\n"
+        "  assign next = foo ? '0  // EOL\n"
+        "      : cnt;\n"
+        "endmodule\n",
+    },
+    {
+        "module test;\n"
+        " assign next = foo ? '0 : // EOL\n"
+        "  cnt;\n"
+        "endmodule\n",
+        "module test;\n"
+        "  assign next = foo ? '0 :  // EOL\n"
+        "      cnt;\n"
+        "endmodule\n",
+    },
+    {
+        "module test;\n"
+        " assign next = foo ? '0 : // EOL\n"
+        "  bar ? '1 : '0;\n"
+        "endmodule\n",
+        "module test;\n"
+        "  assign next = foo ? '0 :  // EOL\n"
+        "      bar ? '1 : '0;\n"
+        "endmodule\n",
+    },
+    {
+        "module test;\n"
+        " assign next = foo ? '0 : // EOL\n"
+        "  bar // EOL2\n"
+        " ? '1 : '0;\n"
+        "endmodule\n",
+        "module test;\n"
+        "  assign next = foo ? '0 :  // EOL\n"
+        "      bar  // EOL2\n"
+        "      ? '1 : '0;\n"
+        "endmodule\n",
+    },
+    {
+        "module test;\n"
+        " assign next = foo ? '0 : // EOL\n"
+        "  bar ? // EOL2\n"
+        "  '1 : '0;\n"
+        "endmodule\n",
+        "module test;\n"
+        "  assign next = foo ? '0 :  // EOL\n"
+        "      bar ?  // EOL2\n"
+        "      '1 : '0;\n"
+        "endmodule\n",
+    },
+    {
+        "module test;\n"
+        " assign next = foo ? '0 : // EOL\n"
+        "  bar ? '1 // EOL2\n"
+        "  : '0;\n"
+        "endmodule\n",
+        "module test;\n"
+        "  assign next = foo ? '0 :  // EOL\n"
+        "      bar ? '1  // EOL2\n"
+        "      : '0;\n"
+        "endmodule\n",
+    },
+    {
+        "module test;\n"
+        " assign next = foo ? '0 : // EOL\n"
+        "  bar ? '1 : // EOL2\n"
+        "  '0;\n"
+        "endmodule\n",
+        "module test;\n"
+        "  assign next = foo ? '0 :  // EOL\n"
+        "      bar ? '1 :  // EOL2\n"
+        "      '0;\n"
+        "endmodule\n",
+    },
+    {
+        "assign prefetch_d     =\n"
+        "lookup_ic0 ? // EOL\n"
+        " (lookup_addr + 1) :// BOO\n"
+        "                   addr_i;",
+        "assign prefetch_d = lookup_ic0 ?  // EOL\n"
+        "    (lookup_addr + 1) :  // BOO\n"
+        "    addr_i;\n",
+    },
+    {
+        "module test;\n"
+        " assign next = (foo) ? '0          : // clear \n"
+        "           (bar) ? cnt + 1'b1  : // count \n"
+        "                   cnt;\n"
+        "endmodule\n",
+        "module test;\n"
+        "  assign next = (foo) ? '0 :  // clear \n"
+        "      (bar) ? cnt + 1'b1 :  // count \n"
+        "      cnt;\n"
+        "endmodule\n",
+    },
+    {
+        "module test;\n"
+        " assign next = // FOO\n"
+        "  (foo) ? '0          : // clear \n"
+        "           (bar) ? cnt + 1'b1  : // count \n"
+        "                   cnt;\n"
+        "endmodule\n",
+        "module test;\n"
+        "  assign next =  // FOO\n"
+        "      (foo) ? '0 :  // clear \n"
+        "      (bar) ? cnt + 1'b1 :  // count \n"
+        "      cnt;\n"
+        "endmodule\n",
+    },
+    {
+        "module test;\n"
+        " assign next = foo ? a_really_long_identifier : // EOL\n"
+        "  cnt;\n"
+        "endmodule\n",
+        "module test;\n"
+        "  assign next = foo ?\n"
+        "      a_really_long_identifier :  // EOL\n"
+        "      cnt;\n"
+        "endmodule\n",
+    },
+    {
+        "module test;\n"
+        " assign next = foo ? a_really_long_identifier : // EOL\n"
+        "  another_really_long_identifier;\n"
+        "endmodule\n",
+        "module test;\n"
+        "  assign next = foo ?\n"
+        "      a_really_long_identifier :  // EOL\n"
+        "      another_really_long_identifier;\n"
+        "endmodule\n",
+    },
+    {
+        "module test;\n"
+        " assign next = foo ? a_really_long_identifier : "
+        "another_really_long_identifier;\n"
+        "endmodule\n",
+        "module test;\n"
+        "  assign next = foo ?\n"
+        "      a_really_long_identifier :\n"
+        "      another_really_long_identifier;\n"
+        "endmodule\n",
+    },
+    {
+        "assign m = check                ? {10'b0, foo} :\n"
+        "           (bar && (baz == '0)) ? hello        :\n"
+        "           world                ? temp1        : temp2;\n",
+        "assign m = check ? {10'b0, foo} :\n"
+        "    (bar && (baz == '0)) ? hello :\n"
+        "    world ? temp1 : temp2;\n",
+    },
+    {
+        "assign {a, b} = !(c == d) ? {1'b0, e} :\n"
+        "                ((e == f) && g) ?\n"
+        "                {1'b0, f} : (h) ?\n"
+        "                {1'b0, e} - 1'b1 :\n"
+        "                {1'b0, e} + 1'b1;\n",
+        "assign {a, b} = !(c == d) ? {1'b0, e} :\n"
+        "    ((e == f) && g) ? {1'b0, f} : (h) ?\n"
+        "    {1'b0, e} - 1'b1 : {1'b0, e} + 1'b1;\n",
+    },
+    {
+        "assign {aaaaaaaaaa, bbbbbbbbb} = {1'b0, cccccccccccccccccc[15:0]} +\n"
+        "                                 {1'b0, ddddddddddddddddd[15:0]};\n",
+        "assign {aaaaaaaaaa, bbbbbbbbb} =\n"
+        "    {1'b0, cccccccccccccccccc[15:0]} +\n"
+        "    {1'b0, ddddddddddddddddd[15:0]};\n",
+    },
+    {
+        "covergroup a(string b);\n"
+        "foobar: cross foo, bar {"
+        "ignore_bins baz = binsof(qux) intersect {1, 2, 3, 4, 5, 6, 7};"
+        "}\n"
+        "endgroup : a\n",
+        "covergroup a(string b);\n"
+        "  foobar: cross foo, bar{\n"
+        "    ignore_bins baz =\n"
+        "        binsof (qux) intersect {\n"
+        "      1, 2, 3, 4, 5, 6, 7\n"
+        "    };\n"
+        "  }\n"
+        "endgroup : a\n",
+    },
+    {
+        "assign {aa, bb} = {1'b0, cc} + {1'b0, dd};\n",
+        "assign {aa, bb} = {1'b0, cc} +\n"
+        "    {1'b0, dd};\n",
+    },
+
+    // streaming operators
+    {
+        "   parameter  int  b={ >>   { a } } ;",
+        "parameter int b = {>>{a}};\n",
+    },
+    {
+        "   parameter  int  b={ >>   { a , b,  c } } ;",
+        "parameter int b = {>>{a, b, c}};\n",
+    },
+    {
+        "   parameter  int  b={ >> 4  { a } } ;",
+        "parameter int b = {>>4{a}};\n",
+    },
+    {
+        "   parameter  int  b={ >> byte  { a } } ;",
+        "parameter int b = {>>byte{a}};\n",
+    },
+    {
+        "   parameter  int  b={ >> my_type_t  { a } } ;",
+        "parameter int b = {>>my_type_t{a}};\n",
+    },
+    {
+        "   parameter  int  b={ >> `GET_TYPE  { a } } ;",
+        "parameter int b = {>>`GET_TYPE{a}};\n",
+    },
+    {
+        "   parameter  int  b={ >> 4  {{ >> 2 { a }  }} } ;",
+        "parameter int b = {>>4{{>>2{a}}}};\n",
+    },
+    {
+        "   parameter  int  b={ <<   { a } } ;",
+        "parameter int b = {<<{a}};\n",
+    },
+    {
+        "   parameter  int  b={ <<   { a , b,  c } } ;",
+        "parameter int b = {<<{a, b, c}};\n",
+    },
+    {
+        "   parameter  int  b={ << 4  { a } } ;",
+        "parameter int b = {<<4{a}};\n",
+    },
+    {
+        "   parameter  int  b={ << byte  { a } } ;",
+        "parameter int b = {<<byte{a}};\n",
+    },
+    {
+        "   parameter  int  b={ << my_type_t  { a } } ;",
+        "parameter int b = {<<my_type_t{a}};\n",
+    },
+    {
+        "   parameter  int  b={ << `GET_TYPE  { a } } ;",
+        "parameter int b = {<<`GET_TYPE{a}};\n",
+    },
+    {
+        "   parameter  int  b={ << 4  {{ << 2 { a }  }} } ;",
+        "parameter int b = {<<4{{<<2{a}}}};\n",
+    },
+
+    // basic module test cases
+    {"module foo;endmodule:foo\n",
+     "module foo;\n"
+     "endmodule : foo\n"},
+    {"module\nfoo\n;\nendmodule\n:\nfoo\n",
+     "module foo;\n"
+     "endmodule : foo\n"},
+    {"module\tfoo\t;\tendmodule\t:\tfoo",
+     "module foo;\n"
+     "endmodule : foo\n"},
+    {"module foo;     // foo\n"
+     "endmodule:foo\n",
+     "module foo;  // foo\n"
+     "endmodule : foo\n"},
+    {"module foo;/* foo */endmodule:foo\n",
+     "module foo;  /* foo */\n"
+     "endmodule : foo\n"},
+    {"module pm #(\n"
+     "//comment\n"
+     ") (wire ww);\n"
+     "endmodule\n",
+     "module pm #(\n"
+     "    //comment\n"  // comment indented
+     ") (\n"
+     "    wire ww\n"
+     ");\n"
+     "endmodule\n"},
+    {"module pm ( ) ;\n"  // empty ports list
+     "endmodule\n",
+     "module pm ();\n"
+     "endmodule\n"},
+    {"module pm #(\n"
+     "//comment\n"
+     ") ( );\n"
+     "endmodule\n",
+     "module pm #(\n"
+     "    //comment\n"  // comment indented
+     ") ();\n"          // (); grouped together
+     "endmodule\n"},
+    {"`ifdef FOO\n"
+     "    `ifndef BAR\n"
+     "    `endif\n"
+     "`endif\n",
+     "`ifdef FOO\n"
+     "`ifndef BAR\n"
+     "`endif\n"
+     "`endif\n"},
+    {"module foo(\n"
+     "       `include \"ports.svh\"\n"
+     "         ) ; endmodule\n",
+     "module foo (\n"
+     "    `include \"ports.svh\"\n"
+     ");\n"
+     "endmodule\n"},
+    {"module foo(\n"
+     "       `define FOO\n"
+     "`undef\tFOO\n"
+     "         ) ; endmodule\n",
+     "module foo (\n"
+     "    `define FOO\n"
+     "    `undef FOO\n"
+     ");\n"
+     "endmodule\n"},
+    {"module foo(  input x  , output y ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  x,\n"  // aligned
+     "    output y\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(\n"
+     "// comment\n"
+     "  input x  , output y ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    // comment\n"
+     "    input  x,\n"  // aligned
+     "    output y\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input[2:0]x  , output y [3:0] ) ;endmodule:foo\n",
+     // each port item should be on its own line
+     "module foo (\n"
+     "    input  [2:0] x,\n"  // aligned
+     "    output       y[3:0]\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input wire x  , output reg yy ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  wire x,\n"  // aligned
+     "    output reg  yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input wire x  ,//c1\n"
+     "output reg yyy //c2\n"
+     " ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  wire x,   //c1\n"  // aligned
+     "    output reg  yyy  //c2\n"  // aligned
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input wire x  ,/* c1 */\n"
+     "output reg yyy /* c2 */\n"
+     " ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  wire x,   /* c1 */\n"  // aligned
+     "    output reg  yyy  /* c2 */\n"  // aligned
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(\n"
+     "// comment\n"
+     "input wire x  ,//c1\n"
+     "output reg yyy //c2\n"
+     " ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    // comment\n"
+     "    input  wire x,   //c1\n"  // aligned
+     "    output reg  yyy  //c2\n"  // aligned
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(\n"
+     "/* comment */\n"
+     "input wire x  ,/* c1 */\n"
+     "output reg yyy /* c2 */\n"
+     " ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    /* comment */\n"
+     "    input  wire x,   /* c1 */\n"  // aligned
+     "    output reg  yyy  /* c2 */\n"  // aligned
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input wire x  ,/* c1\n"
+     "c2\n"
+     "c3 */\n"
+     "output reg yyy /* c4 */\n"
+     " ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  wire x,   /* c1\n"
+     "c2\n"
+     "c3 */\n"  // TODO: align multiline comments
+     "    output reg  yyy  /* c4 */\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input wire x  ,/* c1 */\n"
+     "output reg yyy,\n"
+     "output z // c2\n"
+     " ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  wire x,    /* c1 */\n"  // aligned
+     "    output reg  yyy,\n"
+     "    output      z     // c2\n"  // aligned
+     ");\n"
+     "endmodule : foo\n"},
+    {"module m(input logic [4:0] foo,  // comment\n"
+     "input logic bar // comment\n"
+     " ) ;endmodule:m\n",
+     "module m (\n"
+     "    input logic [4:0] foo,  // comment\n"  // aligned
+     "    input logic       bar   // comment\n"  // aligned
+     ");\n"
+     "endmodule : m\n"},
+    {"module foo(  input wire x  , output yy ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  wire x,\n"  // aligned
+     "    output      yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input   x  , output reg yy ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input      x,\n"  // aligned
+     "    output reg yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input   x  , output reg[a:b]yy ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input            x,\n"  // aligned
+     "    output reg [a:b] yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input   [a:b]x  , output reg  yy ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input      [a:b] x,\n"  // aligned
+     "    output reg       yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input   x  , "
+     "  output logic  yy ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input        x,\n"  // aligned
+     "    output logic yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input   [a:c]x  , "
+     "  output logic[a-b: c]  yy ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input        [  a:c] x,\n"  // aligned
+     "    output logic [a-b:c] yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input   [a:c]x  , "
+     "  output logic[a - b: c]  yy ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input        [    a:c] x,\n"  // aligned
+     "    output logic [a - b:c] yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input   [a:c]x  , input zzz ,"
+     "  output logic[a - b: c]  yy ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input        [    a:c] x,\n"    // aligned []'s
+     "    input                  zzz,\n"  // aligned ids
+     "    output logic [a - b:c] yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input   [a:b]x  , "
+     "  output reg[e: f]  yy ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input      [a:b] x,\n"  // aligned
+     "    output reg [e:f] yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input   tri[aa: bb]x  , "
+     "  output reg[e: f]  yy ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  tri [aa:bb] x,\n"  // aligned
+     "    output reg [  e:f] yy\n"  // TODO(b/70310743): align ':'
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input   [a:b][c:d]x  , "
+     "  output reg[e: f]  yy ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input      [a:b][c:d] x,\n"  // aligned
+     "    output reg [e:f]      yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input wire x  [j:k], output reg yy ) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  wire x [j:k],\n"  // aligned
+     "    output reg  yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input wire x  , output reg yy [j:k]) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  wire x,\n"  // aligned
+     "    output reg  yy[j:k]\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input wire x  [p:q], output reg yy [j:k]) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  wire x [p:q],\n"  // aligned
+     "    output reg  yy[j:k]\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input wire x  [p:q][r:s], output reg yy [j:k]) "
+     ";endmodule:foo\n",
+     "module foo (\n"
+     "    input  wire x [p:q][r:s],\n"  // aligned
+     "    output reg  yy[j:k]\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input wire x  [p:q][rr:ss], output reg yy [jj:kk][m:n]) "
+     ";endmodule:foo\n",
+     "module foo (\n"
+     // TODO(b/70310743): align :'s
+     "    input  wire x [  p:q][rr:ss],\n"
+     "    output reg  yy[jj:kk][  m:n]\n"  // aligned
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input wire   [p:q]x, output reg yy [j:k]) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  wire [p:q] x,\n"  // aligned
+     "    output reg        yy[j:k]\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input wire  x [p:q], output reg[j:k]yy) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  wire       x [p:q],\n"  // aligned
+     "    output reg  [j:k] yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input pkg::bar_t  x , output reg  yy) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  pkg::bar_t x,\n"  // aligned
+     "    output reg        yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input wire  x , output pkg::bar_t  yy) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  wire       x,\n"  // aligned
+     "    output pkg::bar_t yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input pkg::bar_t#(1)  x , output reg  yy) ;endmodule:foo\n",
+     "module foo (\n"  // with parameterized port type
+     "    input  pkg::bar_t#(1) x,\n"
+     "    output reg            yy\n"  // aligned
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input signed x , output reg  yy) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  signed x,\n"  // aligned
+     "    output reg    yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input signed x , output reg [m:n] yy) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  signed       x,\n"  // aligned
+     "    output reg    [m:n] yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input int signed x , output reg [m:n] yy) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  int signed       x,\n"  // aligned
+     "    output reg        [m:n] yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(  input signed x , output pkg::bar_t  yy) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input  signed     x,\n"  // aligned
+     "    output pkg::bar_t yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module somefunction ("
+     "logic clk, int   a, int b);endmodule",
+     "module somefunction (\n"
+     "    logic clk,\n"  // direction missing
+     "    int   a,\n"    // direction missing
+     "    int   b\n"     // direction missing
+     ");\n"
+     "endmodule\n"},
+    {"module somefunction ("
+     "logic clk, input int   a, int b);endmodule",
+     "module somefunction (\n"
+     "          logic clk,\n"  // direction missing
+     "    input int   a,\n"
+     "          int   b\n"  // direction missing
+     ");\n"
+     "endmodule\n"},
+    {"module somefunction ("
+     "input logic clk, input int   a, int b);endmodule",
+     "module somefunction (\n"
+     "    input logic clk,\n"
+     "    input int   a,\n"
+     "          int   b\n"  // direction missing
+     ");\n"
+     "endmodule\n"},
+    {"module somefunction ("
+     "input clk, input int   a, int b);endmodule",
+     "module somefunction (\n"
+     "    input     clk,\n"  // type missing
+     "    input int a,\n"
+     "          int b\n"
+     ");\n"
+     "endmodule\n"},
+    {"module somefunction ("
+     "input logic clk, input a, int b);endmodule",
+     "module somefunction (\n"
+     "    input logic clk,\n"
+     "    input       a,\n"  // type missing
+     "          int   b\n"   // direction missing
+     ");\n"
+     "endmodule\n"},
+    {"module t;\n"
+     "    input bit i_bit;\n"
+     "input   byte  i_byte ;\n"
+     "input chandle i_chandle;\n"
+     "input event i_event;\n"
+     "input int i_int;\n"
+     "input integer i_inte;\n"
+     "input longint i_longint;\n"
+     "input real i_real;\n"
+     "input realtime i_realtime;\n"
+     "input shortint i_shortint;\n"
+     "input shortreal i_shortreal;\n"
+     "input string i_string;\n"
+     "input time i_time;\n"
+     "     output bit o_bit;\n"
+     "output    byte   o_byte  ;  \n"
+     "output chandle o_chandle;\n"
+     "output event o_event;\n"
+     "output int o_int;\n"
+     "output integer o_inte;\n"
+     "output longint o_longint;\n"
+     "output real o_real;\n"
+     "output realtime o_realtime;\n"
+     "output shortint o_shortint;\n"
+     "output shortreal o_shortreal;\n"
+     "output string o_string;\n"
+     "output time o_time;\n"
+     "endmodule\n",
+     "module t;\n"
+     "  input bit i_bit;\n"
+     "  input byte i_byte;\n"
+     "  input chandle i_chandle;\n"
+     "  input event i_event;\n"
+     "  input int i_int;\n"
+     "  input integer i_inte;\n"
+     "  input longint i_longint;\n"
+     "  input real i_real;\n"
+     "  input realtime i_realtime;\n"
+     "  input shortint i_shortint;\n"
+     "  input shortreal i_shortreal;\n"
+     "  input string i_string;\n"
+     "  input time i_time;\n"
+     "  output bit o_bit;\n"
+     "  output byte o_byte;\n"
+     "  output chandle o_chandle;\n"
+     "  output event o_event;\n"
+     "  output int o_int;\n"
+     "  output integer o_inte;\n"
+     "  output longint o_longint;\n"
+     "  output real o_real;\n"
+     "  output realtime o_realtime;\n"
+     "  output shortint o_shortint;\n"
+     "  output shortreal o_shortreal;\n"
+     "  output string o_string;\n"
+     "  output time o_time;\n"
+     "endmodule\n"},
+    {"module t (\n"
+     "    input bit i_bit,\n"
+     "input     byte   i_byte  ,\n"
+     "input chandle i_chandle,\n"
+     "input event i_event,\n"
+     "input int i_int,\n"
+     "input integer i_inte,\n"
+     "input longint i_longint,\n"
+     "input real i_real,\n"
+     "input realtime i_realtime,\n"
+     "input shortint i_shortint,\n"
+     "input shortreal i_shortreal,\n"
+     "input string i_string,\n"
+     "input time i_time,\n"
+     "    output bit o_bit,\n"
+     "output     byte   o_byte  ,  \n"
+     "output chandle o_chandle,\n"
+     "output event o_event,\n"
+     "output int o_int,\n"
+     "output integer o_inte,\n"
+     "output longint o_longint,\n"
+     "output real o_real,\n"
+     "output realtime o_realtime,\n"
+     "output shortint o_shortint,\n"
+     "output shortreal o_shortreal,\n"
+     "output string o_string,\n"
+     "output time o_time);\n"
+     "endmodule\n",
+     "module t (\n"
+     "    input  bit       i_bit,\n"
+     "    input  byte      i_byte,\n"
+     "    input  chandle   i_chandle,\n"
+     "    input  event     i_event,\n"
+     "    input  int       i_int,\n"
+     "    input  integer   i_inte,\n"
+     "    input  longint   i_longint,\n"
+     "    input  real      i_real,\n"
+     "    input  realtime  i_realtime,\n"
+     "    input  shortint  i_shortint,\n"
+     "    input  shortreal i_shortreal,\n"
+     "    input  string    i_string,\n"
+     "    input  time      i_time,\n"
+     "    output bit       o_bit,\n"
+     "    output byte      o_byte,\n"
+     "    output chandle   o_chandle,\n"
+     "    output event     o_event,\n"
+     "    output int       o_int,\n"
+     "    output integer   o_inte,\n"
+     "    output longint   o_longint,\n"
+     "    output real      o_real,\n"
+     "    output realtime  o_realtime,\n"
+     "    output shortint  o_shortint,\n"
+     "    output shortreal o_shortreal,\n"
+     "    output string    o_string,\n"
+     "    output time      o_time\n"
+     ");\n"
+     "endmodule\n"},
+    {"module m;foo bar(.baz({larry, moe, curly}));endmodule",
+     "module m;\n"
+     "  foo bar (.baz({larry, moe, curly}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.baz({larry,// expand this\n"
+     "moe, curly}));endmodule",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .baz({\n"
+     "        larry,  // expand this\n"
+     "        moe,\n"
+     "        curly\n"
+     "      })\n"
+     "  );\n"
+     "endmodule\n"},
+    {"parameter priv_reg_t impl_csr[] = {\n"
+     "// Machine mode mode CSR\n"
+     "MVENDORID, //\n"
+     "MARCHID,   //\n"
+     "DSCRATCH0, //\n"
+     "DSCRATCH1  //\n"
+     "};",
+     "parameter priv_reg_t impl_csr[] = {\n"
+     "  // Machine mode mode CSR\n"
+     "  MVENDORID,  //\n"
+     "  MARCHID,  //\n"
+     "  DSCRATCH0,  //\n"
+     "  DSCRATCH1  //\n"
+     "};\n"},
+    {"parameter priv_reg_t impl_csr[] = {\n"
+     "// Expand elements\n"
+     "MVENDORID,\n"
+     "MARCHID,\n"
+     "DSCRATCH0,\n"
+     "DSCRATCH1\n"
+     "};",
+     "parameter priv_reg_t impl_csr[] = {\n"
+     "  // Expand elements\n"
+     "  MVENDORID,\n"
+     "  MARCHID,\n"
+     "  DSCRATCH0,\n"
+     "  DSCRATCH1\n"
+     "};\n"},
+    /* TODO(b/158131099): to fix these, reinterpret 'b' as a kPortDeclaration
+    {"module somefunction ("
+     "input logic clk, input a, b);endmodule",
+     "module somefunction (\n"
+     "    input logic clk,\n"
+     "    input       a,\n"  // type missing
+     "                b\n"  // type and direction missing
+     ");\n"
+     "endmodule\n"},
+    {"module somefunction ("
+     "input logic clk, int a, b);endmodule",
+     "module somefunction (\n"
+     "    input logic clk,\n"
+     "          int   a,\n"  // direction missing
+     "                b\n"  // type and direction missing
+     ");\n"
+     "endmodule\n"},
+     */
+    {"module foo(\n"
+     "//c1\n"
+     "input wire x , \n"
+     "//c2\n"
+     "output reg  yy\n"
+     "//c3\n"
+     ") ;endmodule:foo\n",
+     "module foo (\n"
+     "    //c1\n"
+     "    input  wire x,\n"  // aligned, ignoring comments
+     "    //c2\n"
+     "    output reg  yy\n"
+     "    //c3\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(\n"
+     "//c1\n"
+     "input wire x , \n"
+     "//c2a\n"  // longer comment
+     "//c2b\n"
+     "output reg  yy\n"
+     "//c3\n"
+     ") ;endmodule:foo\n",
+     "module foo (\n"
+     "    //c1\n"
+     "    input  wire x,\n"  // aligned, ignoring comments
+     "    //c2a\n"           // note: separated by 2 lines of comments
+     "    //c2b\n"
+     "    output reg  yy\n"
+     "    //c3\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(\n"
+     "`ifdef   FOO\n"
+     "input wire x , \n"
+     " `else\n"
+     "output reg  yy\n"
+     " `endif\n"
+     ") ;endmodule:foo\n",
+     "module foo (\n"
+     "`ifdef FOO\n"
+     "    input  wire x,\n"  // aligned, ignoring preprocessor conditionals
+     "`else\n"
+     "    output reg  yy\n"
+     "`endif\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(\n"
+     "input w , \n"
+     "`define   FOO BAR\n"
+     "input wire x , \n"
+     " `include  \"stuff.svh\"\n"
+     "output reg  yy\n"
+     " `undef    FOO\n"
+     "output zz\n"
+     ") ;endmodule:foo\n",
+     "module foo (\n"
+     "    input       w,\n"  // aligned, ignoring preprocessor directives
+     "    `define FOO BAR\n"
+     "    input  wire x,\n"
+     "    `include \"stuff.svh\"\n"
+     "    output reg  yy\n"
+     "    `undef FOO\n"
+     "    output      zz\n"  // aligned, ignoring preprocessor directives
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(\n"
+     "input wire x , \n  \n"  // blank line, separating alignment groups
+     "output reg  yy\n"
+     ") ;endmodule:foo\n",
+     "module foo (\n"
+     "    input wire x,\n"  // not aligned, due to blank line separating groups
+     "\n"
+     "    output reg yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(\n"
+     "input wire x1 [r:s],\n"
+     "input [p:q] x2 , \n  \n"  // blank line, separating alignment groups
+     "output reg  [jj:kk]yy1,\n"
+     "output pkg::barr_t [mm:nn] yy2\n"
+     ") ;endmodule:foo\n",
+     "module foo (\n"
+     "    input wire       x1[r:s],\n"  // aligned in this group, but not across
+                                        // groups
+     "    input      [p:q] x2,\n"
+     "\n"
+     "    output reg         [jj:kk] yy1,\n"
+     "    output pkg::barr_t [mm:nn] yy2\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo(\n"  // same as previous, with comments
+     " //c1\n"
+     "input wire x1 [r:s],\n"
+     "input [p:q] x2 , \n"
+     " //c2\n\n"  // blank line, separating alignment groups
+     " //c3\n"
+     "output reg  [jj:kk]yy1,\n"
+     " //c4\n"
+     "output pkg::barr_t [mm:nn] yy2\n"
+     ") ;endmodule:foo\n",
+     "module foo (\n"
+     "    //c1\n"
+     "    input wire       x1[r:s],\n"  // aligned in this group, but not across
+                                        // groups
+     "    input      [p:q] x2,\n"
+     "    //c2\n"
+     "\n"
+     "    //c3\n"
+     "    output reg         [jj:kk] yy1,\n"
+     "    //c4\n"
+     "    output pkg::barr_t [mm:nn] yy2\n"
+     ");\n"
+     "endmodule : foo\n"},
+
+    {// align null-statement (issue #824)
+     "class sample;"
+     "bit a;;"
+     "bit b;"
+     "endclass",
+     "class sample;\n"
+     "  bit a;\n"
+     "  ;\n"
+     "  bit b;\n"
+     "endclass\n"},
+    {"class sample;"
+     "bit a;;"
+     "endclass",
+     "class sample;\n"
+     "  bit a;\n"
+     "  ;\n"
+     "endclass\n"},
+    {"class sample;"
+     "bit a;"
+     "bit b;;"
+     "endclass",
+     "class sample;\n"
+     "  bit a;\n"
+     "  bit b;\n"
+     "  ;\n"
+     "endclass\n"},
+
+    {// aligning here just barely fits in the 40col limit
+     "module foo(  input int signed x [a:b],"
+     "output reg [mm:nn] yy) ;endmodule:foo\n",
+     "module foo (\n"
+     // ---------------40col----------------->
+     "    input  int signed         x [a:b],\n"  // aligned, still fits
+     "    output reg        [mm:nn] yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {// when aligning would result in exceeding column limit, don't align for
+     // now
+     "module foo(  input int signed x [aa:bb],"
+     "output reg [mm:nn] yy) ;endmodule:foo\n",
+     "module foo (\n"
+     // ---------------40col----------------->
+     //   input  int signed         x [aa:bb],\n"
+     //   output reg        [mm:nn] yy\n"
+     "    input  int signed         x [aa:bb],\n"  // aligned, still fits
+     "    output reg        [mm:nn] yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {// when aligning would result in exceeding column limit, don't align for
+     // now
+     "module foo(  input int signed x [aa:bb],"
+     "output reg [mm:nn] yyy) ;endmodule:foo\n",
+     "module foo (\n"
+     // ---------------40col----------------->
+     //   input  int signed         x  [aa:bb],\n"  // over limit, by comma
+     //   output reg        [mm:nn] yyy\n"
+     "    input int signed x[aa:bb],\n"  // aligned would be 41 columns
+     "    output reg [mm:nn] yyy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {// when aligning would result in exceeding column limit, don't align for
+     // now
+     "module foo(  input int signed x [a:b],//c\n"
+     "output reg [m:n] yy) ;endmodule:foo\n",
+     "module foo (\n"
+     // ---------------40col---------------->
+     //   input  int signed       x [a:b],  //c\n"  // over limit, by comment
+     //   output reg        [m:n] yy\n"
+     "    input int signed x[a:b],  //c\n"  // aligned would be 42 columns
+     "    output reg [m:n] yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {// aligning interfaces in port headers like types
+     // TODO(b/161181877): flush interface port type left (multi-column)
+     "module foo(  input clk , inter.face yy) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input            clk,\n"  // aligned
+     "          inter.face yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {// aligning interfaces in port headers like types
+     // TODO(b/161181877): flush interface port type left (multi-column)
+     "module foo(  input wire   clk , inter.face yy) ;endmodule:foo\n",
+     "module foo (\n"
+     "    input wire       clk,\n"  // aligned
+     "          inter.face yy\n"
+     ");\n"
+     "endmodule : foo\n"},
+
+    // module local variable/net declaration alignment test cases
+    {"module m;\n"
+     "logic a;\n"
+     "bit b;\n"
+     "endmodule\n",
+     "module m;\n"
+     "  logic a;\n"
+     "  bit   b;\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "logic a;\n"
+     "bit b;\n"
+     "initial e=f;\n"  // separates alignment groups
+     "wire c;\n"
+     "bit d;\n"
+     "endmodule\n",
+     "module m;\n"
+     "  logic a;\n"
+     "  bit   b;\n"
+     "  initial e = f;\n"  // separates alignment groups
+     "  wire c;\n"
+     "  bit  d;\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "// hello a\n"
+     "logic a;\n"
+     "// hello b\n"
+     "bit b;\n"
+     "endmodule\n",
+     "module m;\n"
+     "  // hello a\n"
+     "  logic a;\n"
+     "  // hello b\n"
+     "  bit   b;\n"  // aligned across comments
+     "endmodule\n"},
+    {"module m;\n"
+     "// hello a\n"
+     "logic a;\n"
+     "\n"  // extra blank line
+     "// hello b\n"
+     "bit b;\n"
+     "endmodule\n",
+     "module m;\n"
+     "  // hello a\n"
+     "  logic a;\n"
+     "\n"              // extra blank line
+     "  // hello b\n"  // aligned across blank lines
+     "  bit   b;\n"    // aligned across comments
+     "endmodule\n"},
+    {"module m;\n"
+     "logic [x:y]a;\n"  // packed dimensions
+     "bit b;\n"
+     "endmodule\n",
+     "module m;\n"
+     "  logic [x:y] a;\n"
+     "  bit         b;\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "logic a;\n"
+     "bit [pp:qq]b;\n"  // packed dimensions
+     "endmodule\n",
+     "module m;\n"
+     "  logic         a;\n"
+     "  bit   [pp:qq] b;\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "logic [x:y]a;\n"  // packed dimensions
+     "bit [pp:qq]b;\n"  // packed dimensions
+     "endmodule\n",
+     "module m;\n"
+     "  logic [  x:y] a;\n"
+     "  bit   [pp:qq] b;\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "logic [x:y]a;\n"         // packed dimensions
+     "wire [pp:qq] [e:f]b;\n"  // packed dimensions, 2D
+     "endmodule\n",
+     "module m;\n"
+     "  logic [  x:y]      a;\n"
+     "  wire  [pp:qq][e:f] b;\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "logic a [x:y];\n"  // unpacked dimensions
+     "bit bbb;\n"
+     "endmodule\n",
+     "module m;\n"
+     "  logic a   [x:y];\n"
+     "  bit   bbb;\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "logic aaa ;\n"
+     "wire w [yy:zz];\n"  // unpacked dimensions
+     "endmodule\n",
+     "module m;\n"
+     "  logic aaa;\n"
+     "  wire  w   [yy:zz];\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "logic aaa [s:t] ;\n"  // unpacked dimensions
+     "wire w [yy:zz];\n"    // unpacked dimensions
+     "endmodule\n",
+     "module m;\n"
+     "  logic aaa[  s:t];\n"
+     "  wire  w  [yy:zz];\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "logic aaa [s:t] ;\n"     // unpacked dimensions
+     "wire w [yy:zz][u:v];\n"  // unpacked dimensions, 2D
+     "endmodule\n",
+     "module m;\n"
+     "  logic aaa[  s:t];\n"
+     "  wire  w  [yy:zz] [u:v];\n"
+     // TODO(b/165323560): unwanted space between unpacked dimensions of 'w'
+     "endmodule\n"},
+    {"module m;\n"
+     "qqq::rrr s;\n"     // user-defined type
+     "wire [pp:qq]w;\n"  // packed dimensions
+     "endmodule\n",
+     "module m;\n"
+     "  qqq::rrr         s;\n"
+     "  wire     [pp:qq] w;\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "qqq#(rr) s;\n"     // parameterized type
+     "wire [pp:qq]w;\n"  // packed dimensions
+     "endmodule\n",
+     "module m;\n"
+     "  qqq #(rr)         s;\n"
+     "  wire      [pp:qq] w;\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "logic a;\n"
+     "bit b;\n"
+     "my_module  my_inst( );\n"  // module instance separates alignment groups
+     "wire c;\n"
+     "bit d;\n"
+     "endmodule\n",
+     "module m;\n"
+     "  logic a;\n"  // these two are aligned
+     "  bit   b;\n"
+     "  my_module my_inst ();\n"  // module instance separates alignment groups
+     "  wire c;\n"                // these two are aligned
+     "  bit  d;\n"
+     "endmodule\n"},
+    {"module m;\n"
+     "logic aaa = expr1;\n"
+     "bit b = expr2;\n"
+     "endmodule\n",
+     "module m;\n"
+     "  logic aaa = expr1;\n"
+     "  bit   b = expr2;\n"  // no alignment at '=' yet
+     "endmodule\n"},
+    {"(* foo='{\"bar_.*\"} *)\n"  // funny attribute
+     "module mattr;\n"
+     "(* attr1=\"value1\" *)\n"  // attribute ignored
+     "ex_input_pins_t ex_input_pins;\n"
+     "(* attr2=\"value2\" *)\n"  // attribute ignored
+     "ex_output_pins_t ex_output_pins;\n"
+     "(* attr3=\"value3\" *)\n"  // attribute ignored
+     "ex wrap_ex ( );\n"
+     "endmodule\n",
+     "(* foo='{\"bar_.*\"} *)\n"
+     "module mattr;\n"
+     "  (* attr1=\"value1\" *)\n"           // indented
+     "  ex_input_pins_t  ex_input_pins;\n"  // aligned
+     "  (* attr2=\"value2\" *)\n"           // indented
+     "  ex_output_pins_t ex_output_pins;\n"
+     "  (* attr3=\"value3\" *)\n"  // indented
+     "  ex wrap_ex ();\n"
+     "endmodule\n"},
+    {"module mattr;\n"
+     "ex_input_pins_t ex_input_pins;\n"
+     "ex_output_pins_t ex_output_pins;\n"
+     "(* package_definition=\"ex_pkg\" *)\n"  // attribute ignored
+     "ex wrap_ex (\n"
+     ".clk(ex_input_pins.clk),\n"
+     ".rst(ex_input_pins.rst),\n"
+     ".in(ex_input_pins.in)\n"
+     ");\n"
+     "endmodule\n",
+     "module mattr;\n"
+     "  ex_input_pins_t  ex_input_pins;\n"  // aligned
+     "  ex_output_pins_t ex_output_pins;\n"
+     "  (* package_definition=\"ex_pkg\" *)\n"  // indented
+     "  ex wrap_ex (\n"
+     "      .clk(ex_input_pins.clk),\n"
+     "      .rst(ex_input_pins.rst),\n"
+     "      .in (ex_input_pins.in)\n"  // aligned
+     "  );\n"
+     "endmodule\n"},
+    {"module test;\n"
+     "bind entropy_src tlul_assert #(.EndpointType(\"Device\"))\n"
+     "tlul_assert_device (.clk_i, .rst_ni, .h2d(tl_i), .d2h(tl_o));\n"
+     "endmodule\n",
+     "module test;\n"
+     "  bind entropy_src tlul_assert #(\n"
+     "      .EndpointType(\"Device\")\n"
+     "  ) tlul_assert_device (\n"
+     "      .clk_i,\n"
+     "      .rst_ni,\n"
+     "      .h2d(tl_i),\n"
+     "      .d2h(tl_o)\n"
+     "  );\n"
+     "endmodule\n"},
+    {"module test;\n"
+     "bind entropy_src tlul_assert #(.EndpointType(\"Device\"))\n"
+     "tlul_assert_device (.clk_i, .rst_ni,\n\n .h2d(tl_i),\n\n .d2h(tl_o));\n"
+     "endmodule\n",
+     "module test;\n"
+     "  bind entropy_src tlul_assert #(\n"
+     "      .EndpointType(\"Device\")\n"
+     "  ) tlul_assert_device (\n"
+     "      .clk_i,\n"
+     "      .rst_ni,\n"
+     "\n"
+     "      .h2d(tl_i),\n"
+     "\n"
+     "      .d2h(tl_o)\n"
+     "  );\n"
+     "endmodule\n"},
+    {"bind expand_me long_name #(.W(W_CONST), .D(D_CONST)) instaaance_name ("
+     ".in(iiiiiiiin),\n\n .out(ooooooout),\n .clk(ccccccclk),\n\n"
+     ".in1234 (in),\n //c1\n .out1234(out),\n .clk1234(clk),);",
+     "bind expand_me long_name #(\n"
+     "    .W(W_CONST),\n"
+     "    .D(D_CONST)\n"
+     ") instaaance_name (\n"
+     "    .in(iiiiiiiin),\n"
+     "\n"
+     "    .out(ooooooout),\n"
+     "    .clk(ccccccclk),\n"
+     "\n"
+     "    .in1234 (in),\n"
+     "    //c1\n"
+     "    .out1234(out),\n"
+     "    .clk1234(clk),\n"
+     ");\n"},
+    {"initial // clock generation\n begin\n clk = 0;\n forever begin\n"
+     "#4ns clk = !clk;\n end\n end\n",
+     "initial  // clock generation\n"
+     "  begin\n"
+     "    clk = 0;\n"
+     "    forever begin\n"
+     "      #4ns clk = !clk;\n"
+     "    end\n"
+     "  end\n"},
+    {"module foo #(int x,int y) ;endmodule:foo\n",  // parameters
+     "module foo #(\n"
+     "    int x,\n"
+     "    int y\n"
+     ");\n"  // each parameter on its own line
+     "endmodule : foo\n"},
+    {"module foo #(int x)(input y) ;endmodule:foo\n",
+     // parameter and port
+     "module foo #(\n"
+     "    int x\n"
+     ") (\n"
+     "    input y\n"
+     ");\n"  // each paramater and port item should be on its own line
+     "endmodule : foo\n"},
+    {"module foo #(parameter int x,parameter int y) ;endmodule:foo\n",
+     // parameters don't fit (also should be on its own line)
+     "module foo #(\n"
+     "    parameter int x,\n"
+     "    parameter int y\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo #(parameter int xxxx,parameter int yyyy) ;endmodule:foo\n",
+     // parameters don't fit
+     "module foo #(\n"
+     "    parameter int xxxx,\n"
+     "    parameter int yyyy\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo #(parameter int x = $clog2  (N) ,parameter int y ) "
+     ";endmodule:foo\n",
+     // parameters don't fit
+     "module foo #(\n"
+     "    parameter int x = $clog2(N),\n"  // no space after $clog2
+     "    parameter int y\n"
+     ");\n"
+     "endmodule : foo\n"},
+    {"module foo #(//comment\n"
+     "parameter bar =1,\n"
+     "localparam baz =2"
+     ") ();"
+     "endmodule",
+     "module foo #(  //comment\n"
+     "    parameter  bar = 1,\n"
+     "    localparam baz = 2\n"
+     ") ();\n"
+     "endmodule\n"},
+    {"module foo #("
+     "parameter  bar =1,//comment\n"
+     "localparam baz =2"
+     ") ();"
+     "endmodule",
+     "module foo #(\n"
+     "    parameter  bar = 1,  //comment\n"
+     "    localparam baz = 2\n"
+     ") ();\n"
+     "endmodule\n"},
+    {"module foo #("
+     "parameter  bar =1,"
+     "localparam baz =2//comment\n"
+     ") ();"
+     "endmodule",
+     "module foo #(\n"
+     "    parameter  bar = 1,\n"
+     "    localparam baz = 2   //comment\n"
+     ") ();\n"
+     "endmodule\n"},
+    {"module foo #("
+     "parameter  bar =1//comment\n"
+     ",localparam baz =2\n"
+     ") ();"
+     "endmodule",
+     "module foo #(\n"
+     "      parameter  bar = 1  //comment\n"
+     "    , localparam baz = 2\n"
+     ") ();\n"
+     "endmodule\n"},
+    {"module foo;"
+     // fit in one line
+     "parameter int i = '{\n"
+     "1,\n"
+     "2,\n"
+     "3\n"
+     "};\n"
+     "endmodule",
+     "module foo;\n"
+     "  parameter int i = '{1, 2, 3};\n"
+     "endmodule\n"},
+    {"module foo;"
+     // too long for one line, expand
+     "localparam logic [63:0] RC[24] = '{\n"
+     "64'h 1,\n"
+     "64'h 2,\n"
+     "64'h 3\n"
+     "};\n"
+     "endmodule",
+     "module foo;\n"
+     "  localparam logic [63:0] RC[24] = '{\n"
+     "      64'h1,\n"
+     "      64'h2,\n"
+     "      64'h3\n"
+     "  };\n"
+     "endmodule\n"},
+    {"module foo;"
+     "parameter int i = '{\n"
+     // force expansion
+     "1, //\n"
+     "2,\n"
+     "3\n"
+     "};\n"
+     "endmodule",
+     "module foo;\n"
+     "  parameter int i = '{\n"
+     "      1,  //\n"
+     "      2,\n"
+     "      3\n"
+     "  };\n"
+     "endmodule\n"},
+    {"module foo;"
+     "localparam logic [63:0] RC[24] = '{\n"
+     "64'h 0000_0000_0000_0001, // 0\n"
+     "64'h 0000_0000_0000_8082, // 1\n"
+     "64'h 8000_0000_8000_8008 // 23\n"
+     "};\n"
+     "endmodule",
+     "module foo;\n"
+     "  localparam logic [63:0] RC[24] = '{\n"
+     "      64'h0000_0000_0000_0001,  // 0\n"
+     "      64'h0000_0000_0000_8082,  // 1\n"
+     "      64'h8000_0000_8000_8008  // 23\n"
+     "  };\n"
+     "endmodule\n"},
+    {"module foo;"
+     // nest two patterns
+     "parameter logic [11:0] i = '{\n"
+     "'{1,2,3},\n"
+     "'{1,2,3}\n"
+     "};\n"
+     "endmodule",
+     "module foo;\n"
+     "  parameter logic [11:0] i = '{\n"
+     "      '{1, 2, 3},\n"
+     "      '{1, 2, 3}\n"
+     "  };\n"
+     "endmodule\n"},
+    {"module foo;"
+     // nest two patterns, expand interior
+     "parameter logic [11:0] i = '{\n"
+     "'{1, //\n"
+     " 2,3},\n"
+     "'{1,2,3}\n"
+     "};\n"
+     "endmodule",
+     "module foo;\n"
+     "  parameter logic [11:0] i = '{\n"
+     "      '{\n"
+     "          1,  //\n"
+     "          2,\n"
+     "          3\n"
+     "      },\n"
+     "      '{1, 2, 3}\n"
+     "  };\n"
+     "endmodule\n"},
+    {"module foo;"
+     // nest two patterns, expand both
+     "parameter nest [2] i = '{\n"
+     "'{first : 32'h0000_0001,\n"
+     "  second : 32'h0000_0011,\n"
+     "  third: 32'h0000_0111},\n"
+     "'{first : 32'h1000_0001,\n"
+     "  second : 32'h1000_0011,\n"
+     "  third: 32'h1000_0111}\n"
+     "};\n"
+     "endmodule",
+     "module foo;\n"
+     "  parameter nest [2] i = '{\n"
+     "      '{\n"
+     "          first : 32'h0000_0001,\n"
+     "          second : 32'h0000_0011,\n"
+     "          third: 32'h0000_0111\n"
+     "      },\n"
+     "      '{\n"
+     "          first : 32'h1000_0001,\n"
+     "          second : 32'h1000_0011,\n"
+     "          third: 32'h1000_0111\n"
+     "      }\n"
+     "  };\n"
+     "endmodule\n"},
+    {"module foo;"
+     // nest three patterns
+     "parameter logic [11:0] i = '{\n"
+     "'{'{1,2,3},4}\n"
+     "};\n"
+     "endmodule",
+     "module foo;\n"
+     "  parameter logic [11:0] i = '{\n"
+     "      '{'{1, 2, 3}, 4}\n"
+     "  };\n"
+     "endmodule\n"},
+    {"module foo;"
+     // nest three patterns, expand interior
+     "parameter logic [11:0] i = '{\n"
+     "'{\n"
+     "'{first : 32'h0000_0001,\n"
+     "  second : 32'h0000_0011,\n"
+     "  third: 32'h0000_0111},\n"
+     "  4},\n"
+     "  5,\n"
+     "  '{1,2,3}\n"
+     "};\n"
+     "endmodule",
+     "module foo;\n"
+     "  parameter logic [11:0] i = '{\n"
+     "      '{\n"
+     "          '{\n"
+     "              first : 32'h0000_0001,\n"
+     "              second : 32'h0000_0011,\n"
+     "              third: 32'h0000_0111\n"
+     "          },\n"
+     "          4\n"
+     "      },\n"
+     "      5,\n"
+     "      '{1, 2, 3}\n"
+     "  };\n"
+     "endmodule\n"},
+    {"module    top;"
+     "foo#(  \"test\"  ) foo(  );"
+     "bar#(  \"test\"  ,5) bar(  );"
+     "endmodule\n",
+     "module top;\n"
+     "  foo #(\"test\") foo ();\n"  // module instantiation, string arg
+     "  bar #(\"test\", 5) bar ();\n"
+     "endmodule\n"},
+    {"module    top;"
+     "foo#(  `\"test`\"  ) foo(  );"
+     "bar#(  `\"test`\"  ,5) bar(  );"
+     "endmodule\n",
+     "module top;\n"
+     "  foo #(`\"test`\") foo ();\n"  // module instantiation, eval string arg
+     "  bar #(`\"test`\", 5) bar ();\n"
+     "endmodule\n"},
+    {"`ifdef FOO\n"
+     "  module bar;endmodule\n"
+     "`endif\n",
+     "`ifdef FOO\n"
+     "module bar;\n"
+     "endmodule\n"
+     "`endif\n"},
+    {"`ifdef FOO\n"
+     "  module bar;endmodule\n"
+     "`else module baz;endmodule\n"
+     "`endif\n",
+     "`ifdef FOO\n"
+     "module bar;\n"
+     "endmodule\n"
+     "`else\n"
+     "module baz;\n"
+     "endmodule\n"
+     "`endif\n"},
+    {"`ifdef FOO\n"
+     "  module bar;endmodule\n"
+     "`else /* glue me */ module baz;endmodule\n"
+     "`endif\n",
+     "`ifdef FOO\n"
+     "module bar;\n"
+     "endmodule\n"
+     "`else  /* glue me */\n"
+     "module baz;\n"
+     "endmodule\n"
+     "`endif\n"},
+    {"`ifdef FOO\n"
+     "  module bar;endmodule\n"
+     "`else// different unit\n"
+     "  module baz;endmodule\n"
+     "`endif\n",
+     "`ifdef FOO\n"
+     "module bar;\n"
+     "endmodule\n"
+     "`else  // different unit\n"
+     "module baz;\n"
+     "endmodule\n"
+     "`endif\n"},
+
+    // unary: + - !  ~ & | ^  ~& ~| ~^ ^~
+    {"module m;foo bar(.x(-{a,b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x(-{a, b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(!{a,b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x(!{a, b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(~{a,b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x(~{a, b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(&{a,b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x(&{a, b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(|{a,b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x(|{a, b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(^{a,b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x(^{a, b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(~&{a,b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x(~&{a, b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(~|{a,b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x(~|{a, b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(~^{a,b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x(~^{a, b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(^~{a,b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x(^~{a, b}));\n"
+     "endmodule\n"},
+
+    // binary: + - * / % & | ^ ^~ ~^ && ||
+    {"module m;foo bar(.x(a+b));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a + b));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a-b));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a - b));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a*b));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a * b));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a/b));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a / b));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a%b));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a % b));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a&b));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a & b));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a|b));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a | b));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a^b));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a ^ b));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a^~b));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a ^~ b));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a~^b));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a ~^ b));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a&&b));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a && b));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a||b));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a || b));\n"
+     "endmodule\n"},
+
+    // {a} op {b}
+    {"module m;foo bar(.x({a}+{b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x({a} + {b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x({a}-{b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x({a} - {b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x({a}*{b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x({a} * {b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x({a}/{b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x({a} / {b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x({a}%{b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x({a} % {b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x({a}&{b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x({a} & {b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x({a}|{b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x({a} | {b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x({a}^{b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x({a} ^ {b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x({a}^~{b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x({a} ^~ {b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x({a}~^{b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x({a} ~^ {b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x({a}&&{b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x({a} && {b}));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x({a}||{b}));endmodule",
+     "module m;\n"
+     "  foo bar (.x({a} || {b}));\n"
+     "endmodule\n"},
+
+    // (a) op (b)
+    {"module m;foo bar(.x((a)+(b)));endmodule",
+     "module m;\n"
+     "  foo bar (.x((a) + (b)));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x((a)-(b)));endmodule",
+     "module m;\n"
+     "  foo bar (.x((a) - (b)));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x((a)*(b)));endmodule",
+     "module m;\n"
+     "  foo bar (.x((a) * (b)));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x((a)/(b)));endmodule",
+     "module m;\n"
+     "  foo bar (.x((a) / (b)));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x((a)%(b)));endmodule",
+     "module m;\n"
+     "  foo bar (.x((a) % (b)));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x((a)&(b)));endmodule",
+     "module m;\n"
+     "  foo bar (.x((a) & (b)));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x((a)|(b)));endmodule",
+     "module m;\n"
+     "  foo bar (.x((a) | (b)));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x((a)^(b)));endmodule",
+     "module m;\n"
+     "  foo bar (.x((a) ^ (b)));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x((a)^~(b)));endmodule",
+     "module m;\n"
+     "  foo bar (.x((a) ^~ (b)));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x((a)~^(b)));endmodule",
+     "module m;\n"
+     "  foo bar (.x((a) ~^ (b)));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x((a)&&(b)));endmodule",
+     "module m;\n"
+     "  foo bar (.x((a) && (b)));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x((a)||(b)));endmodule",
+     "module m;\n"
+     "  foo bar (.x((a) || (b)));\n"
+     "endmodule\n"},
+
+    // a[b] op c
+    {"module m;foo bar(.x(a[b]+c));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a[b] + c));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a[b]-c));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a[b] - c));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a[b]*c));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a[b] * c));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a[b]/c));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a[b] / c));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a[b]%c));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a[b] % c));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a[b]&c));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a[b] & c));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a[b]|c));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a[b] | c));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a[b]^c));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a[b] ^ c));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a[b]^~c));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a[b] ^~ c));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a[b]~^c));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a[b] ~^ c));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a[b]&&c));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a[b] && c));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a[b]||c));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a[b] || c));\n"
+     "endmodule\n"},
+
+    // misc
+    {"module m;foo bar(.x(a[1:0]^b[2:1]));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a[1:0] ^ b[2:1]));\n"
+     "endmodule\n"},
+
+    {"module m;foo bar(.x(a[b] | b[c]));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a[b] | b[c]));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x(a[b] & b[c]));endmodule",
+     "module m;\n"
+     "  foo bar (.x(a[b] & b[c]));\n"
+     "endmodule\n"},
+
+    {"module m;foo bar(.x((a^c)^(b^ ~c)));endmodule",
+     "module m;\n"
+     "  foo bar (.x((a ^ c) ^ (b ^ ~c)));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x((a^c)^(b^~c)));endmodule",
+     "module m;\n"
+     "  foo bar (.x((a ^ c) ^ (b ^~ c)));\n"
+     "endmodule\n"},
+    {"module m;foo bar(.x((a^{c,d})^(b^^{c,d})));endmodule",
+     "module m;\n"
+     "  foo bar (\n"
+     "      .x((a ^ {c, d}) ^ (b ^ ^{c, d}))\n"
+     "  );\n"
+     "endmodule\n"},
+
+    {// module items mixed with preprocessor conditionals and comments
+     "    module foo;\n"
+     "// comment1\n"
+     "  `ifdef SIM\n"
+     "// comment2\n"
+     " `elsif SYN\n"
+     " // comment3\n"
+     "       `else\n"
+     "// comment4\n"
+     " `endif\n"
+     "// comment5\n"
+     "  endmodule",
+     "module foo;\n"
+     "  // comment1\n"
+     "`ifdef SIM\n"
+     "  // comment2\n"
+     "`elsif SYN\n"
+     "  // comment3\n"
+     "`else\n"
+     "  // comment4\n"
+     "`endif\n"
+     "  // comment5\n"
+     "endmodule\n"},
+    {"  module bar;wire foo;reg bear;endmodule\n",
+     "module bar;\n"
+     "  wire foo;\n"
+     "  reg  bear;\n"  // aligned
+     "endmodule\n"},
+    {" module bar;initial\nbegin a<=b . c ; end endmodule\n",
+     "module bar;\n"
+     "  initial begin\n"
+     "    a <= b.c;\n"
+     "  end\n"
+     "endmodule\n"},
+    {"module foo ();\nif (1) begin\n$finish(\n"
+     "      1    ); $finish    ();\n  end\nendmodule",
+     "module foo ();\n"
+     "  if (1) begin\n"
+     "    $finish(1);\n"
+     "    $finish();\n"
+     "  end\n"
+     "endmodule\n"},
+    {"  module bar;for(genvar i = 0 ; i<N ; ++ i  ) begin end endmodule\n",
+     "module bar;\n"
+     "  for (genvar i = 0; i < N; ++i) begin\n"
+     "  end\n"
+     "endmodule\n"},
+    {"  module bar;for(genvar i = 0 ; i!=N ; i ++  ) begin "
+     "foo f;end endmodule\n",
+     "module bar;\n"
+     "  for (genvar i = 0; i != N; i++) begin\n"
+     "    foo f;\n"
+     "  end\n"
+     "endmodule\n"},
+    {
+        "module block_generate;\n"
+        "`ASSERT(blah)\n"
+        "generate endgenerate endmodule\n",
+        "module block_generate;\n"
+        "  `ASSERT(blah)\n"
+        "  generate\n"
+        "  endgenerate\n"
+        "endmodule\n",
+    },
+    {
+        "module conditional_generate;\n"
+        "if(foo)  ; \t"  // null action
+        "endmodule\n",
+        "module conditional_generate;\n"
+        "  if (foo);\n"
+        "endmodule\n",
+    },
+    {
+        "module conditional_generate;\n"
+        "if(foo[a*b+c])  ; \t"  // null action
+        "endmodule\n",
+        "module conditional_generate;\n"
+        "  if (foo[a*b+c]);\n"  // allow compact expressions inside []
+        "endmodule\n",
+    },
+    {
+        "module conditional_generate;\n"
+        "if(foo)begin\n"
+        "`ASSERT()\n"
+        "`COVER()\n"
+        " end\n"
+        "endmodule\n",
+        "module conditional_generate;\n"
+        "  if (foo) begin\n"
+        "    `ASSERT()\n"
+        "    `COVER()\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        "module conditional_generate;\n"
+        "`ASSERT()\n"
+        "if(foo)begin\n"
+        " end\n"
+        "`COVER()\n"
+        "endmodule\n",
+        "module conditional_generate;\n"
+        "  `ASSERT()\n"
+        "  if (foo) begin\n"
+        "  end\n"
+        "  `COVER()\n"
+        "endmodule\n",
+    },
+    {
+        "module conditional_generate;\n"
+        "if(foo)begin\n"
+        "           // comment1\n"
+        " // comment2\n"
+        " end\n"
+        "endmodule\n",
+        "module conditional_generate;\n"
+        "  if (foo) begin\n"
+        "    // comment1\n"
+        "    // comment2\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        "module m ;"
+        "for(genvar i=0; ;)\n; "   // null generate statement
+        "for(genvar j=0 ;; )\n; "  // null generate statement
+        "endmodule",
+        "module m;\n"
+        "  for (genvar i = 0;;);\n"
+        "  for (genvar j = 0;;);\n"
+        "endmodule\n",
+    },
+    {
+        "module m ;"
+        "for (genvar f = 0; f < N; f++) begin "
+        "assign x = y; assign y = z;"
+        "end endmodule",
+        "module m;\n"
+        "  for (genvar f = 0; f < N; f++) begin\n"
+        "    assign x = y;\n"
+        "    assign y = z;\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        // standalone genvar statement
+        "module m ;"
+        "genvar f;"
+        "for(f=0; f<N; f ++ )begin "
+        "end endmodule",
+        "module m;\n"
+        "  genvar f;\n"
+        "  for (f = 0; f < N; f++) begin\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        // multiple arguments to genvar statement
+        "module m ;"
+        "genvar f, g;"
+        "for(f=0; f<N; f ++ )begin "
+        "end for(g=N; g>0; g -- )begin "
+        "end endmodule",
+        "module m;\n"
+        "  genvar f, g;\n"
+        "  for (f = 0; f < N; f++) begin\n"
+        "  end\n"
+        "  for (g = N; g > 0; g--) begin\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        // multiple genvar statements
+        "module m ;"
+        "genvar f;"
+        "genvar g;"
+        "for(f=0; f<N; f ++ )begin "
+        "end for(g=N; g>0; g -- )begin "
+        "end endmodule",
+        "module m;\n"
+        "  genvar f;\n"
+        "  genvar g;\n"
+        "  for (f = 0; f < N; f++) begin\n"
+        "  end\n"
+        "  for (g = N; g > 0; g--) begin\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        "module event_control ;"
+        "always@ ( posedge   clk )z<=y;"
+        "endmodule\n",
+        "module event_control;\n"
+        "  always @(posedge clk) z <= y;\n"
+        "endmodule\n",
+    },
+    {
+        "module always_if ;"
+        "always@ ( posedge   clk ) if (expr) z<=y;"
+        "endmodule\n",
+        "module always_if;\n"
+        "  always @(posedge clk)\n"  // doesn't fit
+        "    if (expr)\n"
+        "      z <= y;\n"
+        "endmodule\n",
+    },
+    {
+        "module always_if ;"
+        "always@*  if (expr) z<=y;"
+        "endmodule\n",
+        "module always_if;\n"
+        "  always @* if (expr) z <= y;\n"  // fits
+        "endmodule\n",
+    },
+    {
+        "module \talways_if_else ;"
+        "always@*  if (expr) z<=y; else g<=0;"
+        "endmodule\n",
+        "module always_if_else;\n"
+        "  always @*\n"
+        "    if (expr) z <= y;\n"  // fits
+        "    else g <= 0;\n"       // fits
+        "endmodule\n",
+    },
+    {
+        "module \talways_if_else_if ;"
+        "always@*  if (expr) z<=y; else if (w) g<=0;"
+        "endmodule\n",
+        "module always_if_else_if;\n"
+        "  always @*\n"
+        "    if (expr) z <= y;\n"    // fits
+        "    else if (w) g <= 0;\n"  // fits
+        "endmodule\n",
+    },
+    {
+        "module \talways_if_else_if_else ;"
+        "always@*  if (expr) z<=y; else if (w) g<=0;else h<=1;"
+        "endmodule\n",
+        "module always_if_else_if_else;\n"
+        "  always @*\n"
+        "    if (expr) z <= y;\n"    // fits
+        "    else if (w) g <= 0;\n"  // fits
+        "    else h <= 1;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(b,  c)"
+        "  for (;;)\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(b, c) for (;;) s = y;\n"  // fits
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  for (i=0;i<k;++i)\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    for (i = 0; i < k; ++i)\n"
+        "      s = y;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  repeat (jj+kk)\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    repeat (jj + kk)\n"
+        "      s = y;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  foreach(jj[kk])\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    foreach (jj[kk])\n"
+        "      s = y;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  while(jj[kk])\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    while (jj[kk])\n"
+        "      s = y;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  do s=y;while(jj[kk]);\t"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    do\n"
+        "      s = y;\n"
+        "    while (jj[kk]);\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)  \n"
+        "  case(jj)\tS:s = y;endcase\t"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    case (jj)\n"
+        "      S: s = y;\n"
+        "    endcase\n"
+        "endmodule\n",
+    },
+
+    {
+        "module always_if ;"
+        "always@ ( posedge   clk ) if (expr) z<=y;"
+        "endmodule\n",
+        "module always_if;\n"
+        "  always @(posedge clk)\n"  // doesn't fit
+        "    if (expr)\n"
+        "      z <= y;\n"
+        "endmodule\n",
+    },
+    {
+        "module always_if ;"
+        "always@*  if (expr) z<=y;"
+        "endmodule\n",
+        "module always_if;\n"
+        "  always @* if (expr) z <= y;\n"  // fits
+        "endmodule\n",
+    },
+    {
+        "module \talways_if_else ;"
+        "always@*  if (expr) z<=y; else g<=0;"
+        "endmodule\n",
+        "module always_if_else;\n"
+        "  always @*\n"
+        "    if (expr) z <= y;\n"  // fits
+        "    else g <= 0;\n"       // fits
+        "endmodule\n",
+    },
+    {
+        "module \talways_if_else_if ;"
+        "always@*  if (expr) z<=y; else if (w) g<=0;"
+        "endmodule\n",
+        "module always_if_else_if;\n"
+        "  always @*\n"
+        "    if (expr) z <= y;\n"    // fits
+        "    else if (w) g <= 0;\n"  // fits
+        "endmodule\n",
+    },
+    {
+        "module \talways_if_else_if_else ;"
+        "always@*  if (expr) z<=y; else if (w) g<=0;else h<=1;"
+        "endmodule\n",
+        "module always_if_else_if_else;\n"
+        "  always @*\n"
+        "    if (expr) z <= y;\n"    // fits
+        "    else if (w) g <= 0;\n"  // fits
+        "    else h <= 1;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(b,  c)"
+        "  for (;;)\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(b, c) for (;;) s = y;\n"  // fits
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  for (i=0;i<k;++i)\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    for (i = 0; i < k; ++i)\n"
+        "      s = y;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  repeat (jj+kk)\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    repeat (jj + kk)\n"
+        "      s = y;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  foreach(jj[kk])\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    foreach (jj[kk])\n"
+        "      s = y;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  while(jj[kk])\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    while (jj[kk])\n"
+        "      s = y;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  do s=y;while(jj[kk]);\t"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    do\n"
+        "      s = y;\n"
+        "    while (jj[kk]);\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)  \n"
+        "  case(jj)\tS:s = y;endcase\t"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    case (jj)\n"
+        "      S: s = y;\n"
+        "    endcase\n"
+        "endmodule\n",
+    },
+
+    {
+        "module always_if ;"
+        "always@ ( posedge   clk ) if (expr) z<=y;"
+        "endmodule\n",
+        "module always_if;\n"
+        "  always @(posedge clk)\n"  // doesn't fit
+        "    if (expr)\n"
+        "      z <= y;\n"
+        "endmodule\n",
+    },
+    {
+        "module always_if ;"
+        "always@*  if (expr) z<=y;"
+        "endmodule\n",
+        "module always_if;\n"
+        "  always @* if (expr) z <= y;\n"  // fits
+        "endmodule\n",
+    },
+    {
+        "module \talways_if_else ;"
+        "always@*  if (expr) z<=y; else g<=0;"
+        "endmodule\n",
+        "module always_if_else;\n"
+        "  always @*\n"
+        "    if (expr) z <= y;\n"  // fits
+        "    else g <= 0;\n"       // fits
+        "endmodule\n",
+    },
+    {
+        "module \talways_if_else_if ;"
+        "always@*  if (expr) z<=y; else if (w) g<=0;"
+        "endmodule\n",
+        "module always_if_else_if;\n"
+        "  always @*\n"
+        "    if (expr) z <= y;\n"    // fits
+        "    else if (w) g <= 0;\n"  // fits
+        "endmodule\n",
+    },
+    {
+        "module \talways_if_else_if_else ;"
+        "always@*  if (expr) z<=y; else if (w) g<=0;else h<=1;"
+        "endmodule\n",
+        "module always_if_else_if_else;\n"
+        "  always @*\n"
+        "    if (expr) z <= y;\n"    // fits
+        "    else if (w) g <= 0;\n"  // fits
+        "    else h <= 1;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(b,  c)"
+        "  for (;;)\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(b, c) for (;;) s = y;\n"  // fits
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  for (i=0;i<k;++i)\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    for (i = 0; i < k; ++i)\n"
+        "      s = y;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  repeat (jj+kk)\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    repeat (jj + kk)\n"
+        "      s = y;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  foreach(jj[kk])\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    foreach (jj[kk])\n"
+        "      s = y;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  while(jj[kk])\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    while (jj[kk])\n"
+        "      s = y;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  do s=y;while(jj[kk]);\t"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    do\n"
+        "      s = y;\n"
+        "    while (jj[kk]);\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)  \n"
+        "  case(jj)\tS:s = y;endcase\t"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    case (jj)\n"
+        "      S: s = y;\n"
+        "    endcase\n"
+        "endmodule\n",
+    },
+
+    {
+        "module always_if ;"
+        "always@ ( posedge   clk ) if (expr) z<=y;"
+        "endmodule\n",
+        "module always_if;\n"
+        "  always @(posedge clk)\n"  // doesn't fit
+        "    if (expr)\n"
+        "      z <= y;\n"
+        "endmodule\n",
+    },
+    {
+        "module always_if ;"
+        "always@*  if (expr) z<=y;"
+        "endmodule\n",
+        "module always_if;\n"
+        "  always @* if (expr) z <= y;\n"  // fits
+        "endmodule\n",
+    },
+    {
+        "module \talways_if_else ;"
+        "always@*  if (expr) z<=y; else g<=0;"
+        "endmodule\n",
+        "module always_if_else;\n"
+        "  always @*\n"
+        "    if (expr) z <= y;\n"  // fits
+        "    else g <= 0;\n"       // fits
+        "endmodule\n",
+    },
+    {
+        "module \talways_if_else_if ;"
+        "always@*  if (expr) z<=y; else if (w) g<=0;"
+        "endmodule\n",
+        "module always_if_else_if;\n"
+        "  always @*\n"
+        "    if (expr) z <= y;\n"    // fits
+        "    else if (w) g <= 0;\n"  // fits
+        "endmodule\n",
+    },
+    {
+        "module \talways_if_else_if_else ;"
+        "always@*  if (expr) z<=y; else if (w) g<=0;else h<=1;"
+        "endmodule\n",
+        "module always_if_else_if_else;\n"
+        "  always @*\n"
+        "    if (expr) z <= y;\n"    // fits
+        "    else if (w) g <= 0;\n"  // fits
+        "    else h <= 1;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(b,  c)"
+        "  for (;;)\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(b, c) for (;;) s = y;\n"  // fits
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  for (i=0;i<k;++i)\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    for (i = 0; i < k; ++i)\n"
+        "      s = y;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  repeat (jj+kk)\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    repeat (jj + kk)\n"
+        "      s = y;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  foreach(jj[kk])\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    foreach (jj[kk])\n"
+        "      s = y;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  while(jj[kk])\ts = y;"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    while (jj[kk])\n"
+        "      s = y;\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)"
+        "  do s=y;while(jj[kk]);\t"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    do\n"
+        "      s = y;\n"
+        "    while (jj[kk]);\n"
+        "endmodule\n",
+    },
+    {
+        "module m;\n"
+        "always @(posedge clk)  \n"
+        "  case(jj)\tS:s = y;endcase\t"
+        "endmodule",
+        "module m;\n"
+        "  always @(posedge clk)\n"
+        "    case (jj)\n"
+        "      S: s = y;\n"
+        "    endcase\n"
+        "endmodule\n",
+    },
+
+    {
+        // begin/end with labels
+        "module m ;initial  begin:yyy\tend:yyy endmodule",
+        "module m;\n"
+        "  initial begin : yyy\n"
+        "  end : yyy\n"
+        "endmodule\n",
+    },
+    {
+        // conditional generate begin/end with labels
+        "module m ;if\n( 1)  begin:yyy\tend:yyy endmodule",
+        "module m;\n"
+        "  if (1) begin : yyy\n"
+        "  end : yyy\n"
+        "endmodule\n",
+    },
+    {
+        // begin/end with labels, nested
+        "module m ;initial  begin:yyy if(1)begin:zzz "
+        "end:zzz\tend:yyy endmodule",
+        "module m;\n"
+        "  initial begin : yyy\n"
+        "    if (1) begin : zzz\n"
+        "    end : zzz\n"
+        "  end : yyy\n"
+        "endmodule\n",
+    },
+    {
+        "module m ;initial  begin #  1 x<=y ;end endmodule",
+        "module m;\n"
+        "  initial begin\n"
+        "    #1 x <= y;\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        "module m ;initial  begin x<=y ;  y<=z;end endmodule",
+        "module m;\n"
+        "  initial begin\n"
+        "    x <= y;\n"
+        "    y <= z;\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        "module m ;initial  begin # 10 x<=y ;  # 20  y<=z;end endmodule",
+        "module m;\n"
+        "  initial begin\n"
+        "    #10 x <= y;\n"
+        "    #20 y <= z;\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        // qualified variables
+        "module m ;initial  begin automatic int a; "
+        " static byte s=0;end endmodule",
+        "module m;\n"
+        "  initial begin\n"
+        "    automatic int a;\n"
+        "    static byte   s = 0;\n"  // aligned
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        "module m ;initial  begin automatic int a,b; "
+        " static byte s,t;end endmodule",
+        "module m;\n"
+        "  initial begin\n"
+        "    automatic int a, b;\n"
+        "    static byte s, t;\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        "module m ;initial  begin   static byte a=1,b=0;end endmodule",
+        "module m;\n"
+        "  initial begin\n"
+        "    static byte a = 1, b = 0;\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        "module m ;initial  begin   const int a=0;end endmodule",
+        "module m;\n"
+        "  initial begin\n"
+        "    const int a = 0;\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        "module m ;initial  begin automatic   const int a=0;end endmodule",
+        "module m;\n"
+        "  initial begin\n"
+        "    automatic const int a = 0;\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        "module m ;initial  begin const  var automatic  int a=0;end endmodule",
+        "module m;\n"
+        "  initial begin\n"
+        "    const var automatic int a = 0;\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        "module m ;initial  begin static byte s  ={<<{a}};end endmodule",
+        "module m;\n"
+        "  initial begin\n"
+        "    static byte s = {<<{a}};\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        "module m ;initial  begin static int s  ={>>4{a}};end endmodule",
+        "module m;\n"
+        "  initial begin\n"
+        "    static int s = {>>4{a}};\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        "module m; final  assert   (expr ) ;endmodule",
+        "module m;\n"
+        "  final assert (expr);\n"
+        "endmodule\n",
+    },
+    {
+        "module m; final  begin\tassert   (expr ) ;end  endmodule",
+        "module m;\n"
+        "  final begin\n"
+        "    assert (expr);\n"
+        "  end\n"
+        "endmodule\n",
+    },
+    {
+        "module m; final  assume   (expr ) ;endmodule",
+        "module m;\n"
+        "  final assume (expr);\n"
+        "endmodule\n",
+    },
+    {
+        "module m; final  cover   (expr ) ;endmodule",
+        "module m;\n"
+        "  final cover (expr);\n"
+        "endmodule\n",
+    },
+    {
+        // two consecutive clocking declarations in modules
+        " module mcd ; "
+        "clocking   cb @( posedge clk);\t\tendclocking "
+        "clocking cb2   @ (posedge  clk\n); endclocking endmodule",
+        "module mcd;\n"
+        "  clocking cb @(posedge clk);\n"
+        "  endclocking\n"
+        "  clocking cb2 @(posedge clk);\n"
+        "  endclocking\n"
+        "endmodule\n",
+    },
+    {
+        // two consecutive clocking declarations in modules, with end labels
+        " module mcd ; "
+        "clocking   cb @( posedge clk);\t\tendclocking:  cb "
+        "clocking cb2   @ (posedge  clk\n); endclocking   :cb2 endmodule",
+        "module mcd;\n"
+        "  clocking cb @(posedge clk);\n"
+        "  endclocking : cb\n"
+        "  clocking cb2 @(posedge clk);\n"
+        "  endclocking : cb2\n"
+        "endmodule\n",
+    },
+    {
+        // clocking declarations with ports in modules
+        " module mcd ; "
+        "clocking cb   @ (posedge  clk\n); input a; output b; endclocking "
+        "endmodule",
+        "module mcd;\n"
+        "  clocking cb @(posedge clk);\n"
+        "    input a;\n"
+        "    output b;\n"
+        "  endclocking\n"
+        "endmodule\n",
+    },
+    {
+        // DPI import declarations in modules
+        "module mdi;"
+        "import   \"DPI-C\" function  int add(\n) ;"
+        "import \"DPI-C\"\t\tfunction int\nsleep( input int secs );"
+        "import \"DPI-C\"\t\tfunction int\nwake( input int secs, output bit "
+        "[2:0] z);"
+        "endmodule",
+        "module mdi;\n"
+        "  import \"DPI-C\" function int add();\n"
+        "  import \"DPI-C\" function int sleep(\n"
+        "    input int secs\n"
+        "  );\n"
+        "  import \"DPI-C\" function int wake(\n"
+        "    input  int       secs,\n"
+        "    output bit [2:0] z\n"
+        "  );\n"
+        "endmodule\n",
+    },
+    {
+        // DPI export declarations in modules
+        "module m;"
+        "export \"DPI-C\" function get;"
+        "export \"DPI-C\" function mhpmcounter_get;\n"
+        "export \"DPI-C\"\t\tfunction int\nwake( input int secs, output bit "
+        "[2:0] z);"
+        "endmodule",
+        "module m;\n"
+        "  export \"DPI-C\" function get;\n"
+        "  export \"DPI-C\"\n"
+        "      function mhpmcounter_get;\n"  // doesn't fit in 40-col
+        "  export \"DPI-C\" function int wake(\n"
+        "    input  int       secs,\n"
+        "    output bit [2:0] z\n"
+        "  );\n"
+        "endmodule\n",
+    },
+    {// Two consecutive EOL comments in kDPIImportItem
+     "import \"DPI-C\" context function void foo(\n"
+     "  input bit first,\n"
+     "  // c3\n"
+     "  // c3+\n"
+     "  input bit second\n"
+     ");\n",
+     "import \"DPI-C\" context\n"
+     "    function void foo(\n"
+     "  input bit first,\n"
+     "  // c3\n"
+     "  // c3+\n"
+     "  input bit second\n"
+     ");\n"},
+    {"export \"\" t;\n", "export \"\" t;\n"},
+    {"import \"DPI-C\" context function void func(input bit impl_i,"
+     "input bit op_i,"
+     "input bit [5:0] mode_i,"
+     "input bit [3:0][31:0] iv_i,"
+     "input bit [2:0] key_len_i,"
+     "input bit [7:0][31:0] key_i,"
+     "input bit [7:0] data_i[],"
+     "output bit [7:0] data_o[]);",
+     "import \"DPI-C\" context\n"
+     "    function void func(\n"
+     "  input  bit             impl_i,\n"
+     "  input  bit             op_i,\n"
+     "  input  bit [5:0]       mode_i,\n"
+     "  input  bit [3:0][31:0] iv_i,\n"
+     "  input  bit [2:0]       key_len_i,\n"
+     "  input  bit [7:0][31:0] key_i,\n"
+     "  input  bit [7:0]       data_i   [],\n"
+     "  output bit [7:0]       data_o   []\n"
+     ");\n"},
+    {// module with system task call w or w/o parentheses
+     "module m; initial begin #10 $display(\"foo\"); $display(\"bar\");"
+     "end endmodule",
+     "module m;\n"
+     "  initial begin\n"
+     "    #10 $display(\"foo\");\n"
+     "    $display(\"bar\");\n"
+     "  end\n"
+     "endmodule\n"},
+    {// module with system task call
+     "module m; initial begin #10 $display; $display;"
+     "end endmodule",
+     "module m;\n"
+     "  initial begin\n"
+     "    #10 $display;\n"
+     "    $display;\n"
+     "  end\n"
+     "endmodule\n"},
+
+};
+
+TEST(FormatterEndToEndTest, ModuleFormatterTestCases) {
+  RunFormatterTestCases40(kModuleFormatterTestCases);
+}
+
+}  // namespace
+}  // namespace formatter
+}  // namespace verilog
diff --git a/verible/verilog/formatting/formatter_test.cc b/verible/verilog/formatting/formatter_test.cc
index 02853d2..4b50ab9 100644
--- a/verible/verilog/formatting/formatter_test.cc
+++ b/verible/verilog/formatting/formatter_test.cc
@@ -1,4 +1,4 @@
-// Copyright 2017-2020 The Verible Authors.
+// Copyright 2017-2026 The Verible Authors.
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -13,42 +13,24 @@
 // limitations under the License.
 
 // Test cases in this file should be *insensitive* to wrapping penalties.
-// Penalty-sensitive tests belong in formatter_tuning_test.cc.
-// Methods for keeping tests penalty insensitive:
-//   * Short lines and partitions.  Lines that fit need no wrapping.
-//   * Forced line breaks using //comments (reduce decision-making)
+// Penalty-sensitive tests belong in formatter-tuning_test.cc.
+// Thematic end-to-end cases live in sibling formatter_*_test.cc files.
+// New GitHub-issue regressions belong in formatter_issue_regression_test.cc.
 
 #include "verible/verilog/formatting/formatter.h"
 
-#include <cctype>
-#include <cstddef>
 #include <memory>
 #include <sstream>
-#include <string>
 #include <string_view>
-#include <vector>
 
 #include "absl/log/die_if_null.h"
 #include "absl/status/status.h"
-#include "absl/strings/match.h"
-#include "absl/strings/str_split.h"
-#include "gmock/gmock.h"
 #include "gtest/gtest.h"
-#include "verible/common/formatting/align.h"
-#include "verible/common/formatting/basic-format-style.h"
-#include "verible/common/strings/display-utils.h"
-#include "verible/common/strings/position.h"
 #include "verible/common/text/text-structure.h"
-#include "verible/common/util/interval.h"
 #include "verible/common/util/logging.h"
 #include "verible/verilog/analysis/verilog-analyzer.h"
 #include "verible/verilog/formatting/format-style.h"
-
-#undef EXPECT_OK
-#define EXPECT_OK(value) EXPECT_TRUE((value).ok())
-
-#undef ASSERT_OK
-#define ASSERT_OK(value) ASSERT_TRUE((value).ok())
+#include "verible/verilog/formatting/formatter-test-utils.h"
 
 namespace verilog {
 namespace formatter {
@@ -63,12 +45,7 @@
 static constexpr VerilogPreprocess::Config kDefaultPreprocess;
 
 using absl::StatusCode;
-using testing::HasSubstr;
-using verible::AlignmentPolicy;
-using verible::IndentationStyle;
-using verible::LineNumberSet;
 
-// Tests that clean output passes.
 TEST(VerifyFormattingTest, NoError) {
   const std::string_view code("class c;endclass\n");
   const std::unique_ptr<VerilogAnalyzer> analyzer =
@@ -114,15 +91,6 @@
   EXPECT_EQ(status.code(), StatusCode::kDataLoss);
 }
 
-struct FormatterTestCase {
-  std::string_view input;
-  std::string_view expected;
-};
-
-static const LineNumberSet kEnableAllLines;
-
-// Test that the expected output is produced with the formatter using a custom
-// FormatStyle.
 TEST(FormatterTest, FormatCustomStyleTest) {
   static constexpr FormatterTestCase kTestCases[] = {
       {"", ""},
@@ -146,21107 +114,18 @@
   }
 }
 
-static constexpr FormatterTestCase kFormatterTestCases[] = {
+// Small smoke subset; thematic cases live in sibling formatter_*_test.cc files.
+static constexpr FormatterTestCase kSmokeFormatterTestCases[] = {
     {"", ""},
     {"\n", "\n"},
     {"\n\n", "\n\n"},
     {"\t//comment\n", "//comment\n"},
     {"\t/*comment*/\n", "/*comment*/\n"},
     {"\t/*multi-line\ncomment*/\n", "/*multi-line\ncomment*/\n"},
-    // preprocessor test cases
-    {"`include    \"path/to/file.vh\"\n", "`include \"path/to/file.vh\"\n"},
-    {"`include    `\"path/to/file.vh`\"\n", "`include `\"path/to/file.vh`\"\n"},
-    {"`define    FOO\n", "`define FOO\n"},
-    {"`define    FOO   BAR\n", "`define FOO BAR\n"},
-    {"`define    FOO\n"
-     "`define  BAR\n",
-     "`define FOO\n"
-     "`define BAR\n"},
-    {"`define FOO_``BAR 1\n", "`define FOO_``BAR 1\n"},
-    {"`define FOO_```BAR 1\n", "`define FOO_```BAR 1\n"},
-    {"`define FOO ``BAR\n", "`define FOO ``BAR\n"},
-    {"`define A``B``C 2\n", "`define A``B``C 2\n"},
-    {"`define A(x)``y\n", "`define A(x) ``y\n"},
-    {"`define    FOO_``BAR\n", "`define FOO_``BAR\n"},
-    {"`ifndef    FOO\n"
-     "`endif // FOO\n",
-     "`ifndef FOO\n"
-     "`endif  // FOO\n"},
-    {"`ifndef    FOO\n"
-     "`define   BAR\n"
-     "`endif\n",
-     "`ifndef FOO\n"
-     "`define BAR\n"
-     "`endif\n"},
-    {"`ifndef    FOO\n"
-     "`define   BAR\n\n"  // one more blank line
-     "`endif\n",
-     "`ifndef FOO\n"
-     "`define BAR\n\n"
-     "`endif\n"},
-    {"`define    FOO   \\\n"
-     "  BAR\n",
-     "`define FOO \\\n"  // TODO(b/72527558): right align '\'s to column limit
-     "  BAR\n"},
-    {"`define    FOOOOOOOOOOOOOOOO   \\\n"
-     "  BAAAAAAAAAAAAAAAAR BAAAAAAAAAAAAAZ;\n",
-     "`define FOOOOOOOOOOOOOOOO \\\n"  // macro text starts at '\'
-     "  BAAAAAAAAAAAAAAAAR BAAAAAAAAAAAAAZ;\n"},
-    {"`ifdef      FOO\n"
-     "  `fine()\n"
-     "`else\n"
-     "  `error()\n"
-     "`endif\n",
-     "`ifdef FOO\n"
-     "`fine()\n"
-     "`else\n"
-     "`error()\n"
-     "`endif\n"},
-    {"`ifdef      FOO\n"
-     "  `fine()\n"
-     "`else // trouble\n"
-     "  `error()\n"
-     "`endif\n",
-     "`ifdef FOO\n"
-     "`fine()\n"
-     "`else  // trouble\n"
-     "`error()\n"
-     "`endif\n"},
-    {"`ifdef      FOO\n"
-     "  `fine()\n"
-     "`else /* trouble */\n"
-     "  `error()\n"
-     "`endif\n",
-     "`ifdef FOO\n"
-     "`fine()\n"
-     "`else  /* trouble */\n"
-     "`error()\n"
-     "`endif\n"},
-    {"    // lonely comment\n", "// lonely comment\n"},
-    {"    // first comment\n"
-     "  // last comment\n",
-     "// first comment\n"
-     "// last comment\n"},
-    {"    // starting comment\n"
-     "  `define   FOO\n",
-     "// starting comment\n"
-     "`define FOO\n"},
-    {"  `define   FOO\n"
-     "   // trailing comment\n",
-     "`define FOO\n"
-     "// trailing comment\n"},
-    {"  `define   FOO\n"
-     "   // trailing comment 1\n"
-     "      // trailing comment 2\n",
-     "`define FOO\n"
-     "// trailing comment 1\n"
-     "// trailing comment 2\n"},
-    {
-        "  `define   FOO    \\\n"  // multiline macro definition
-        " 1\n",
-        "`define FOO \\\n"
-        " 1\n"  // TODO(b/141517267): Reflowing macro definitions
-    },
-    {"`define FOO    \\\n"  // multiline macro definition
-     "        b\n",
-     "`define FOO \\\n"  // no need to align '\'
-     "        b\n"},
-    {"`define FOO    \\\n"  // multiline macro definition
-     "        a +    \\\n"
-     "        b\n",
-     "`define FOO    \\\n"  // preserve spacing before '\'
-     "        a +    \\\n"  // to stay aligned with this one
-     "        b\n"},
-    {"    // comment with backslash\\\n", "// comment with backslash\\\n"},
-    {// macro with MacroArg tokens as arguments
-     "`FOOOOOO(\nbar1...\n,\nbar2...\n,\nbar3...\n,\nbar4\n)\n",
-     "`FOOOOOO(bar1..., bar2..., bar3...,\n"
-     "         bar4)\n"},
-    {// macro declaration exceeds line length limit
-     "`F_MACRO(looooooong_type if_it_fits_I_sits)\n",
-     "`F_MACRO(\n"
-     "    looooooong_type if_it_fits_I_sits)\n"},
-    {// macro call with not fitting arguments
-     "`MACRO_FFFFFFFFFFF("
-     "type_a_aaaa,type_b_bbbbb,"
-     "type_c_cccccc,type_d_dddddddd,"
-     "type_e_eeeeeeee,type_f_ffff)\n",
-     "`MACRO_FFFFFFFFFFF(\n"
-     "    type_a_aaaa, type_b_bbbbb,\n"
-     "    type_c_cccccc, type_d_dddddddd,\n"
-     "    type_e_eeeeeeee, type_f_ffff)\n"},
-    {// nested macro call
-     "`MACRO_FFFFFFFFFFF( "
-     "`A(type_a_aaaa), `B(type_b_bbbbb), "
-     "`C(type_c_cccccc), `D(type_d_dddddddd), "
-     "`E(type_e_eeeeeeee), `F(type_f_ffff))\n",
-     "`MACRO_FFFFFFFFFFF(`A(type_a_aaaa),\n"
-     "                   `B(type_b_bbbbb),\n"
-     "                   `C(type_c_cccccc),\n"
-     "                   `D(type_d_dddddddd),\n"
-     "                   `E(type_e_eeeeeeee),\n"
-     "                   `F(type_f_ffff))\n"},
-    {// two-level nested macro call
-     "`MACRO_FFFFFFFFFFF( "
-     "`A(type_a_aaaa, `B(type_b_bbbbb)), "
-     "`C(type_c_cccccc, `D(type_d_dddddddd)), "
-     "`E(type_e_eeeeeeee, `F(type_f_ffff)))\n",
-     "`MACRO_FFFFFFFFFFF(\n"
-     "    `A(type_a_aaaa, `B(type_b_bbbbb)),\n"
-     "    `C(type_c_cccccc,\n"
-     "       `D(type_d_dddddddd)),\n"
-     "    `E(type_e_eeeeeeee,\n"
-     "       `F(type_f_ffff)))\n"},
-    {// three-level nested macro call
-     "`MACRO_FFFFFFFFFFF(`A(type_a_aaaa,"
-     "`B(type_b_bbbbb,`C(type_c_cccccc))),"
-     "`D(type_d_dddddddd,`E(type_e_eeeeeeee,"
-     "`F(type_f_ffff))))\n",
-     "`MACRO_FFFFFFFFFFF(\n"
-     "    `A(type_a_aaaa,\n"
-     "       `B(type_b_bbbbb,\n"
-     "          `C(type_c_cccccc))),\n"
-     "    `D(type_d_dddddddd,\n"
-     "       `E(type_e_eeeeeeee,\n"
-     "          `F(type_f_ffff))))\n"},
-    {// macro call with MacroArg tokens as arugments and with semicolon
-     "`FOOOOOO(\nbar1...\n,\nbar2...\n,\nbar3...\n,\nbar4\n);\n",
-     "`FOOOOOO(bar1..., bar2..., bar3...,\n"
-     "         bar4);\n"},
-    {// macro declaration exceeds line length limit and contains semicolon
-     "`F_MACRO(looooooong_type if_it_fits_I_sits);\n",
-     "`F_MACRO(\n"
-     "    looooooong_type if_it_fits_I_sits);\n"},
-    {// macro call with not fitting arguments and semicolon
-     "`MACRO_FFFFFFFFFFF("
-     "type_a_aaaa,type_b_bbbbb,"
-     "type_c_cccccc,type_d_dddddddd,"
-     "type_e_eeeeeeee,type_f_ffff);\n",
-     "`MACRO_FFFFFFFFFFF(\n"
-     "    type_a_aaaa, type_b_bbbbb,\n"
-     "    type_c_cccccc, type_d_dddddddd,\n"
-     "    type_e_eeeeeeee, type_f_ffff);\n"},
-    {// nested macro call with semicolon
-     "`MACRO_FFFFFFFFFFF( "
-     "`A(type_a_aaaa), `B(type_b_bbbbb), "
-     "`C(type_c_cccccc), `D(type_d_dddddddd), "
-     "`E(type_e_eeeeeeee), `F(type_f_ffff));\n",
-     "`MACRO_FFFFFFFFFFF(`A(type_a_aaaa),\n"
-     "                   `B(type_b_bbbbb),\n"
-     "                   `C(type_c_cccccc),\n"
-     "                   `D(type_d_dddddddd),\n"
-     "                   `E(type_e_eeeeeeee),\n"
-     "                   `F(type_f_ffff));\n"},
-    {// two-level nested macro call with semicolon
-     "`MACRO_FFFFFFFFFFF( "
-     "`A(type_a_aaaa, `B(type_b_bbbbb)), "
-     "`C(type_c_cccccc, `D(type_d_dddddddd)), "
-     "`E(type_e_eeeeeeee, `F(type_f_ffff)));\n",
-     "`MACRO_FFFFFFFFFFF(\n"
-     "    `A(type_a_aaaa, `B(type_b_bbbbb)),\n"
-     "    `C(type_c_cccccc,\n"
-     "       `D(type_d_dddddddd)),\n"
-     "    `E(type_e_eeeeeeee,\n"
-     "       `F(type_f_ffff)));\n"},
-    {// three-level nested macro call with semicolon
-     "`MACRO_FFFFFFFFFFF(`A(type_a_aaaa,"
-     "`B(type_b_bbbbb,`C(type_c_cccccc))),"
-     "`D(type_d_dddddddd,`E(type_e_eeeeeeee,"
-     "`F(type_f_ffff))));\n",
-     "`MACRO_FFFFFFFFFFF(\n"
-     "    `A(type_a_aaaa,\n"
-     "       `B(type_b_bbbbb,\n"
-     "          `C(type_c_cccccc))),\n"
-     "    `D(type_d_dddddddd,\n"
-     "       `E(type_e_eeeeeeee,\n"
-     "          `F(type_f_ffff))));\n"},
-    {// macro call with no args
-     "`FOOOOOO()\n", "`FOOOOOO()\n"},
-    {// macro call with no args and semicolon
-     "`FOOOOOO();\n", "`FOOOOOO();\n"},
-    {// macro call with no args and semicolon separated by space
-     "`FOOOOOO() ;\n", "`FOOOOOO();\n"},
-    {// macro call with comments in argument list
-     "`FOO(aa, //aa\nbb , // bb\ncc)\n",
-     "`FOO(aa,  //aa\n"
-     "     bb,  // bb\n"
-     "     cc)\n"},
-    {// macro call with comment before first argument
-     "`FOO(//aa\naa, //bb\nbb , // cc\ncc)\n",
-     "`FOO(  //aa\n"
-     "    aa,  //bb\n"
-     "    bb,  // cc\n"
-     "    cc)\n"},
-    {// macro call with argument including trailing EOL comment
-     "`FOO(aa, bb,//cc\ndd)\n",
-     "`FOO(aa, bb,  //cc\n"
-     "     dd)\n"},
-    {// macro call with argument including EOL comment on own line
-     "`FOOOO(aa, bb,\n//cc\ndd)\n",
-     "`FOOOO(aa, bb,\n"
-     "       //cc\n"
-     "       dd)\n"},
-    {"  // leading comment\n"
-     "  `define   FOO    \\\n"  // multiline macro definition
-     "1\n"
-     "   // trailing comment\n",
-     "// leading comment\n"
-     "`define FOO \\\n"
-     "1\n"  // TODO(b/141517267): Reflowing macro definitions
-     "// trailing comment\n"},
-    {// macro call after define
-     "`define   FOO   BAR\n"
-     "  `FOO( bar )\n",
-     "`define FOO BAR\n"
-     "`FOO(bar)\n"},
-    {// multiple argument macro call
-     "  `FOO( bar , baz )\n", "`FOO(bar, baz)\n"},
-    {// long macro call breaking
-     " `ASSERT_INIT(S, (D == 4 && K inside {0, 1}) ||"
-     " (D == 3 && K== 4))\n",
-     "`ASSERT_INIT(\n"
-     "    S, (D == 4 && K inside {0, 1}) ||\n"
-     "           (D == 3 && K == 4))\n"},
-    {// long macro call breaking
-     " `AINIT(S, (D == 4 && K inside {0, 1}) ||"
-     " (D == 3 && K== 4))\n",
-     "`AINIT(S, (D == 4 && K inside {0, 1}) ||\n"
-     "              (D == 3 && K == 4))\n"},
-    {// long macro call breaking
-     " `ASSERT_INIT(S, D == 4 && K inside {0, 1})\n",
-     "`ASSERT_INIT(S,\n"
-     "             D == 4 && K inside {0, 1})\n"},
-    {// macro call in function
-     "function void foo( );   foo=`FOO( bar , baz ) ; endfunction\n",
-     "function void foo();\n"
-     "  foo = `FOO(bar, baz);\n"
-     "endfunction\n"},
-    {// nested macro call in function
-     "function void foo( );   foo=`FOO( `BAR ( baz ) ) ; endfunction\n",
-     "function void foo();\n"
-     "  foo = `FOO(`BAR(baz));\n"
-     "endfunction\n"},
-    {// macro call in class
-     "class foo;    `FOO  ( bar , baz ) ; endclass\n",
-     "class foo;\n"
-     "  `FOO(bar, baz);\n"
-     "endclass\n"},
-    {// nested macro call in class
-     "class foo;    `FOO  ( `BAR ( baz1 , baz2 ) ) ; endclass\n",
-     "class foo;\n"
-     "  `FOO(`BAR(baz1, baz2));\n"
-     "endclass\n"},
-    {// multi-line macro arg "aaaa..." should start on its own line,
-     // even if its first line would fit under the column limit
-     "`CHECK_FATAL(rd_tr,\n"
-     "             aaaa     == zzz;\n"
-     "             ggg      == vv::w;,\n"
-     "             \"Failed to ..........\")\n",
-     "`CHECK_FATAL(rd_tr,\n"
-     "             aaaa     == zzz;\n"
-     "             ggg      == vv::w;,\n"
-     "             \"Failed to ..........\")\n"},
-    {// macro call nested with function call containing an ifdef
-     "`J(D(`ifdef e))\n",
-     "`J(D(\n"
-     "   `ifdef e))\n"},
-
-    // `uvm macros indenting
-    {
-        // simple test case
-        "`uvm_object_utils_begin(aa)\n"
-        "`uvm_field_int(bb, UVM_DEFAULT)\n"
-        "`uvm_field_int(cc, UVM_DEFAULT)\n"
-        "`uvm_object_utils_end\n",
-        "`uvm_object_utils_begin(aa)\n"
-        "  `uvm_field_int(bb, UVM_DEFAULT)\n"
-        "  `uvm_field_int(cc, UVM_DEFAULT)\n"
-        "`uvm_object_utils_end\n",
-    },
-    {// multiple uvm.*begin - uvm.*end ranges
-     "`uvm_object_utils_begin(aa)\n"
-     "`uvm_field_int(bb, UVM_DEFAULT)\n"
-     "`uvm_field_int(cc, UVM_DEFAULT)\n"
-     "`uvm_object_utils_end\n"
-     "`uvm_field_int(bb, UVM_DEFAULT)\n"
-     "`uvm_field_int(cc, UVM_DEFAULT)\n"
-     "`uvm_object_utils_begin(bb)\n"
-     "`uvm_field_int(bb, UVM_DEFAULT)\n"
-     "`uvm_field_int(cc, UVM_DEFAULT)\n"
-     "`uvm_object_utils_end\n"
-     "`uvm_field_int(bb, UVM_DEFAULT)\n"
-     "`uvm_field_int(cc, UVM_DEFAULT)\n",
-     "`uvm_object_utils_begin(aa)\n"
-     "  `uvm_field_int(bb, UVM_DEFAULT)\n"
-     "  `uvm_field_int(cc, UVM_DEFAULT)\n"
-     "`uvm_object_utils_end\n"
-     "`uvm_field_int(bb, UVM_DEFAULT)\n"
-     "`uvm_field_int(cc, UVM_DEFAULT)\n"
-     "`uvm_object_utils_begin(bb)\n"
-     "  `uvm_field_int(bb, UVM_DEFAULT)\n"
-     "  `uvm_field_int(cc, UVM_DEFAULT)\n"
-     "`uvm_object_utils_end\n"
-     "`uvm_field_int(bb, UVM_DEFAULT)\n"
-     "`uvm_field_int(cc, UVM_DEFAULT)\n"},
-    {
-        // empty uvm.*begin - uvm.*end range
-        "`uvm_component_utils_begin(aa)\n"
-        "`uvm_component_utils_end\n",
-        "`uvm_component_utils_begin(aa)\n"
-        "`uvm_component_utils_end\n",
-    },
-    {
-        // uvm_field_utils
-        "`uvm_field_utils_begin(aa)\n"
-        "`uvm_field_int(bb, UVM_DEFAULT)\n"
-        "`uvm_field_int(cc, UVM_DEFAULT)\n"
-        "`uvm_field_utils_end\n",
-        "`uvm_field_utils_begin(aa)\n"
-        "  `uvm_field_int(bb, UVM_DEFAULT)\n"
-        "  `uvm_field_int(cc, UVM_DEFAULT)\n"
-        "`uvm_field_utils_end\n",
-    },
-    {
-        // uvm_component
-        "`uvm_component_utils_begin(aa)\n"
-        "`uvm_field_int(bb, UVM_DEFAULT)\n"
-        "`uvm_field_int(cc, UVM_DEFAULT)\n"
-        "`uvm_component_utils_end\n",
-        "`uvm_component_utils_begin(aa)\n"
-        "  `uvm_field_int(bb, UVM_DEFAULT)\n"
-        "  `uvm_field_int(cc, UVM_DEFAULT)\n"
-        "`uvm_component_utils_end\n",
-    },
-    {
-        // nested uvm macros
-        "`uvm_field_int(l0, UVM_DEFAULT)\n"
-        "`uvm_component_utils_begin(l0)\n"
-        "`uvm_field_int(l1, UVM_DEFAULT)\n"
-        "`uvm_component_utils_begin(l1)\n"
-        "`uvm_field_int(l2, UVM_DEFAULT)\n"
-        "`uvm_component_utils_begin(l2)\n"
-        "`uvm_field_int(l3, UVM_DEFAULT)\n"
-        "`uvm_component_utils_end\n"
-        "`uvm_field_int(l2, UVM_DEFAULT)\n"
-        "`uvm_component_utils_end\n"
-        "`uvm_field_int(l1, UVM_DEFAULT)\n"
-        "`uvm_component_utils_end\n"
-        "`uvm_field_int(l0, UVM_DEFAULT)\n",
-        "`uvm_field_int(l0, UVM_DEFAULT)\n"
-        "`uvm_component_utils_begin(l0)\n"
-        "  `uvm_field_int(l1, UVM_DEFAULT)\n"
-        "  `uvm_component_utils_begin(l1)\n"
-        "    `uvm_field_int(l2, UVM_DEFAULT)\n"
-        "    `uvm_component_utils_begin(l2)\n"
-        "      `uvm_field_int(l3, UVM_DEFAULT)\n"
-        "    `uvm_component_utils_end\n"
-        "    `uvm_field_int(l2, UVM_DEFAULT)\n"
-        "  `uvm_component_utils_end\n"
-        "  `uvm_field_int(l1, UVM_DEFAULT)\n"
-        "`uvm_component_utils_end\n"
-        "`uvm_field_int(l0, UVM_DEFAULT)\n",
-    },
-    {
-        // non-uvm macro
-        "`my_macro_begin(aa)\n"
-        "`my_field(b)\n"
-        "`my_field(c)\n"
-        "`my_macro_end\n",
-        "`my_macro_begin(aa)\n"
-        "`my_field(b)\n"
-        "`my_field(c)\n"
-        "`my_macro_end\n",
-    },
-    {
-        // unbalanced uvm macros: missing uvm.*end macro
-        "`uvm_component_utils_begin(aa)\n"
-        "`uvm_field_int(bb, UVM_DEFAULT)\n"
-        "`uvm_field_int(cc, UVM_DEFAULT)\n",
-        "`uvm_component_utils_begin(aa)\n"
-        "`uvm_field_int(bb, UVM_DEFAULT)\n"
-        "`uvm_field_int(cc, UVM_DEFAULT)\n",
-    },
-    {
-        // unbalanced uvm macros: missing uvm.*begin macro
-        "`uvm_field_int(bb, UVM_DEFAULT)\n"
-        "`uvm_field_int(cc, UVM_DEFAULT)\n"
-        "`uvm_component_utils_end\n",
-        "`uvm_field_int(bb, UVM_DEFAULT)\n"
-        "`uvm_field_int(cc, UVM_DEFAULT)\n"
-        "`uvm_component_utils_end\n",
-    },
-    {// unbalanced uvm macros: missing _begin macro between
-     // matching uvm.*begin-uvm.*end macros
-     "`uvm_component_utils_begin(aa)\n"
-     "`uvm_field_int(bb, UVM_DEFAULT)\n"
-     "`uvm_field_int(cc, UVM_DEFAULT)\n"
-     "`uvm_component_utils_end\n"
-     "`uvm_field_int(bb, UVM_DEFAULT)\n"
-     "`uvm_field_int(bb, UVM_DEFAULT)\n"
-     "`uvm_field_int(cc, UVM_DEFAULT)\n"
-     "`uvm_component_utils_end\n"
-     "`uvm_field_int(bb, UVM_DEFAULT)\n"
-     "`uvm_component_utils_begin(aa)\n"
-     "`uvm_field_int(bb, UVM_DEFAULT)\n"
-     "`uvm_field_int(cc, UVM_DEFAULT)\n"
-     "`uvm_component_utils_end\n",
-     "`uvm_component_utils_begin(aa)\n"
-     "  `uvm_field_int(bb, UVM_DEFAULT)\n"
-     "  `uvm_field_int(cc, UVM_DEFAULT)\n"
-     "`uvm_component_utils_end\n"
-     "`uvm_field_int(bb, UVM_DEFAULT)\n"
-     "`uvm_field_int(bb, UVM_DEFAULT)\n"
-     "`uvm_field_int(cc, UVM_DEFAULT)\n"
-     "`uvm_component_utils_end\n"
-     "`uvm_field_int(bb, UVM_DEFAULT)\n"
-     "`uvm_component_utils_begin(aa)\n"
-     "  `uvm_field_int(bb, UVM_DEFAULT)\n"
-     "  `uvm_field_int(cc, UVM_DEFAULT)\n"
-     "`uvm_component_utils_end\n"},
-
-    // top-level directive test cases
-    {"`timescale  1ns/1ps\n",  //
-     "`timescale 1ns / 1ps\n"},
-
-    // Multiple compiler directives should remain on separate lines
-    // (regression test for bug where they were merged onto one line)
-    {"`timescale 1 ps / 1 ps\n"
-     "`default_nettype none\n",
-     "`timescale 1 ps / 1 ps\n"
-     "`default_nettype none\n"},
-    {"`resetall\n"
-     "`timescale 1ns/1ps\n"
-     "`default_nettype wire\n",
-     "`resetall\n"
-     "`timescale 1ns / 1ps\n"
-     "`default_nettype wire\n"},
-    // Test with multiple different compiler directives
-    {"`resetall\n"
-     "`celldefine\n"
-     "`timescale 1ns/1ps\n"
-     "`default_nettype none\n",
-     "`resetall\n"
-     "`celldefine\n"
-     "`timescale 1ns / 1ps\n"
-     "`default_nettype none\n"},
-    // Test with compiler directives before module
-    {"`timescale 1ps/1ps\n"
-     "`default_nettype none\n"
-     "module foo;endmodule\n",
-     "`timescale 1ps / 1ps\n"
-     "`default_nettype none\n"
-     "module foo;\nendmodule\n"},
-    // Test with various compiler directives
-    {"`suppress_faults\n"
-     "`enable_portfaults\n"
-     "`delay_mode_distributed\n",
-     "`suppress_faults\n"
-     "`enable_portfaults\n"
-     "`delay_mode_distributed\n"},
-    {"`default_decay_time 10\n"
-     "`default_trireg_strength 50\n",
-     "`default_decay_time 10\n"
-     "`default_trireg_strength 50\n"},
-    // Alignment should ignore compiler directives; declarations align normally.
-    // Place directives at top-level between modules (valid SystemVerilog).
-    {"`timescale 1ns/1ps\n"
-     "module m;\n"
-     "  logic a;\n"
-     "  logic very_long_name;\n"
-     "endmodule\n"
-     "`default_nettype none\n"
-     "module n;\n"
-     "  logic b;\n"
-     "endmodule\n",
-     "`timescale 1ns / 1ps\n"
-     "module m;\n"
-     "  logic a;\n"
-     "  logic very_long_name;\n"
-     "endmodule\n"
-     "`default_nettype none\n"
-     "module n;\n"
-     "  logic b;\n"
-     "endmodule\n"},
-    {"`begin_keywords \"1800-2017\"\n"
-     "module test;endmodule\n"
-     "`end_keywords\n",
-     "`begin_keywords \"1800-2017\"\n"
-     "module test;\nendmodule\n"
-     "`end_keywords\n"},
-
-    // parameter test cases
-    {
-        "  parameter  int   foo=0 ;",
-        "parameter int foo = 0;\n",
-    },
-    {
-        "  parameter  int   foo=bar [ 0 ] ;",  // index expression
-        "parameter int foo = bar[0];\n",
-    },
-    {
-        "  parameter  int   foo=bar [ a+b ] ;",  // binary inside index expr
-        "parameter int foo = bar[a+b];\n",       // allowed to be 0 spaces
-                                                 // (preserved)
-    },
-    {
-        "  parameter  int   foo=bar [ a+ b ] ;",  // binary inside index expr
-        "parameter int foo = bar[a+b];\n",        // allowed to be 0 spaces
-                                                  // (symmetrized)
-    },
-    {
-        "  parameter  int   foo=bar [ a +b ] ;",  // compact binary inside
-        "parameter int foo = bar[a+b];\n",        // index expression
-    },
-    {
-        "  parameter  int   foo=bar [ a  +b ] ;",  // compact binary inside
-        "parameter int foo = bar[a+b];\n",         // index expression
-    },
-    {
-        // with line continuations
-        "  parameter  \\\nint   \\\nfoo=a+ \\\nb ;",
-        "parameter\\\n    int\\\n    foo = a +\\\n    b;\n",
-        // TODO(fangism): should text following a line continuation hang-indent?
-    },
-    // unary prefix expressions
-    {
-        "  parameter  int   foo=- 1 ;",
-        "parameter int foo = -1;\n",
-    },
-    {
-        "  parameter  int   foo=+ 7 ;",
-        "parameter int foo = +7;\n",
-    },
-    {
-        "  parameter  int   foo=- J ;",
-        "parameter int foo = -J;\n",
-    },
-    {
-        "  parameter  int   foo=- ( y ) ;",
-        "parameter int foo = -(y);\n",
-    },
-    {
-        "  parameter  int   foo=- ( z*y ) ;",
-        "parameter int foo = -(z * y);\n",
-    },
-    {
-        "  parameter  int   foo=-  z*- y  ;",
-        "parameter int foo = -z * -y;\n",
-    },
-    {
-        "  parameter  int   foo=( - 2 ) ;",  //
-        "parameter int foo = (-2);\n",
-    },
-    {
-        "  parameter  int   foo=$bar(-  z,- y ) ;",
-        "parameter int foo = $bar(-z, -y);\n",
-    },
-    {"  parameter int a=b&~(c<<d);", "parameter int a = b & ~(c << d);\n"},
-    {"  parameter int a=~~~~b;", "parameter int a = ~~~~b;\n"},
-    {"  parameter int a = ~ ~ ~ ~ b;", "parameter int a = ~~~~b;\n"},
-    {"  parameter int a   =   ~--b;", "parameter int a = ~--b;\n"},
-    {"  parameter int a   =   ~ --b;", "parameter int a = ~--b;\n"},
-    {"  parameter int a = ~ ++ b;", "parameter int a = ~++b;\n"},
-    {"  parameter int a=--b- --c;", "parameter int a = --b - --c;\n"},
-    // ^~ and ~^ are bitwise nor, but ^ ~ isn't
-    {"  parameter int a=b^~(c<<d);", "parameter int a = b ^~ (c << d);\n"},
-    {"  parameter int a=b~^(c<<d);", "parameter int a = b ~^ (c << d);\n"},
-    {"  parameter int a=b^ ~ (c<<d);", "parameter int a = b ^ ~(c << d);\n"},
-    {"  parameter int a=b ^ ~(c<<d);", "parameter int a = b ^ ~(c << d);\n"},
-
-    {"  parameter int a=b^~{c};", "parameter int a = b ^~ {c};\n"},
-    {"  parameter int a=b~^{c};", "parameter int a = b ~^ {c};\n"},
-    {"  parameter int a=b^ ~ {c};", "parameter int a = b ^ ~{c};\n"},
-    {"  parameter int a=b ^ ~{c};", "parameter int a = b ^ ~{c};\n"},
-
-    {"  parameter int a={a}^{b};", "parameter int a = {a} ^ {b};\n"},
-    {"  parameter int a={b}^(c);", "parameter int a = {b} ^ (c);\n"},
-    {"  parameter int a=b[0]^ {c};", "parameter int a = b[0] ^ {c};\n"},
-    {"  parameter int a={c}^a[b];", "parameter int a = {c} ^ a[b];\n"},
-    {"  parameter int a=(c)^{a[b]};", "parameter int a = (c) ^ {a[b]};\n"},
-
-    {"  parameter int a={^{a,^b},c};", "parameter int a = {^{a, ^b}, c};\n"},
-    {"  parameter int a=(a)^(^d[e]^{c});",
-     "parameter int a = (a) ^ (^d[e] ^ {c});\n"},
-    {"  parameter int a=(a)^(^d[e]^f[g]);",
-     "parameter int a = (a) ^ (^d[e] ^ f[g]);\n"},
-    {"  parameter int a=(b^(c^(d^e)));",
-     "parameter int a = (b ^ (c ^ (d ^ e)));\n"},
-    {"  parameter int a={b^{c^{d^e}}};",
-     "parameter int a = {b ^ {c ^ {d ^ e}}};\n"},
-    {"  parameter int a={b^{c[d^e]}};",
-     "parameter int a = {b ^ {c[d^e]}};\n"},  // allow 0 spaces inside "[d^e]"
-    {"  parameter int a={(b^c),(d^^e)};",
-     "parameter int a = {(b ^ c), (d ^ ^e)};\n"},
-
-    {"  parameter int a={(b[x]^{c[y]})};",
-     "parameter int a = {(b[x] ^ {c[y]})};\n"},
-    {"  parameter int a={d^^e[f] ^ (g)};",
-     "parameter int a = {d ^ ^e[f] ^ (g)};\n"},
-
-    // ~| is unary reduction NOR, |~ and | ~ aren't
-    {"  parameter int a=b| ~(c<<d);", "parameter int a = b | ~(c << d);\n"},
-    {"  parameter int a=b|~(c<<d);", "parameter int a = b | ~(c << d);\n"},
-    {"  parameter int a=b| ~| ( c<<d);", "parameter int a = b | ~|(c << d);\n"},
-    {"  parameter int a=b| ~| ~| ( c<<d);",
-     "parameter int a = b | ~|~|(c << d);\n"},
-    {"  parameter int a=b| ~~~( c<<d);",
-     "parameter int a = b | ~~~(c << d);\n"},
-    {
-        "  parameter  int   foo=- - 1 ;",  // double negative
-        "parameter int foo = - -1;\n",
-    },
-    {
-        "  parameter  int   ternary=1?2:3;",
-        "parameter int ternary = 1 ? 2 : 3;\n",
-    },
-    {
-        "  parameter  int   ternary=a?b:c;",
-        "parameter int ternary = a ? b : c;\n",
-    },
-    {
-        "  parameter  int   ternary=\"a\"?\"b\":\"c\";",
-        "parameter int ternary = \"a\" ? \"b\" : \"c\";\n",
-    },
-    {
-        "  parameter  int   t=`\"a`\"?`\"b`\":`\"c`\";",
-        "parameter int t = `\"a`\" ? `\"b`\" : `\"c`\";\n",
-    },
-    {
-        "  parameter  int   ternary=(a)?(b):(c);",
-        "parameter int ternary = (a) ? (b) : (c);\n",
-    },
-    {
-        "  parameter  int   ternary={a}?{b}:{c};",
-        "parameter int ternary = {a} ? {b} : {c};\n",
-    },
-    {
-        "  parameter  int   long_ternary=cond?long_option_t:long_option_f;",
-        "parameter int long_ternary = cond ?\n"
-        "    long_option_t : long_option_f;\n",
-    },
-    {
-        "  parameter  int   break_two=cond\n"
-        "? a_really_long_option_number_one:a_really_long_option_number_two;",
-        "parameter int break_two = cond ?\n"
-        "    a_really_long_option_number_one :\n"
-        "    a_really_long_option_number_two;\n",
-    },
-    {
-        "  assign   ternary=1?2:3;",
-        "assign ternary = 1 ? 2 : 3;\n",
-    },
-    {
-        "  assign   ternary=a?b:c;",
-        "assign ternary = a ? b : c;\n",
-    },
-    {
-        "  assign   ternary={a}?{b}:{c};",
-        "assign ternary = {a} ? {b} : {c};\n",
-    },
-    {
-        "  assign   break_two=cond\n"
-        "? a_really_long_option_number_one:a_really_long_option_number_two;",
-        "assign break_two = cond ?\n"
-        "    a_really_long_option_number_one :\n"
-        "    a_really_long_option_number_two;\n",
-    },
-    {
-        "assign prefetch_d     =\n"
-        "lookup_grant_ic0 ? (lookup_addr_aligned + ADDR) :\n"
-        "                   addr_i;",
-        "assign prefetch_d = lookup_grant_ic0 ?\n"
-        "    (lookup_addr_aligned + ADDR) :\n"
-        "    addr_i;\n",
-    },
-    {
-        "assign prefetch_d     =\n"
-        "lookup_grant_ic0 ? (lookup_addr + 1) :\n"
-        "                   addr_i;",
-        "assign prefetch_d = lookup_grant_ic0 ?\n"
-        "    (lookup_addr + 1) : addr_i;\n",
-    },
-    {
-        "module test;\n"
-        " assign next = // EOL\n"
-        "  foo ? '0 :\n"
-        "  cnt;\n"
-        "endmodule\n",
-        "module test;\n"
-        "  assign next =  // EOL\n"
-        "      foo ? '0 : cnt;\n"
-        "endmodule\n",
-    },
-    {
-        "module test;\n"
-        " assign next = foo // EOL\n"
-        "  ? '0 :\n"
-        "  cnt;\n"
-        "endmodule\n",
-        "module test;\n"
-        "  assign next = foo  // EOL\n"
-        "      ? '0 : cnt;\n"
-        "endmodule\n",
-    },
-    {
-        "module test;\n"
-        " assign next = foo ? // EOL\n"
-        "  '0 :\n"
-        "  cnt;\n"
-        "endmodule\n",
-        "module test;\n"
-        "  assign next = foo ?  // EOL\n"
-        "      '0 : cnt;\n"
-        "endmodule\n",
-    },
-    {
-        "module test;\n"
-        " assign next = foo ? '0 // EOL\n"
-        "  :\n"
-        "  cnt;\n"
-        "endmodule\n",
-        "module test;\n"
-        "  assign next = foo ? '0  // EOL\n"
-        "      : cnt;\n"
-        "endmodule\n",
-    },
-    {
-        "module test;\n"
-        " assign next = foo ? '0 : // EOL\n"
-        "  cnt;\n"
-        "endmodule\n",
-        "module test;\n"
-        "  assign next = foo ? '0 :  // EOL\n"
-        "      cnt;\n"
-        "endmodule\n",
-    },
-    {
-        "module test;\n"
-        " assign next = foo ? '0 : // EOL\n"
-        "  bar ? '1 : '0;\n"
-        "endmodule\n",
-        "module test;\n"
-        "  assign next = foo ? '0 :  // EOL\n"
-        "      bar ? '1 : '0;\n"
-        "endmodule\n",
-    },
-    {
-        "module test;\n"
-        " assign next = foo ? '0 : // EOL\n"
-        "  bar // EOL2\n"
-        " ? '1 : '0;\n"
-        "endmodule\n",
-        "module test;\n"
-        "  assign next = foo ? '0 :  // EOL\n"
-        "      bar  // EOL2\n"
-        "      ? '1 : '0;\n"
-        "endmodule\n",
-    },
-    {
-        "module test;\n"
-        " assign next = foo ? '0 : // EOL\n"
-        "  bar ? // EOL2\n"
-        "  '1 : '0;\n"
-        "endmodule\n",
-        "module test;\n"
-        "  assign next = foo ? '0 :  // EOL\n"
-        "      bar ?  // EOL2\n"
-        "      '1 : '0;\n"
-        "endmodule\n",
-    },
-    {
-        "module test;\n"
-        " assign next = foo ? '0 : // EOL\n"
-        "  bar ? '1 // EOL2\n"
-        "  : '0;\n"
-        "endmodule\n",
-        "module test;\n"
-        "  assign next = foo ? '0 :  // EOL\n"
-        "      bar ? '1  // EOL2\n"
-        "      : '0;\n"
-        "endmodule\n",
-    },
-    {
-        "module test;\n"
-        " assign next = foo ? '0 : // EOL\n"
-        "  bar ? '1 : // EOL2\n"
-        "  '0;\n"
-        "endmodule\n",
-        "module test;\n"
-        "  assign next = foo ? '0 :  // EOL\n"
-        "      bar ? '1 :  // EOL2\n"
-        "      '0;\n"
-        "endmodule\n",
-    },
-    {
-        "assign prefetch_d     =\n"
-        "lookup_ic0 ? // EOL\n"
-        " (lookup_addr + 1) :// BOO\n"
-        "                   addr_i;",
-        "assign prefetch_d = lookup_ic0 ?  // EOL\n"
-        "    (lookup_addr + 1) :  // BOO\n"
-        "    addr_i;\n",
-    },
-    {
-        "module test;\n"
-        " assign next = (foo) ? '0          : // clear \n"
-        "           (bar) ? cnt + 1'b1  : // count \n"
-        "                   cnt;\n"
-        "endmodule\n",
-        "module test;\n"
-        "  assign next = (foo) ? '0 :  // clear \n"
-        "      (bar) ? cnt + 1'b1 :  // count \n"
-        "      cnt;\n"
-        "endmodule\n",
-    },
-    {
-        "module test;\n"
-        " assign next = // FOO\n"
-        "  (foo) ? '0          : // clear \n"
-        "           (bar) ? cnt + 1'b1  : // count \n"
-        "                   cnt;\n"
-        "endmodule\n",
-        "module test;\n"
-        "  assign next =  // FOO\n"
-        "      (foo) ? '0 :  // clear \n"
-        "      (bar) ? cnt + 1'b1 :  // count \n"
-        "      cnt;\n"
-        "endmodule\n",
-    },
-    {
-        "module test;\n"
-        " assign next = foo ? a_really_long_identifier : // EOL\n"
-        "  cnt;\n"
-        "endmodule\n",
-        "module test;\n"
-        "  assign next = foo ?\n"
-        "      a_really_long_identifier :  // EOL\n"
-        "      cnt;\n"
-        "endmodule\n",
-    },
-    {
-        "module test;\n"
-        " assign next = foo ? a_really_long_identifier : // EOL\n"
-        "  another_really_long_identifier;\n"
-        "endmodule\n",
-        "module test;\n"
-        "  assign next = foo ?\n"
-        "      a_really_long_identifier :  // EOL\n"
-        "      another_really_long_identifier;\n"
-        "endmodule\n",
-    },
-    {
-        "module test;\n"
-        " assign next = foo ? a_really_long_identifier : "
-        "another_really_long_identifier;\n"
-        "endmodule\n",
-        "module test;\n"
-        "  assign next = foo ?\n"
-        "      a_really_long_identifier :\n"
-        "      another_really_long_identifier;\n"
-        "endmodule\n",
-    },
-    {
-        "assign m = check                ? {10'b0, foo} :\n"
-        "           (bar && (baz == '0)) ? hello        :\n"
-        "           world                ? temp1        : temp2;\n",
-        "assign m = check ? {10'b0, foo} :\n"
-        "    (bar && (baz == '0)) ? hello :\n"
-        "    world ? temp1 : temp2;\n",
-    },
-    {
-        "assign {a, b} = !(c == d) ? {1'b0, e} :\n"
-        "                ((e == f) && g) ?\n"
-        "                {1'b0, f} : (h) ?\n"
-        "                {1'b0, e} - 1'b1 :\n"
-        "                {1'b0, e} + 1'b1;\n",
-        "assign {a, b} = !(c == d) ? {1'b0, e} :\n"
-        "    ((e == f) && g) ? {1'b0, f} : (h) ?\n"
-        "    {1'b0, e} - 1'b1 : {1'b0, e} + 1'b1;\n",
-    },
-    {
-        "assign {aaaaaaaaaa, bbbbbbbbb} = {1'b0, cccccccccccccccccc[15:0]} +\n"
-        "                                 {1'b0, ddddddddddddddddd[15:0]};\n",
-        "assign {aaaaaaaaaa, bbbbbbbbb} =\n"
-        "    {1'b0, cccccccccccccccccc[15:0]} +\n"
-        "    {1'b0, ddddddddddddddddd[15:0]};\n",
-    },
-    {
-        "covergroup a(string b);\n"
-        "foobar: cross foo, bar {"
-        "ignore_bins baz = binsof(qux) intersect {1, 2, 3, 4, 5, 6, 7};"
-        "}\n"
-        "endgroup : a\n",
-        "covergroup a(string b);\n"
-        "  foobar: cross foo, bar{\n"
-        "    ignore_bins baz =\n"
-        "        binsof (qux) intersect {\n"
-        "      1, 2, 3, 4, 5, 6, 7\n"
-        "    };\n"
-        "  }\n"
-        "endgroup : a\n",
-    },
-    {
-        "assign {aa, bb} = {1'b0, cc} + {1'b0, dd};\n",
-        "assign {aa, bb} = {1'b0, cc} +\n"
-        "    {1'b0, dd};\n",
-    },
-
-    // streaming operators
-    {
-        "   parameter  int  b={ >>   { a } } ;",
-        "parameter int b = {>>{a}};\n",
-    },
-    {
-        "   parameter  int  b={ >>   { a , b,  c } } ;",
-        "parameter int b = {>>{a, b, c}};\n",
-    },
-    {
-        "   parameter  int  b={ >> 4  { a } } ;",
-        "parameter int b = {>>4{a}};\n",
-    },
-    {
-        "   parameter  int  b={ >> byte  { a } } ;",
-        "parameter int b = {>>byte{a}};\n",
-    },
-    {
-        "   parameter  int  b={ >> my_type_t  { a } } ;",
-        "parameter int b = {>>my_type_t{a}};\n",
-    },
-    {
-        "   parameter  int  b={ >> `GET_TYPE  { a } } ;",
-        "parameter int b = {>>`GET_TYPE{a}};\n",
-    },
-    {
-        "   parameter  int  b={ >> 4  {{ >> 2 { a }  }} } ;",
-        "parameter int b = {>>4{{>>2{a}}}};\n",
-    },
-    {
-        "   parameter  int  b={ <<   { a } } ;",
-        "parameter int b = {<<{a}};\n",
-    },
-    {
-        "   parameter  int  b={ <<   { a , b,  c } } ;",
-        "parameter int b = {<<{a, b, c}};\n",
-    },
-    {
-        "   parameter  int  b={ << 4  { a } } ;",
-        "parameter int b = {<<4{a}};\n",
-    },
-    {
-        "   parameter  int  b={ << byte  { a } } ;",
-        "parameter int b = {<<byte{a}};\n",
-    },
-    {
-        "   parameter  int  b={ << my_type_t  { a } } ;",
-        "parameter int b = {<<my_type_t{a}};\n",
-    },
-    {
-        "   parameter  int  b={ << `GET_TYPE  { a } } ;",
-        "parameter int b = {<<`GET_TYPE{a}};\n",
-    },
-    {
-        "   parameter  int  b={ << 4  {{ << 2 { a }  }} } ;",
-        "parameter int b = {<<4{{<<2{a}}}};\n",
-    },
-
-    // basic module test cases
-    {"module foo;endmodule:foo\n",
-     "module foo;\n"
-     "endmodule : foo\n"},
-    {"module\nfoo\n;\nendmodule\n:\nfoo\n",
-     "module foo;\n"
-     "endmodule : foo\n"},
-    {"module\tfoo\t;\tendmodule\t:\tfoo",
-     "module foo;\n"
-     "endmodule : foo\n"},
-    {"module foo;     // foo\n"
-     "endmodule:foo\n",
-     "module foo;  // foo\n"
-     "endmodule : foo\n"},
-    {"module foo;/* foo */endmodule:foo\n",
-     "module foo;  /* foo */\n"
-     "endmodule : foo\n"},
-    {"module pm #(\n"
-     "//comment\n"
-     ") (wire ww);\n"
-     "endmodule\n",
-     "module pm #(\n"
-     "    //comment\n"  // comment indented
-     ") (\n"
-     "    wire ww\n"
-     ");\n"
-     "endmodule\n"},
-    {"module pm ( ) ;\n"  // empty ports list
-     "endmodule\n",
-     "module pm ();\n"
-     "endmodule\n"},
-    {"module pm #(\n"
-     "//comment\n"
-     ") ( );\n"
-     "endmodule\n",
-     "module pm #(\n"
-     "    //comment\n"  // comment indented
-     ") ();\n"          // (); grouped together
-     "endmodule\n"},
-    {"`ifdef FOO\n"
-     "    `ifndef BAR\n"
-     "    `endif\n"
-     "`endif\n",
-     "`ifdef FOO\n"
-     "`ifndef BAR\n"
-     "`endif\n"
-     "`endif\n"},
-    {"module foo(\n"
-     "       `include \"ports.svh\"\n"
-     "         ) ; endmodule\n",
-     "module foo (\n"
-     "    `include \"ports.svh\"\n"
-     ");\n"
-     "endmodule\n"},
-    {"module foo(\n"
-     "       `define FOO\n"
-     "`undef\tFOO\n"
-     "         ) ; endmodule\n",
-     "module foo (\n"
-     "    `define FOO\n"
-     "    `undef FOO\n"
-     ");\n"
-     "endmodule\n"},
-    {"module foo(  input x  , output y ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  x,\n"  // aligned
-     "    output y\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(\n"
-     "// comment\n"
-     "  input x  , output y ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    // comment\n"
-     "    input  x,\n"  // aligned
-     "    output y\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input[2:0]x  , output y [3:0] ) ;endmodule:foo\n",
-     // each port item should be on its own line
-     "module foo (\n"
-     "    input  [2:0] x,\n"  // aligned
-     "    output       y[3:0]\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input wire x  , output reg yy ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  wire x,\n"  // aligned
-     "    output reg  yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input wire x  ,//c1\n"
-     "output reg yyy //c2\n"
-     " ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  wire x,   //c1\n"  // aligned
-     "    output reg  yyy  //c2\n"  // aligned
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input wire x  ,/* c1 */\n"
-     "output reg yyy /* c2 */\n"
-     " ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  wire x,   /* c1 */\n"  // aligned
-     "    output reg  yyy  /* c2 */\n"  // aligned
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(\n"
-     "// comment\n"
-     "input wire x  ,//c1\n"
-     "output reg yyy //c2\n"
-     " ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    // comment\n"
-     "    input  wire x,   //c1\n"  // aligned
-     "    output reg  yyy  //c2\n"  // aligned
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(\n"
-     "/* comment */\n"
-     "input wire x  ,/* c1 */\n"
-     "output reg yyy /* c2 */\n"
-     " ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    /* comment */\n"
-     "    input  wire x,   /* c1 */\n"  // aligned
-     "    output reg  yyy  /* c2 */\n"  // aligned
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input wire x  ,/* c1\n"
-     "c2\n"
-     "c3 */\n"
-     "output reg yyy /* c4 */\n"
-     " ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  wire x,   /* c1\n"
-     "c2\n"
-     "c3 */\n"  // TODO: align multiline comments
-     "    output reg  yyy  /* c4 */\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input wire x  ,/* c1 */\n"
-     "output reg yyy,\n"
-     "output z // c2\n"
-     " ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  wire x,    /* c1 */\n"  // aligned
-     "    output reg  yyy,\n"
-     "    output      z     // c2\n"  // aligned
-     ");\n"
-     "endmodule : foo\n"},
-    {"module m(input logic [4:0] foo,  // comment\n"
-     "input logic bar // comment\n"
-     " ) ;endmodule:m\n",
-     "module m (\n"
-     "    input logic [4:0] foo,  // comment\n"  // aligned
-     "    input logic       bar   // comment\n"  // aligned
-     ");\n"
-     "endmodule : m\n"},
-    {"module foo(  input wire x  , output yy ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  wire x,\n"  // aligned
-     "    output      yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input   x  , output reg yy ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input      x,\n"  // aligned
-     "    output reg yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input   x  , output reg[a:b]yy ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input            x,\n"  // aligned
-     "    output reg [a:b] yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input   [a:b]x  , output reg  yy ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input      [a:b] x,\n"  // aligned
-     "    output reg       yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input   x  , "
-     "  output logic  yy ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input        x,\n"  // aligned
-     "    output logic yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input   [a:c]x  , "
-     "  output logic[a-b: c]  yy ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input        [  a:c] x,\n"  // aligned
-     "    output logic [a-b:c] yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input   [a:c]x  , "
-     "  output logic[a - b: c]  yy ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input        [    a:c] x,\n"  // aligned
-     "    output logic [a - b:c] yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input   [a:c]x  , input zzz ,"
-     "  output logic[a - b: c]  yy ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input        [    a:c] x,\n"    // aligned []'s
-     "    input                  zzz,\n"  // aligned ids
-     "    output logic [a - b:c] yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input   [a:b]x  , "
-     "  output reg[e: f]  yy ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input      [a:b] x,\n"  // aligned
-     "    output reg [e:f] yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input   tri[aa: bb]x  , "
-     "  output reg[e: f]  yy ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  tri [aa:bb] x,\n"  // aligned
-     "    output reg [  e:f] yy\n"  // TODO(b/70310743): align ':'
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input   [a:b][c:d]x  , "
-     "  output reg[e: f]  yy ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input      [a:b][c:d] x,\n"  // aligned
-     "    output reg [e:f]      yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input wire x  [j:k], output reg yy ) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  wire x [j:k],\n"  // aligned
-     "    output reg  yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input wire x  , output reg yy [j:k]) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  wire x,\n"  // aligned
-     "    output reg  yy[j:k]\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input wire x  [p:q], output reg yy [j:k]) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  wire x [p:q],\n"  // aligned
-     "    output reg  yy[j:k]\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input wire x  [p:q][r:s], output reg yy [j:k]) "
-     ";endmodule:foo\n",
-     "module foo (\n"
-     "    input  wire x [p:q][r:s],\n"  // aligned
-     "    output reg  yy[j:k]\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input wire x  [p:q][rr:ss], output reg yy [jj:kk][m:n]) "
-     ";endmodule:foo\n",
-     "module foo (\n"
-     // TODO(b/70310743): align :'s
-     "    input  wire x [  p:q][rr:ss],\n"
-     "    output reg  yy[jj:kk][  m:n]\n"  // aligned
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input wire   [p:q]x, output reg yy [j:k]) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  wire [p:q] x,\n"  // aligned
-     "    output reg        yy[j:k]\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input wire  x [p:q], output reg[j:k]yy) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  wire       x [p:q],\n"  // aligned
-     "    output reg  [j:k] yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input pkg::bar_t  x , output reg  yy) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  pkg::bar_t x,\n"  // aligned
-     "    output reg        yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input wire  x , output pkg::bar_t  yy) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  wire       x,\n"  // aligned
-     "    output pkg::bar_t yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input pkg::bar_t#(1)  x , output reg  yy) ;endmodule:foo\n",
-     "module foo (\n"  // with parameterized port type
-     "    input  pkg::bar_t#(1) x,\n"
-     "    output reg            yy\n"  // aligned
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input signed x , output reg  yy) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  signed x,\n"  // aligned
-     "    output reg    yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input signed x , output reg [m:n] yy) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  signed       x,\n"  // aligned
-     "    output reg    [m:n] yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input int signed x , output reg [m:n] yy) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  int signed       x,\n"  // aligned
-     "    output reg        [m:n] yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(  input signed x , output pkg::bar_t  yy) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input  signed     x,\n"  // aligned
-     "    output pkg::bar_t yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module somefunction ("
-     "logic clk, int   a, int b);endmodule",
-     "module somefunction (\n"
-     "    logic clk,\n"  // direction missing
-     "    int   a,\n"    // direction missing
-     "    int   b\n"     // direction missing
-     ");\n"
-     "endmodule\n"},
-    {"module somefunction ("
-     "logic clk, input int   a, int b);endmodule",
-     "module somefunction (\n"
-     "          logic clk,\n"  // direction missing
-     "    input int   a,\n"
-     "          int   b\n"  // direction missing
-     ");\n"
-     "endmodule\n"},
-    {"module somefunction ("
-     "input logic clk, input int   a, int b);endmodule",
-     "module somefunction (\n"
-     "    input logic clk,\n"
-     "    input int   a,\n"
-     "          int   b\n"  // direction missing
-     ");\n"
-     "endmodule\n"},
-    {"module somefunction ("
-     "input clk, input int   a, int b);endmodule",
-     "module somefunction (\n"
-     "    input     clk,\n"  // type missing
-     "    input int a,\n"
-     "          int b\n"
-     ");\n"
-     "endmodule\n"},
-    {"module somefunction ("
-     "input logic clk, input a, int b);endmodule",
-     "module somefunction (\n"
-     "    input logic clk,\n"
-     "    input       a,\n"  // type missing
-     "          int   b\n"   // direction missing
-     ");\n"
-     "endmodule\n"},
-    {"module t;\n"
-     "    input bit i_bit;\n"
-     "input   byte  i_byte ;\n"
-     "input chandle i_chandle;\n"
-     "input event i_event;\n"
-     "input int i_int;\n"
-     "input integer i_inte;\n"
-     "input longint i_longint;\n"
-     "input real i_real;\n"
-     "input realtime i_realtime;\n"
-     "input shortint i_shortint;\n"
-     "input shortreal i_shortreal;\n"
-     "input string i_string;\n"
-     "input time i_time;\n"
-     "     output bit o_bit;\n"
-     "output    byte   o_byte  ;  \n"
-     "output chandle o_chandle;\n"
-     "output event o_event;\n"
-     "output int o_int;\n"
-     "output integer o_inte;\n"
-     "output longint o_longint;\n"
-     "output real o_real;\n"
-     "output realtime o_realtime;\n"
-     "output shortint o_shortint;\n"
-     "output shortreal o_shortreal;\n"
-     "output string o_string;\n"
-     "output time o_time;\n"
-     "endmodule\n",
-     "module t;\n"
-     "  input bit i_bit;\n"
-     "  input byte i_byte;\n"
-     "  input chandle i_chandle;\n"
-     "  input event i_event;\n"
-     "  input int i_int;\n"
-     "  input integer i_inte;\n"
-     "  input longint i_longint;\n"
-     "  input real i_real;\n"
-     "  input realtime i_realtime;\n"
-     "  input shortint i_shortint;\n"
-     "  input shortreal i_shortreal;\n"
-     "  input string i_string;\n"
-     "  input time i_time;\n"
-     "  output bit o_bit;\n"
-     "  output byte o_byte;\n"
-     "  output chandle o_chandle;\n"
-     "  output event o_event;\n"
-     "  output int o_int;\n"
-     "  output integer o_inte;\n"
-     "  output longint o_longint;\n"
-     "  output real o_real;\n"
-     "  output realtime o_realtime;\n"
-     "  output shortint o_shortint;\n"
-     "  output shortreal o_shortreal;\n"
-     "  output string o_string;\n"
-     "  output time o_time;\n"
-     "endmodule\n"},
-    {"module t (\n"
-     "    input bit i_bit,\n"
-     "input     byte   i_byte  ,\n"
-     "input chandle i_chandle,\n"
-     "input event i_event,\n"
-     "input int i_int,\n"
-     "input integer i_inte,\n"
-     "input longint i_longint,\n"
-     "input real i_real,\n"
-     "input realtime i_realtime,\n"
-     "input shortint i_shortint,\n"
-     "input shortreal i_shortreal,\n"
-     "input string i_string,\n"
-     "input time i_time,\n"
-     "    output bit o_bit,\n"
-     "output     byte   o_byte  ,  \n"
-     "output chandle o_chandle,\n"
-     "output event o_event,\n"
-     "output int o_int,\n"
-     "output integer o_inte,\n"
-     "output longint o_longint,\n"
-     "output real o_real,\n"
-     "output realtime o_realtime,\n"
-     "output shortint o_shortint,\n"
-     "output shortreal o_shortreal,\n"
-     "output string o_string,\n"
-     "output time o_time);\n"
-     "endmodule\n",
-     "module t (\n"
-     "    input  bit       i_bit,\n"
-     "    input  byte      i_byte,\n"
-     "    input  chandle   i_chandle,\n"
-     "    input  event     i_event,\n"
-     "    input  int       i_int,\n"
-     "    input  integer   i_inte,\n"
-     "    input  longint   i_longint,\n"
-     "    input  real      i_real,\n"
-     "    input  realtime  i_realtime,\n"
-     "    input  shortint  i_shortint,\n"
-     "    input  shortreal i_shortreal,\n"
-     "    input  string    i_string,\n"
-     "    input  time      i_time,\n"
-     "    output bit       o_bit,\n"
-     "    output byte      o_byte,\n"
-     "    output chandle   o_chandle,\n"
-     "    output event     o_event,\n"
-     "    output int       o_int,\n"
-     "    output integer   o_inte,\n"
-     "    output longint   o_longint,\n"
-     "    output real      o_real,\n"
-     "    output realtime  o_realtime,\n"
-     "    output shortint  o_shortint,\n"
-     "    output shortreal o_shortreal,\n"
-     "    output string    o_string,\n"
-     "    output time      o_time\n"
-     ");\n"
-     "endmodule\n"},
-    {"module m;foo bar(.baz({larry, moe, curly}));endmodule",
-     "module m;\n"
-     "  foo bar (.baz({larry, moe, curly}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.baz({larry,// expand this\n"
-     "moe, curly}));endmodule",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .baz({\n"
-     "        larry,  // expand this\n"
-     "        moe,\n"
-     "        curly\n"
-     "      })\n"
-     "  );\n"
-     "endmodule\n"},
-    {"parameter priv_reg_t impl_csr[] = {\n"
-     "// Machine mode mode CSR\n"
-     "MVENDORID, //\n"
-     "MARCHID,   //\n"
-     "DSCRATCH0, //\n"
-     "DSCRATCH1  //\n"
-     "};",
-     "parameter priv_reg_t impl_csr[] = {\n"
-     "  // Machine mode mode CSR\n"
-     "  MVENDORID,  //\n"
-     "  MARCHID,  //\n"
-     "  DSCRATCH0,  //\n"
-     "  DSCRATCH1  //\n"
-     "};\n"},
-    {"parameter priv_reg_t impl_csr[] = {\n"
-     "// Expand elements\n"
-     "MVENDORID,\n"
-     "MARCHID,\n"
-     "DSCRATCH0,\n"
-     "DSCRATCH1\n"
-     "};",
-     "parameter priv_reg_t impl_csr[] = {\n"
-     "  // Expand elements\n"
-     "  MVENDORID,\n"
-     "  MARCHID,\n"
-     "  DSCRATCH0,\n"
-     "  DSCRATCH1\n"
-     "};\n"},
-    /* TODO(b/158131099): to fix these, reinterpret 'b' as a kPortDeclaration
-    {"module somefunction ("
-     "input logic clk, input a, b);endmodule",
-     "module somefunction (\n"
-     "    input logic clk,\n"
-     "    input       a,\n"  // type missing
-     "                b\n"  // type and direction missing
-     ");\n"
-     "endmodule\n"},
-    {"module somefunction ("
-     "input logic clk, int a, b);endmodule",
-     "module somefunction (\n"
-     "    input logic clk,\n"
-     "          int   a,\n"  // direction missing
-     "                b\n"  // type and direction missing
-     ");\n"
-     "endmodule\n"},
-     */
-    {"module foo(\n"
-     "//c1\n"
-     "input wire x , \n"
-     "//c2\n"
-     "output reg  yy\n"
-     "//c3\n"
-     ") ;endmodule:foo\n",
-     "module foo (\n"
-     "    //c1\n"
-     "    input  wire x,\n"  // aligned, ignoring comments
-     "    //c2\n"
-     "    output reg  yy\n"
-     "    //c3\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(\n"
-     "//c1\n"
-     "input wire x , \n"
-     "//c2a\n"  // longer comment
-     "//c2b\n"
-     "output reg  yy\n"
-     "//c3\n"
-     ") ;endmodule:foo\n",
-     "module foo (\n"
-     "    //c1\n"
-     "    input  wire x,\n"  // aligned, ignoring comments
-     "    //c2a\n"           // note: separated by 2 lines of comments
-     "    //c2b\n"
-     "    output reg  yy\n"
-     "    //c3\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(\n"
-     "`ifdef   FOO\n"
-     "input wire x , \n"
-     " `else\n"
-     "output reg  yy\n"
-     " `endif\n"
-     ") ;endmodule:foo\n",
-     "module foo (\n"
-     "`ifdef FOO\n"
-     "    input  wire x,\n"  // aligned, ignoring preprocessor conditionals
-     "`else\n"
-     "    output reg  yy\n"
-     "`endif\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(\n"
-     "input w , \n"
-     "`define   FOO BAR\n"
-     "input wire x , \n"
-     " `include  \"stuff.svh\"\n"
-     "output reg  yy\n"
-     " `undef    FOO\n"
-     "output zz\n"
-     ") ;endmodule:foo\n",
-     "module foo (\n"
-     "    input       w,\n"  // aligned, ignoring preprocessor directives
-     "    `define FOO BAR\n"
-     "    input  wire x,\n"
-     "    `include \"stuff.svh\"\n"
-     "    output reg  yy\n"
-     "    `undef FOO\n"
-     "    output      zz\n"  // aligned, ignoring preprocessor directives
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(\n"
-     "input wire x , \n  \n"  // blank line, separating alignment groups
-     "output reg  yy\n"
-     ") ;endmodule:foo\n",
-     "module foo (\n"
-     "    input wire x,\n"  // not aligned, due to blank line separating groups
-     "\n"
-     "    output reg yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(\n"
-     "input wire x1 [r:s],\n"
-     "input [p:q] x2 , \n  \n"  // blank line, separating alignment groups
-     "output reg  [jj:kk]yy1,\n"
-     "output pkg::barr_t [mm:nn] yy2\n"
-     ") ;endmodule:foo\n",
-     "module foo (\n"
-     "    input wire       x1[r:s],\n"  // aligned in this group, but not across
-                                        // groups
-     "    input      [p:q] x2,\n"
-     "\n"
-     "    output reg         [jj:kk] yy1,\n"
-     "    output pkg::barr_t [mm:nn] yy2\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo(\n"  // same as previous, with comments
-     " //c1\n"
-     "input wire x1 [r:s],\n"
-     "input [p:q] x2 , \n"
-     " //c2\n\n"  // blank line, separating alignment groups
-     " //c3\n"
-     "output reg  [jj:kk]yy1,\n"
-     " //c4\n"
-     "output pkg::barr_t [mm:nn] yy2\n"
-     ") ;endmodule:foo\n",
-     "module foo (\n"
-     "    //c1\n"
-     "    input wire       x1[r:s],\n"  // aligned in this group, but not across
-                                        // groups
-     "    input      [p:q] x2,\n"
-     "    //c2\n"
-     "\n"
-     "    //c3\n"
-     "    output reg         [jj:kk] yy1,\n"
-     "    //c4\n"
-     "    output pkg::barr_t [mm:nn] yy2\n"
-     ");\n"
-     "endmodule : foo\n"},
-
-    {// align null-statement (issue #824)
-     "class sample;"
-     "bit a;;"
-     "bit b;"
-     "endclass",
-     "class sample;\n"
-     "  bit a;\n"
-     "  ;\n"
-     "  bit b;\n"
-     "endclass\n"},
-    {"class sample;"
-     "bit a;;"
-     "endclass",
-     "class sample;\n"
-     "  bit a;\n"
-     "  ;\n"
-     "endclass\n"},
-    {"class sample;"
-     "bit a;"
-     "bit b;;"
-     "endclass",
-     "class sample;\n"
-     "  bit a;\n"
-     "  bit b;\n"
-     "  ;\n"
-     "endclass\n"},
-
-    {// aligning here just barely fits in the 40col limit
-     "module foo(  input int signed x [a:b],"
-     "output reg [mm:nn] yy) ;endmodule:foo\n",
-     "module foo (\n"
-     // ---------------40col----------------->
-     "    input  int signed         x [a:b],\n"  // aligned, still fits
-     "    output reg        [mm:nn] yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {// when aligning would result in exceeding column limit, don't align for
-     // now
-     "module foo(  input int signed x [aa:bb],"
-     "output reg [mm:nn] yy) ;endmodule:foo\n",
-     "module foo (\n"
-     // ---------------40col----------------->
-     //   input  int signed         x [aa:bb],\n"
-     //   output reg        [mm:nn] yy\n"
-     "    input  int signed         x [aa:bb],\n"  // aligned, still fits
-     "    output reg        [mm:nn] yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {// when aligning would result in exceeding column limit, don't align for
-     // now
-     "module foo(  input int signed x [aa:bb],"
-     "output reg [mm:nn] yyy) ;endmodule:foo\n",
-     "module foo (\n"
-     // ---------------40col----------------->
-     //   input  int signed         x  [aa:bb],\n"  // over limit, by comma
-     //   output reg        [mm:nn] yyy\n"
-     "    input int signed x[aa:bb],\n"  // aligned would be 41 columns
-     "    output reg [mm:nn] yyy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {// when aligning would result in exceeding column limit, don't align for
-     // now
-     "module foo(  input int signed x [a:b],//c\n"
-     "output reg [m:n] yy) ;endmodule:foo\n",
-     "module foo (\n"
-     // ---------------40col---------------->
-     //   input  int signed       x [a:b],  //c\n"  // over limit, by comment
-     //   output reg        [m:n] yy\n"
-     "    input int signed x[a:b],  //c\n"  // aligned would be 42 columns
-     "    output reg [m:n] yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {// aligning interfaces in port headers like types
-     // TODO(b/161181877): flush interface port type left (multi-column)
-     "module foo(  input clk , inter.face yy) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input            clk,\n"  // aligned
-     "          inter.face yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {// aligning interfaces in port headers like types
-     // TODO(b/161181877): flush interface port type left (multi-column)
-     "module foo(  input wire   clk , inter.face yy) ;endmodule:foo\n",
-     "module foo (\n"
-     "    input wire       clk,\n"  // aligned
-     "          inter.face yy\n"
-     ");\n"
-     "endmodule : foo\n"},
-
-    // module local variable/net declaration alignment test cases
-    {"module m;\n"
-     "logic a;\n"
-     "bit b;\n"
-     "endmodule\n",
-     "module m;\n"
-     "  logic a;\n"
-     "  bit   b;\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "logic a;\n"
-     "bit b;\n"
-     "initial e=f;\n"  // separates alignment groups
-     "wire c;\n"
-     "bit d;\n"
-     "endmodule\n",
-     "module m;\n"
-     "  logic a;\n"
-     "  bit   b;\n"
-     "  initial e = f;\n"  // separates alignment groups
-     "  wire c;\n"
-     "  bit  d;\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "// hello a\n"
-     "logic a;\n"
-     "// hello b\n"
-     "bit b;\n"
-     "endmodule\n",
-     "module m;\n"
-     "  // hello a\n"
-     "  logic a;\n"
-     "  // hello b\n"
-     "  bit   b;\n"  // aligned across comments
-     "endmodule\n"},
-    {"module m;\n"
-     "// hello a\n"
-     "logic a;\n"
-     "\n"  // extra blank line
-     "// hello b\n"
-     "bit b;\n"
-     "endmodule\n",
-     "module m;\n"
-     "  // hello a\n"
-     "  logic a;\n"
-     "\n"              // extra blank line
-     "  // hello b\n"  // aligned across blank lines
-     "  bit   b;\n"    // aligned across comments
-     "endmodule\n"},
-    {"module m;\n"
-     "logic [x:y]a;\n"  // packed dimensions
-     "bit b;\n"
-     "endmodule\n",
-     "module m;\n"
-     "  logic [x:y] a;\n"
-     "  bit         b;\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "logic a;\n"
-     "bit [pp:qq]b;\n"  // packed dimensions
-     "endmodule\n",
-     "module m;\n"
-     "  logic         a;\n"
-     "  bit   [pp:qq] b;\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "logic [x:y]a;\n"  // packed dimensions
-     "bit [pp:qq]b;\n"  // packed dimensions
-     "endmodule\n",
-     "module m;\n"
-     "  logic [  x:y] a;\n"
-     "  bit   [pp:qq] b;\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "logic [x:y]a;\n"         // packed dimensions
-     "wire [pp:qq] [e:f]b;\n"  // packed dimensions, 2D
-     "endmodule\n",
-     "module m;\n"
-     "  logic [  x:y]      a;\n"
-     "  wire  [pp:qq][e:f] b;\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "logic a [x:y];\n"  // unpacked dimensions
-     "bit bbb;\n"
-     "endmodule\n",
-     "module m;\n"
-     "  logic a   [x:y];\n"
-     "  bit   bbb;\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "logic aaa ;\n"
-     "wire w [yy:zz];\n"  // unpacked dimensions
-     "endmodule\n",
-     "module m;\n"
-     "  logic aaa;\n"
-     "  wire  w   [yy:zz];\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "logic aaa [s:t] ;\n"  // unpacked dimensions
-     "wire w [yy:zz];\n"    // unpacked dimensions
-     "endmodule\n",
-     "module m;\n"
-     "  logic aaa[  s:t];\n"
-     "  wire  w  [yy:zz];\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "logic aaa [s:t] ;\n"     // unpacked dimensions
-     "wire w [yy:zz][u:v];\n"  // unpacked dimensions, 2D
-     "endmodule\n",
-     "module m;\n"
-     "  logic aaa[  s:t];\n"
-     "  wire  w  [yy:zz] [u:v];\n"
-     // TODO(b/165323560): unwanted space between unpacked dimensions of 'w'
-     "endmodule\n"},
-    {"module m;\n"
-     "qqq::rrr s;\n"     // user-defined type
-     "wire [pp:qq]w;\n"  // packed dimensions
-     "endmodule\n",
-     "module m;\n"
-     "  qqq::rrr         s;\n"
-     "  wire     [pp:qq] w;\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "qqq#(rr) s;\n"     // parameterized type
-     "wire [pp:qq]w;\n"  // packed dimensions
-     "endmodule\n",
-     "module m;\n"
-     "  qqq #(rr)         s;\n"
-     "  wire      [pp:qq] w;\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "logic a;\n"
-     "bit b;\n"
-     "my_module  my_inst( );\n"  // module instance separates alignment groups
-     "wire c;\n"
-     "bit d;\n"
-     "endmodule\n",
-     "module m;\n"
-     "  logic a;\n"  // these two are aligned
-     "  bit   b;\n"
-     "  my_module my_inst ();\n"  // module instance separates alignment groups
-     "  wire c;\n"                // these two are aligned
-     "  bit  d;\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "logic aaa = expr1;\n"
-     "bit b = expr2;\n"
-     "endmodule\n",
-     "module m;\n"
-     "  logic aaa = expr1;\n"
-     "  bit   b = expr2;\n"  // no alignment at '=' yet
-     "endmodule\n"},
-    {"(* foo='{\"bar_.*\"} *)\n"  // funny attribute
-     "module mattr;\n"
-     "(* attr1=\"value1\" *)\n"  // attribute ignored
-     "ex_input_pins_t ex_input_pins;\n"
-     "(* attr2=\"value2\" *)\n"  // attribute ignored
-     "ex_output_pins_t ex_output_pins;\n"
-     "(* attr3=\"value3\" *)\n"  // attribute ignored
-     "ex wrap_ex ( );\n"
-     "endmodule\n",
-     "(* foo='{\"bar_.*\"} *)\n"
-     "module mattr;\n"
-     "  (* attr1=\"value1\" *)\n"           // indented
-     "  ex_input_pins_t  ex_input_pins;\n"  // aligned
-     "  (* attr2=\"value2\" *)\n"           // indented
-     "  ex_output_pins_t ex_output_pins;\n"
-     "  (* attr3=\"value3\" *)\n"  // indented
-     "  ex wrap_ex ();\n"
-     "endmodule\n"},
-    {"module mattr;\n"
-     "ex_input_pins_t ex_input_pins;\n"
-     "ex_output_pins_t ex_output_pins;\n"
-     "(* package_definition=\"ex_pkg\" *)\n"  // attribute ignored
-     "ex wrap_ex (\n"
-     ".clk(ex_input_pins.clk),\n"
-     ".rst(ex_input_pins.rst),\n"
-     ".in(ex_input_pins.in)\n"
-     ");\n"
-     "endmodule\n",
-     "module mattr;\n"
-     "  ex_input_pins_t  ex_input_pins;\n"  // aligned
-     "  ex_output_pins_t ex_output_pins;\n"
-     "  (* package_definition=\"ex_pkg\" *)\n"  // indented
-     "  ex wrap_ex (\n"
-     "      .clk(ex_input_pins.clk),\n"
-     "      .rst(ex_input_pins.rst),\n"
-     "      .in (ex_input_pins.in)\n"  // aligned
-     "  );\n"
-     "endmodule\n"},
-    {"module test;\n"
-     "bind entropy_src tlul_assert #(.EndpointType(\"Device\"))\n"
-     "tlul_assert_device (.clk_i, .rst_ni, .h2d(tl_i), .d2h(tl_o));\n"
-     "endmodule\n",
-     "module test;\n"
-     "  bind entropy_src tlul_assert #(\n"
-     "      .EndpointType(\"Device\")\n"
-     "  ) tlul_assert_device (\n"
-     "      .clk_i,\n"
-     "      .rst_ni,\n"
-     "      .h2d(tl_i),\n"
-     "      .d2h(tl_o)\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module test;\n"
-     "bind entropy_src tlul_assert #(.EndpointType(\"Device\"))\n"
-     "tlul_assert_device (.clk_i, .rst_ni,\n\n .h2d(tl_i),\n\n .d2h(tl_o));\n"
-     "endmodule\n",
-     "module test;\n"
-     "  bind entropy_src tlul_assert #(\n"
-     "      .EndpointType(\"Device\")\n"
-     "  ) tlul_assert_device (\n"
-     "      .clk_i,\n"
-     "      .rst_ni,\n"
-     "\n"
-     "      .h2d(tl_i),\n"
-     "\n"
-     "      .d2h(tl_o)\n"
-     "  );\n"
-     "endmodule\n"},
-    {"bind expand_me long_name #(.W(W_CONST), .D(D_CONST)) instaaance_name ("
-     ".in(iiiiiiiin),\n\n .out(ooooooout),\n .clk(ccccccclk),\n\n"
-     ".in1234 (in),\n //c1\n .out1234(out),\n .clk1234(clk),);",
-     "bind expand_me long_name #(\n"
-     "    .W(W_CONST),\n"
-     "    .D(D_CONST)\n"
-     ") instaaance_name (\n"
-     "    .in(iiiiiiiin),\n"
-     "\n"
-     "    .out(ooooooout),\n"
-     "    .clk(ccccccclk),\n"
-     "\n"
-     "    .in1234 (in),\n"
-     "    //c1\n"
-     "    .out1234(out),\n"
-     "    .clk1234(clk),\n"
-     ");\n"},
-    {"initial // clock generation\n begin\n clk = 0;\n forever begin\n"
-     "#4ns clk = !clk;\n end\n end\n",
-     "initial  // clock generation\n"
-     "  begin\n"
-     "    clk = 0;\n"
-     "    forever begin\n"
-     "      #4ns clk = !clk;\n"
-     "    end\n"
-     "  end\n"},
-    {"module foo #(int x,int y) ;endmodule:foo\n",  // parameters
-     "module foo #(\n"
-     "    int x,\n"
-     "    int y\n"
-     ");\n"  // each parameter on its own line
-     "endmodule : foo\n"},
-    {"module foo #(int x)(input y) ;endmodule:foo\n",
-     // parameter and port
-     "module foo #(\n"
-     "    int x\n"
-     ") (\n"
-     "    input y\n"
-     ");\n"  // each paramater and port item should be on its own line
-     "endmodule : foo\n"},
-    {"module foo #(parameter int x,parameter int y) ;endmodule:foo\n",
-     // parameters don't fit (also should be on its own line)
-     "module foo #(\n"
-     "    parameter int x,\n"
-     "    parameter int y\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo #(parameter int xxxx,parameter int yyyy) ;endmodule:foo\n",
-     // parameters don't fit
-     "module foo #(\n"
-     "    parameter int xxxx,\n"
-     "    parameter int yyyy\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo #(parameter int x = $clog2  (N) ,parameter int y ) "
-     ";endmodule:foo\n",
-     // parameters don't fit
-     "module foo #(\n"
-     "    parameter int x = $clog2(N),\n"  // no space after $clog2
-     "    parameter int y\n"
-     ");\n"
-     "endmodule : foo\n"},
-    {"module foo #(//comment\n"
-     "parameter bar =1,\n"
-     "localparam baz =2"
-     ") ();"
-     "endmodule",
-     "module foo #(  //comment\n"
-     "    parameter  bar = 1,\n"
-     "    localparam baz = 2\n"
-     ") ();\n"
-     "endmodule\n"},
-    {"module foo #("
-     "parameter  bar =1,//comment\n"
-     "localparam baz =2"
-     ") ();"
-     "endmodule",
-     "module foo #(\n"
-     "    parameter  bar = 1,  //comment\n"
-     "    localparam baz = 2\n"
-     ") ();\n"
-     "endmodule\n"},
-    {"module foo #("
-     "parameter  bar =1,"
-     "localparam baz =2//comment\n"
-     ") ();"
-     "endmodule",
-     "module foo #(\n"
-     "    parameter  bar = 1,\n"
-     "    localparam baz = 2   //comment\n"
-     ") ();\n"
-     "endmodule\n"},
-    {"module foo #("
-     "parameter  bar =1//comment\n"
-     ",localparam baz =2\n"
-     ") ();"
-     "endmodule",
-     "module foo #(\n"
-     "      parameter  bar = 1  //comment\n"
-     "    , localparam baz = 2\n"
-     ") ();\n"
-     "endmodule\n"},
-    {"module foo;"
-     // fit in one line
-     "parameter int i = '{\n"
-     "1,\n"
-     "2,\n"
-     "3\n"
-     "};\n"
-     "endmodule",
-     "module foo;\n"
-     "  parameter int i = '{1, 2, 3};\n"
-     "endmodule\n"},
-    {"module foo;"
-     // too long for one line, expand
-     "localparam logic [63:0] RC[24] = '{\n"
-     "64'h 1,\n"
-     "64'h 2,\n"
-     "64'h 3\n"
-     "};\n"
-     "endmodule",
-     "module foo;\n"
-     "  localparam logic [63:0] RC[24] = '{\n"
-     "      64'h1,\n"
-     "      64'h2,\n"
-     "      64'h3\n"
-     "  };\n"
-     "endmodule\n"},
-    {"module foo;"
-     "parameter int i = '{\n"
-     // force expansion
-     "1, //\n"
-     "2,\n"
-     "3\n"
-     "};\n"
-     "endmodule",
-     "module foo;\n"
-     "  parameter int i = '{\n"
-     "      1,  //\n"
-     "      2,\n"
-     "      3\n"
-     "  };\n"
-     "endmodule\n"},
-    {"module foo;"
-     "localparam logic [63:0] RC[24] = '{\n"
-     "64'h 0000_0000_0000_0001, // 0\n"
-     "64'h 0000_0000_0000_8082, // 1\n"
-     "64'h 8000_0000_8000_8008 // 23\n"
-     "};\n"
-     "endmodule",
-     "module foo;\n"
-     "  localparam logic [63:0] RC[24] = '{\n"
-     "      64'h0000_0000_0000_0001,  // 0\n"
-     "      64'h0000_0000_0000_8082,  // 1\n"
-     "      64'h8000_0000_8000_8008  // 23\n"
-     "  };\n"
-     "endmodule\n"},
-    {"module foo;"
-     // nest two patterns
-     "parameter logic [11:0] i = '{\n"
-     "'{1,2,3},\n"
-     "'{1,2,3}\n"
-     "};\n"
-     "endmodule",
-     "module foo;\n"
-     "  parameter logic [11:0] i = '{\n"
-     "      '{1, 2, 3},\n"
-     "      '{1, 2, 3}\n"
-     "  };\n"
-     "endmodule\n"},
-    {"module foo;"
-     // nest two patterns, expand interior
-     "parameter logic [11:0] i = '{\n"
-     "'{1, //\n"
-     " 2,3},\n"
-     "'{1,2,3}\n"
-     "};\n"
-     "endmodule",
-     "module foo;\n"
-     "  parameter logic [11:0] i = '{\n"
-     "      '{\n"
-     "          1,  //\n"
-     "          2,\n"
-     "          3\n"
-     "      },\n"
-     "      '{1, 2, 3}\n"
-     "  };\n"
-     "endmodule\n"},
-    {"module foo;"
-     // nest two patterns, expand both
-     "parameter nest [2] i = '{\n"
-     "'{first : 32'h0000_0001,\n"
-     "  second : 32'h0000_0011,\n"
-     "  third: 32'h0000_0111},\n"
-     "'{first : 32'h1000_0001,\n"
-     "  second : 32'h1000_0011,\n"
-     "  third: 32'h1000_0111}\n"
-     "};\n"
-     "endmodule",
-     "module foo;\n"
-     "  parameter nest [2] i = '{\n"
-     "      '{\n"
-     "          first : 32'h0000_0001,\n"
-     "          second : 32'h0000_0011,\n"
-     "          third: 32'h0000_0111\n"
-     "      },\n"
-     "      '{\n"
-     "          first : 32'h1000_0001,\n"
-     "          second : 32'h1000_0011,\n"
-     "          third: 32'h1000_0111\n"
-     "      }\n"
-     "  };\n"
-     "endmodule\n"},
-    {"module foo;"
-     // nest three patterns
-     "parameter logic [11:0] i = '{\n"
-     "'{'{1,2,3},4}\n"
-     "};\n"
-     "endmodule",
-     "module foo;\n"
-     "  parameter logic [11:0] i = '{\n"
-     "      '{'{1, 2, 3}, 4}\n"
-     "  };\n"
-     "endmodule\n"},
-    {"module foo;"
-     // nest three patterns, expand interior
-     "parameter logic [11:0] i = '{\n"
-     "'{\n"
-     "'{first : 32'h0000_0001,\n"
-     "  second : 32'h0000_0011,\n"
-     "  third: 32'h0000_0111},\n"
-     "  4},\n"
-     "  5,\n"
-     "  '{1,2,3}\n"
-     "};\n"
-     "endmodule",
-     "module foo;\n"
-     "  parameter logic [11:0] i = '{\n"
-     "      '{\n"
-     "          '{\n"
-     "              first : 32'h0000_0001,\n"
-     "              second : 32'h0000_0011,\n"
-     "              third: 32'h0000_0111\n"
-     "          },\n"
-     "          4\n"
-     "      },\n"
-     "      5,\n"
-     "      '{1, 2, 3}\n"
-     "  };\n"
-     "endmodule\n"},
-    {"module    top;"
-     "foo#(  \"test\"  ) foo(  );"
-     "bar#(  \"test\"  ,5) bar(  );"
-     "endmodule\n",
-     "module top;\n"
-     "  foo #(\"test\") foo ();\n"  // module instantiation, string arg
-     "  bar #(\"test\", 5) bar ();\n"
-     "endmodule\n"},
-    {"module    top;"
-     "foo#(  `\"test`\"  ) foo(  );"
-     "bar#(  `\"test`\"  ,5) bar(  );"
-     "endmodule\n",
-     "module top;\n"
-     "  foo #(`\"test`\") foo ();\n"  // module instantiation, eval string arg
-     "  bar #(`\"test`\", 5) bar ();\n"
-     "endmodule\n"},
-    {"`ifdef FOO\n"
-     "  module bar;endmodule\n"
-     "`endif\n",
-     "`ifdef FOO\n"
-     "module bar;\n"
-     "endmodule\n"
-     "`endif\n"},
-    {"`ifdef FOO\n"
-     "  module bar;endmodule\n"
-     "`else module baz;endmodule\n"
-     "`endif\n",
-     "`ifdef FOO\n"
-     "module bar;\n"
-     "endmodule\n"
-     "`else\n"
-     "module baz;\n"
-     "endmodule\n"
-     "`endif\n"},
-    {"`ifdef FOO\n"
-     "  module bar;endmodule\n"
-     "`else /* glue me */ module baz;endmodule\n"
-     "`endif\n",
-     "`ifdef FOO\n"
-     "module bar;\n"
-     "endmodule\n"
-     "`else  /* glue me */\n"
-     "module baz;\n"
-     "endmodule\n"
-     "`endif\n"},
-    {"`ifdef FOO\n"
-     "  module bar;endmodule\n"
-     "`else// different unit\n"
-     "  module baz;endmodule\n"
-     "`endif\n",
-     "`ifdef FOO\n"
-     "module bar;\n"
-     "endmodule\n"
-     "`else  // different unit\n"
-     "module baz;\n"
-     "endmodule\n"
-     "`endif\n"},
-
-    // unary: + - !  ~ & | ^  ~& ~| ~^ ^~
-    {"module m;foo bar(.x(-{a,b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x(-{a, b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(!{a,b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x(!{a, b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(~{a,b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x(~{a, b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(&{a,b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x(&{a, b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(|{a,b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x(|{a, b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(^{a,b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x(^{a, b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(~&{a,b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x(~&{a, b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(~|{a,b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x(~|{a, b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(~^{a,b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x(~^{a, b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(^~{a,b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x(^~{a, b}));\n"
-     "endmodule\n"},
-
-    // binary: + - * / % & | ^ ^~ ~^ && ||
-    {"module m;foo bar(.x(a+b));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a + b));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a-b));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a - b));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a*b));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a * b));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a/b));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a / b));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a%b));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a % b));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a&b));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a & b));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a|b));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a | b));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a^b));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a ^ b));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a^~b));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a ^~ b));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a~^b));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a ~^ b));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a&&b));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a && b));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a||b));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a || b));\n"
-     "endmodule\n"},
-
-    // {a} op {b}
-    {"module m;foo bar(.x({a}+{b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x({a} + {b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x({a}-{b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x({a} - {b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x({a}*{b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x({a} * {b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x({a}/{b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x({a} / {b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x({a}%{b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x({a} % {b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x({a}&{b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x({a} & {b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x({a}|{b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x({a} | {b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x({a}^{b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x({a} ^ {b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x({a}^~{b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x({a} ^~ {b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x({a}~^{b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x({a} ~^ {b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x({a}&&{b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x({a} && {b}));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x({a}||{b}));endmodule",
-     "module m;\n"
-     "  foo bar (.x({a} || {b}));\n"
-     "endmodule\n"},
-
-    // (a) op (b)
-    {"module m;foo bar(.x((a)+(b)));endmodule",
-     "module m;\n"
-     "  foo bar (.x((a) + (b)));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x((a)-(b)));endmodule",
-     "module m;\n"
-     "  foo bar (.x((a) - (b)));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x((a)*(b)));endmodule",
-     "module m;\n"
-     "  foo bar (.x((a) * (b)));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x((a)/(b)));endmodule",
-     "module m;\n"
-     "  foo bar (.x((a) / (b)));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x((a)%(b)));endmodule",
-     "module m;\n"
-     "  foo bar (.x((a) % (b)));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x((a)&(b)));endmodule",
-     "module m;\n"
-     "  foo bar (.x((a) & (b)));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x((a)|(b)));endmodule",
-     "module m;\n"
-     "  foo bar (.x((a) | (b)));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x((a)^(b)));endmodule",
-     "module m;\n"
-     "  foo bar (.x((a) ^ (b)));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x((a)^~(b)));endmodule",
-     "module m;\n"
-     "  foo bar (.x((a) ^~ (b)));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x((a)~^(b)));endmodule",
-     "module m;\n"
-     "  foo bar (.x((a) ~^ (b)));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x((a)&&(b)));endmodule",
-     "module m;\n"
-     "  foo bar (.x((a) && (b)));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x((a)||(b)));endmodule",
-     "module m;\n"
-     "  foo bar (.x((a) || (b)));\n"
-     "endmodule\n"},
-
-    // a[b] op c
-    {"module m;foo bar(.x(a[b]+c));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a[b] + c));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a[b]-c));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a[b] - c));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a[b]*c));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a[b] * c));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a[b]/c));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a[b] / c));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a[b]%c));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a[b] % c));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a[b]&c));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a[b] & c));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a[b]|c));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a[b] | c));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a[b]^c));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a[b] ^ c));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a[b]^~c));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a[b] ^~ c));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a[b]~^c));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a[b] ~^ c));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a[b]&&c));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a[b] && c));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a[b]||c));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a[b] || c));\n"
-     "endmodule\n"},
-
-    // misc
-    {"module m;foo bar(.x(a[1:0]^b[2:1]));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a[1:0] ^ b[2:1]));\n"
-     "endmodule\n"},
-
-    {"module m;foo bar(.x(a[b] | b[c]));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a[b] | b[c]));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x(a[b] & b[c]));endmodule",
-     "module m;\n"
-     "  foo bar (.x(a[b] & b[c]));\n"
-     "endmodule\n"},
-
-    {"module m;foo bar(.x((a^c)^(b^ ~c)));endmodule",
-     "module m;\n"
-     "  foo bar (.x((a ^ c) ^ (b ^ ~c)));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x((a^c)^(b^~c)));endmodule",
-     "module m;\n"
-     "  foo bar (.x((a ^ c) ^ (b ^~ c)));\n"
-     "endmodule\n"},
-    {"module m;foo bar(.x((a^{c,d})^(b^^{c,d})));endmodule",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .x((a ^ {c, d}) ^ (b ^ ^{c, d}))\n"
-     "  );\n"
-     "endmodule\n"},
-
-    {// module items mixed with preprocessor conditionals and comments
-     "    module foo;\n"
-     "// comment1\n"
-     "  `ifdef SIM\n"
-     "// comment2\n"
-     " `elsif SYN\n"
-     " // comment3\n"
-     "       `else\n"
-     "// comment4\n"
-     " `endif\n"
-     "// comment5\n"
-     "  endmodule",
-     "module foo;\n"
-     "  // comment1\n"
-     "`ifdef SIM\n"
-     "  // comment2\n"
-     "`elsif SYN\n"
-     "  // comment3\n"
-     "`else\n"
-     "  // comment4\n"
-     "`endif\n"
-     "  // comment5\n"
-     "endmodule\n"},
-    {"  module bar;wire foo;reg bear;endmodule\n",
-     "module bar;\n"
-     "  wire foo;\n"
-     "  reg  bear;\n"  // aligned
-     "endmodule\n"},
-    {" module bar;initial\nbegin a<=b . c ; end endmodule\n",
-     "module bar;\n"
-     "  initial begin\n"
-     "    a <= b.c;\n"
-     "  end\n"
-     "endmodule\n"},
-    {"module foo ();\nif (1) begin\n$finish(\n"
-     "      1    ); $finish    ();\n  end\nendmodule",
-     "module foo ();\n"
-     "  if (1) begin\n"
-     "    $finish(1);\n"
-     "    $finish();\n"
-     "  end\n"
-     "endmodule\n"},
-    {"  module bar;for(genvar i = 0 ; i<N ; ++ i  ) begin end endmodule\n",
-     "module bar;\n"
-     "  for (genvar i = 0; i < N; ++i) begin\n"
-     "  end\n"
-     "endmodule\n"},
-    {"  module bar;for(genvar i = 0 ; i!=N ; i ++  ) begin "
-     "foo f;end endmodule\n",
-     "module bar;\n"
-     "  for (genvar i = 0; i != N; i++) begin\n"
-     "    foo f;\n"
-     "  end\n"
-     "endmodule\n"},
-    {
-        "module block_generate;\n"
-        "`ASSERT(blah)\n"
-        "generate endgenerate endmodule\n",
-        "module block_generate;\n"
-        "  `ASSERT(blah)\n"
-        "  generate\n"
-        "  endgenerate\n"
-        "endmodule\n",
-    },
-    {
-        "module conditional_generate;\n"
-        "if(foo)  ; \t"  // null action
-        "endmodule\n",
-        "module conditional_generate;\n"
-        "  if (foo);\n"
-        "endmodule\n",
-    },
-    {
-        "module conditional_generate;\n"
-        "if(foo[a*b+c])  ; \t"  // null action
-        "endmodule\n",
-        "module conditional_generate;\n"
-        "  if (foo[a*b+c]);\n"  // allow compact expressions inside []
-        "endmodule\n",
-    },
-    {
-        "module conditional_generate;\n"
-        "if(foo)begin\n"
-        "`ASSERT()\n"
-        "`COVER()\n"
-        " end\n"
-        "endmodule\n",
-        "module conditional_generate;\n"
-        "  if (foo) begin\n"
-        "    `ASSERT()\n"
-        "    `COVER()\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        "module conditional_generate;\n"
-        "`ASSERT()\n"
-        "if(foo)begin\n"
-        " end\n"
-        "`COVER()\n"
-        "endmodule\n",
-        "module conditional_generate;\n"
-        "  `ASSERT()\n"
-        "  if (foo) begin\n"
-        "  end\n"
-        "  `COVER()\n"
-        "endmodule\n",
-    },
-    {
-        "module conditional_generate;\n"
-        "if(foo)begin\n"
-        "           // comment1\n"
-        " // comment2\n"
-        " end\n"
-        "endmodule\n",
-        "module conditional_generate;\n"
-        "  if (foo) begin\n"
-        "    // comment1\n"
-        "    // comment2\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        "module m ;"
-        "for(genvar i=0; ;)\n; "   // null generate statement
-        "for(genvar j=0 ;; )\n; "  // null generate statement
-        "endmodule",
-        "module m;\n"
-        "  for (genvar i = 0;;);\n"
-        "  for (genvar j = 0;;);\n"
-        "endmodule\n",
-    },
-    {
-        "module m ;"
-        "for (genvar f = 0; f < N; f++) begin "
-        "assign x = y; assign y = z;"
-        "end endmodule",
-        "module m;\n"
-        "  for (genvar f = 0; f < N; f++) begin\n"
-        "    assign x = y;\n"
-        "    assign y = z;\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        // standalone genvar statement
-        "module m ;"
-        "genvar f;"
-        "for(f=0; f<N; f ++ )begin "
-        "end endmodule",
-        "module m;\n"
-        "  genvar f;\n"
-        "  for (f = 0; f < N; f++) begin\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        // multiple arguments to genvar statement
-        "module m ;"
-        "genvar f, g;"
-        "for(f=0; f<N; f ++ )begin "
-        "end for(g=N; g>0; g -- )begin "
-        "end endmodule",
-        "module m;\n"
-        "  genvar f, g;\n"
-        "  for (f = 0; f < N; f++) begin\n"
-        "  end\n"
-        "  for (g = N; g > 0; g--) begin\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        // multiple genvar statements
-        "module m ;"
-        "genvar f;"
-        "genvar g;"
-        "for(f=0; f<N; f ++ )begin "
-        "end for(g=N; g>0; g -- )begin "
-        "end endmodule",
-        "module m;\n"
-        "  genvar f;\n"
-        "  genvar g;\n"
-        "  for (f = 0; f < N; f++) begin\n"
-        "  end\n"
-        "  for (g = N; g > 0; g--) begin\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        "module event_control ;"
-        "always@ ( posedge   clk )z<=y;"
-        "endmodule\n",
-        "module event_control;\n"
-        "  always @(posedge clk) z <= y;\n"
-        "endmodule\n",
-    },
-    {
-        "module always_if ;"
-        "always@ ( posedge   clk ) if (expr) z<=y;"
-        "endmodule\n",
-        "module always_if;\n"
-        "  always @(posedge clk)\n"  // doesn't fit
-        "    if (expr)\n"
-        "      z <= y;\n"
-        "endmodule\n",
-    },
-    {
-        "module always_if ;"
-        "always@*  if (expr) z<=y;"
-        "endmodule\n",
-        "module always_if;\n"
-        "  always @* if (expr) z <= y;\n"  // fits
-        "endmodule\n",
-    },
-    {
-        "module \talways_if_else ;"
-        "always@*  if (expr) z<=y; else g<=0;"
-        "endmodule\n",
-        "module always_if_else;\n"
-        "  always @*\n"
-        "    if (expr) z <= y;\n"  // fits
-        "    else g <= 0;\n"       // fits
-        "endmodule\n",
-    },
-    {
-        "module \talways_if_else_if ;"
-        "always@*  if (expr) z<=y; else if (w) g<=0;"
-        "endmodule\n",
-        "module always_if_else_if;\n"
-        "  always @*\n"
-        "    if (expr) z <= y;\n"    // fits
-        "    else if (w) g <= 0;\n"  // fits
-        "endmodule\n",
-    },
-    {
-        "module \talways_if_else_if_else ;"
-        "always@*  if (expr) z<=y; else if (w) g<=0;else h<=1;"
-        "endmodule\n",
-        "module always_if_else_if_else;\n"
-        "  always @*\n"
-        "    if (expr) z <= y;\n"    // fits
-        "    else if (w) g <= 0;\n"  // fits
-        "    else h <= 1;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(b,  c)"
-        "  for (;;)\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(b, c) for (;;) s = y;\n"  // fits
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  for (i=0;i<k;++i)\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    for (i = 0; i < k; ++i)\n"
-        "      s = y;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  repeat (jj+kk)\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    repeat (jj + kk)\n"
-        "      s = y;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  foreach(jj[kk])\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    foreach (jj[kk])\n"
-        "      s = y;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  while(jj[kk])\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    while (jj[kk])\n"
-        "      s = y;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  do s=y;while(jj[kk]);\t"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    do\n"
-        "      s = y;\n"
-        "    while (jj[kk]);\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)  \n"
-        "  case(jj)\tS:s = y;endcase\t"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    case (jj)\n"
-        "      S: s = y;\n"
-        "    endcase\n"
-        "endmodule\n",
-    },
-
-    {
-        "module always_if ;"
-        "always@ ( posedge   clk ) if (expr) z<=y;"
-        "endmodule\n",
-        "module always_if;\n"
-        "  always @(posedge clk)\n"  // doesn't fit
-        "    if (expr)\n"
-        "      z <= y;\n"
-        "endmodule\n",
-    },
-    {
-        "module always_if ;"
-        "always@*  if (expr) z<=y;"
-        "endmodule\n",
-        "module always_if;\n"
-        "  always @* if (expr) z <= y;\n"  // fits
-        "endmodule\n",
-    },
-    {
-        "module \talways_if_else ;"
-        "always@*  if (expr) z<=y; else g<=0;"
-        "endmodule\n",
-        "module always_if_else;\n"
-        "  always @*\n"
-        "    if (expr) z <= y;\n"  // fits
-        "    else g <= 0;\n"       // fits
-        "endmodule\n",
-    },
-    {
-        "module \talways_if_else_if ;"
-        "always@*  if (expr) z<=y; else if (w) g<=0;"
-        "endmodule\n",
-        "module always_if_else_if;\n"
-        "  always @*\n"
-        "    if (expr) z <= y;\n"    // fits
-        "    else if (w) g <= 0;\n"  // fits
-        "endmodule\n",
-    },
-    {
-        "module \talways_if_else_if_else ;"
-        "always@*  if (expr) z<=y; else if (w) g<=0;else h<=1;"
-        "endmodule\n",
-        "module always_if_else_if_else;\n"
-        "  always @*\n"
-        "    if (expr) z <= y;\n"    // fits
-        "    else if (w) g <= 0;\n"  // fits
-        "    else h <= 1;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(b,  c)"
-        "  for (;;)\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(b, c) for (;;) s = y;\n"  // fits
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  for (i=0;i<k;++i)\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    for (i = 0; i < k; ++i)\n"
-        "      s = y;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  repeat (jj+kk)\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    repeat (jj + kk)\n"
-        "      s = y;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  foreach(jj[kk])\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    foreach (jj[kk])\n"
-        "      s = y;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  while(jj[kk])\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    while (jj[kk])\n"
-        "      s = y;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  do s=y;while(jj[kk]);\t"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    do\n"
-        "      s = y;\n"
-        "    while (jj[kk]);\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)  \n"
-        "  case(jj)\tS:s = y;endcase\t"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    case (jj)\n"
-        "      S: s = y;\n"
-        "    endcase\n"
-        "endmodule\n",
-    },
-
-    {
-        "module always_if ;"
-        "always@ ( posedge   clk ) if (expr) z<=y;"
-        "endmodule\n",
-        "module always_if;\n"
-        "  always @(posedge clk)\n"  // doesn't fit
-        "    if (expr)\n"
-        "      z <= y;\n"
-        "endmodule\n",
-    },
-    {
-        "module always_if ;"
-        "always@*  if (expr) z<=y;"
-        "endmodule\n",
-        "module always_if;\n"
-        "  always @* if (expr) z <= y;\n"  // fits
-        "endmodule\n",
-    },
-    {
-        "module \talways_if_else ;"
-        "always@*  if (expr) z<=y; else g<=0;"
-        "endmodule\n",
-        "module always_if_else;\n"
-        "  always @*\n"
-        "    if (expr) z <= y;\n"  // fits
-        "    else g <= 0;\n"       // fits
-        "endmodule\n",
-    },
-    {
-        "module \talways_if_else_if ;"
-        "always@*  if (expr) z<=y; else if (w) g<=0;"
-        "endmodule\n",
-        "module always_if_else_if;\n"
-        "  always @*\n"
-        "    if (expr) z <= y;\n"    // fits
-        "    else if (w) g <= 0;\n"  // fits
-        "endmodule\n",
-    },
-    {
-        "module \talways_if_else_if_else ;"
-        "always@*  if (expr) z<=y; else if (w) g<=0;else h<=1;"
-        "endmodule\n",
-        "module always_if_else_if_else;\n"
-        "  always @*\n"
-        "    if (expr) z <= y;\n"    // fits
-        "    else if (w) g <= 0;\n"  // fits
-        "    else h <= 1;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(b,  c)"
-        "  for (;;)\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(b, c) for (;;) s = y;\n"  // fits
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  for (i=0;i<k;++i)\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    for (i = 0; i < k; ++i)\n"
-        "      s = y;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  repeat (jj+kk)\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    repeat (jj + kk)\n"
-        "      s = y;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  foreach(jj[kk])\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    foreach (jj[kk])\n"
-        "      s = y;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  while(jj[kk])\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    while (jj[kk])\n"
-        "      s = y;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  do s=y;while(jj[kk]);\t"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    do\n"
-        "      s = y;\n"
-        "    while (jj[kk]);\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)  \n"
-        "  case(jj)\tS:s = y;endcase\t"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    case (jj)\n"
-        "      S: s = y;\n"
-        "    endcase\n"
-        "endmodule\n",
-    },
-
-    {
-        "module always_if ;"
-        "always@ ( posedge   clk ) if (expr) z<=y;"
-        "endmodule\n",
-        "module always_if;\n"
-        "  always @(posedge clk)\n"  // doesn't fit
-        "    if (expr)\n"
-        "      z <= y;\n"
-        "endmodule\n",
-    },
-    {
-        "module always_if ;"
-        "always@*  if (expr) z<=y;"
-        "endmodule\n",
-        "module always_if;\n"
-        "  always @* if (expr) z <= y;\n"  // fits
-        "endmodule\n",
-    },
-    {
-        "module \talways_if_else ;"
-        "always@*  if (expr) z<=y; else g<=0;"
-        "endmodule\n",
-        "module always_if_else;\n"
-        "  always @*\n"
-        "    if (expr) z <= y;\n"  // fits
-        "    else g <= 0;\n"       // fits
-        "endmodule\n",
-    },
-    {
-        "module \talways_if_else_if ;"
-        "always@*  if (expr) z<=y; else if (w) g<=0;"
-        "endmodule\n",
-        "module always_if_else_if;\n"
-        "  always @*\n"
-        "    if (expr) z <= y;\n"    // fits
-        "    else if (w) g <= 0;\n"  // fits
-        "endmodule\n",
-    },
-    {
-        "module \talways_if_else_if_else ;"
-        "always@*  if (expr) z<=y; else if (w) g<=0;else h<=1;"
-        "endmodule\n",
-        "module always_if_else_if_else;\n"
-        "  always @*\n"
-        "    if (expr) z <= y;\n"    // fits
-        "    else if (w) g <= 0;\n"  // fits
-        "    else h <= 1;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(b,  c)"
-        "  for (;;)\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(b, c) for (;;) s = y;\n"  // fits
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  for (i=0;i<k;++i)\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    for (i = 0; i < k; ++i)\n"
-        "      s = y;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  repeat (jj+kk)\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    repeat (jj + kk)\n"
-        "      s = y;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  foreach(jj[kk])\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    foreach (jj[kk])\n"
-        "      s = y;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  while(jj[kk])\ts = y;"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    while (jj[kk])\n"
-        "      s = y;\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)"
-        "  do s=y;while(jj[kk]);\t"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    do\n"
-        "      s = y;\n"
-        "    while (jj[kk]);\n"
-        "endmodule\n",
-    },
-    {
-        "module m;\n"
-        "always @(posedge clk)  \n"
-        "  case(jj)\tS:s = y;endcase\t"
-        "endmodule",
-        "module m;\n"
-        "  always @(posedge clk)\n"
-        "    case (jj)\n"
-        "      S: s = y;\n"
-        "    endcase\n"
-        "endmodule\n",
-    },
-
-    {
-        // begin/end with labels
-        "module m ;initial  begin:yyy\tend:yyy endmodule",
-        "module m;\n"
-        "  initial begin : yyy\n"
-        "  end : yyy\n"
-        "endmodule\n",
-    },
-    {
-        // conditional generate begin/end with labels
-        "module m ;if\n( 1)  begin:yyy\tend:yyy endmodule",
-        "module m;\n"
-        "  if (1) begin : yyy\n"
-        "  end : yyy\n"
-        "endmodule\n",
-    },
-    {
-        // begin/end with labels, nested
-        "module m ;initial  begin:yyy if(1)begin:zzz "
-        "end:zzz\tend:yyy endmodule",
-        "module m;\n"
-        "  initial begin : yyy\n"
-        "    if (1) begin : zzz\n"
-        "    end : zzz\n"
-        "  end : yyy\n"
-        "endmodule\n",
-    },
-    {
-        "module m ;initial  begin #  1 x<=y ;end endmodule",
-        "module m;\n"
-        "  initial begin\n"
-        "    #1 x <= y;\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        "module m ;initial  begin x<=y ;  y<=z;end endmodule",
-        "module m;\n"
-        "  initial begin\n"
-        "    x <= y;\n"
-        "    y <= z;\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        "module m ;initial  begin # 10 x<=y ;  # 20  y<=z;end endmodule",
-        "module m;\n"
-        "  initial begin\n"
-        "    #10 x <= y;\n"
-        "    #20 y <= z;\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        // qualified variables
-        "module m ;initial  begin automatic int a; "
-        " static byte s=0;end endmodule",
-        "module m;\n"
-        "  initial begin\n"
-        "    automatic int a;\n"
-        "    static byte   s = 0;\n"  // aligned
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        "module m ;initial  begin automatic int a,b; "
-        " static byte s,t;end endmodule",
-        "module m;\n"
-        "  initial begin\n"
-        "    automatic int a, b;\n"
-        "    static byte s, t;\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        "module m ;initial  begin   static byte a=1,b=0;end endmodule",
-        "module m;\n"
-        "  initial begin\n"
-        "    static byte a = 1, b = 0;\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        "module m ;initial  begin   const int a=0;end endmodule",
-        "module m;\n"
-        "  initial begin\n"
-        "    const int a = 0;\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        "module m ;initial  begin automatic   const int a=0;end endmodule",
-        "module m;\n"
-        "  initial begin\n"
-        "    automatic const int a = 0;\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        "module m ;initial  begin const  var automatic  int a=0;end endmodule",
-        "module m;\n"
-        "  initial begin\n"
-        "    const var automatic int a = 0;\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        "module m ;initial  begin static byte s  ={<<{a}};end endmodule",
-        "module m;\n"
-        "  initial begin\n"
-        "    static byte s = {<<{a}};\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        "module m ;initial  begin static int s  ={>>4{a}};end endmodule",
-        "module m;\n"
-        "  initial begin\n"
-        "    static int s = {>>4{a}};\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        "module m; final  assert   (expr ) ;endmodule",
-        "module m;\n"
-        "  final assert (expr);\n"
-        "endmodule\n",
-    },
-    {
-        "module m; final  begin\tassert   (expr ) ;end  endmodule",
-        "module m;\n"
-        "  final begin\n"
-        "    assert (expr);\n"
-        "  end\n"
-        "endmodule\n",
-    },
-    {
-        "module m; final  assume   (expr ) ;endmodule",
-        "module m;\n"
-        "  final assume (expr);\n"
-        "endmodule\n",
-    },
-    {
-        "module m; final  cover   (expr ) ;endmodule",
-        "module m;\n"
-        "  final cover (expr);\n"
-        "endmodule\n",
-    },
-    {
-        // two consecutive clocking declarations in modules
-        " module mcd ; "
-        "clocking   cb @( posedge clk);\t\tendclocking "
-        "clocking cb2   @ (posedge  clk\n); endclocking endmodule",
-        "module mcd;\n"
-        "  clocking cb @(posedge clk);\n"
-        "  endclocking\n"
-        "  clocking cb2 @(posedge clk);\n"
-        "  endclocking\n"
-        "endmodule\n",
-    },
-    {
-        // two consecutive clocking declarations in modules, with end labels
-        " module mcd ; "
-        "clocking   cb @( posedge clk);\t\tendclocking:  cb "
-        "clocking cb2   @ (posedge  clk\n); endclocking   :cb2 endmodule",
-        "module mcd;\n"
-        "  clocking cb @(posedge clk);\n"
-        "  endclocking : cb\n"
-        "  clocking cb2 @(posedge clk);\n"
-        "  endclocking : cb2\n"
-        "endmodule\n",
-    },
-    {
-        // clocking declarations with ports in modules
-        " module mcd ; "
-        "clocking cb   @ (posedge  clk\n); input a; output b; endclocking "
-        "endmodule",
-        "module mcd;\n"
-        "  clocking cb @(posedge clk);\n"
-        "    input a;\n"
-        "    output b;\n"
-        "  endclocking\n"
-        "endmodule\n",
-    },
-    {
-        // DPI import declarations in modules
-        "module mdi;"
-        "import   \"DPI-C\" function  int add(\n) ;"
-        "import \"DPI-C\"\t\tfunction int\nsleep( input int secs );"
-        "import \"DPI-C\"\t\tfunction int\nwake( input int secs, output bit "
-        "[2:0] z);"
-        "endmodule",
-        "module mdi;\n"
-        "  import \"DPI-C\" function int add();\n"
-        "  import \"DPI-C\" function int sleep(\n"
-        "    input int secs\n"
-        "  );\n"
-        "  import \"DPI-C\" function int wake(\n"
-        "    input  int       secs,\n"
-        "    output bit [2:0] z\n"
-        "  );\n"
-        "endmodule\n",
-    },
-    {
-        // DPI export declarations in modules
-        "module m;"
-        "export \"DPI-C\" function get;"
-        "export \"DPI-C\" function mhpmcounter_get;\n"
-        "export \"DPI-C\"\t\tfunction int\nwake( input int secs, output bit "
-        "[2:0] z);"
-        "endmodule",
-        "module m;\n"
-        "  export \"DPI-C\" function get;\n"
-        "  export \"DPI-C\"\n"
-        "      function mhpmcounter_get;\n"  // doesn't fit in 40-col
-        "  export \"DPI-C\" function int wake(\n"
-        "    input  int       secs,\n"
-        "    output bit [2:0] z\n"
-        "  );\n"
-        "endmodule\n",
-    },
-    {// Two consecutive EOL comments in kDPIImportItem
-     "import \"DPI-C\" context function void foo(\n"
-     "  input bit first,\n"
-     "  // c3\n"
-     "  // c3+\n"
-     "  input bit second\n"
-     ");\n",
-     "import \"DPI-C\" context\n"
-     "    function void foo(\n"
-     "  input bit first,\n"
-     "  // c3\n"
-     "  // c3+\n"
-     "  input bit second\n"
-     ");\n"},
-    {"export \"\" t;\n", "export \"\" t;\n"},
-    {"import \"DPI-C\" context function void func(input bit impl_i,"
-     "input bit op_i,"
-     "input bit [5:0] mode_i,"
-     "input bit [3:0][31:0] iv_i,"
-     "input bit [2:0] key_len_i,"
-     "input bit [7:0][31:0] key_i,"
-     "input bit [7:0] data_i[],"
-     "output bit [7:0] data_o[]);",
-     "import \"DPI-C\" context\n"
-     "    function void func(\n"
-     "  input  bit             impl_i,\n"
-     "  input  bit             op_i,\n"
-     "  input  bit [5:0]       mode_i,\n"
-     "  input  bit [3:0][31:0] iv_i,\n"
-     "  input  bit [2:0]       key_len_i,\n"
-     "  input  bit [7:0][31:0] key_i,\n"
-     "  input  bit [7:0]       data_i   [],\n"
-     "  output bit [7:0]       data_o   []\n"
-     ");\n"},
-    {// module with system task call w or w/o parentheses
-     "module m; initial begin #10 $display(\"foo\"); $display(\"bar\");"
-     "end endmodule",
-     "module m;\n"
-     "  initial begin\n"
-     "    #10 $display(\"foo\");\n"
-     "    $display(\"bar\");\n"
-     "  end\n"
-     "endmodule\n"},
-    {// module with system task call
-     "module m; initial begin #10 $display; $display;"
-     "end endmodule",
-     "module m;\n"
-     "  initial begin\n"
-     "    #10 $display;\n"
-     "    $display;\n"
-     "  end\n"
-     "endmodule\n"},
-
-    // interface test cases
-    {// two interface declarations
-     " interface if1 ; endinterface\t\t"
-     "interface  if2; endinterface   ",
-     "interface if1;\n"
-     "endinterface\n"
-     "interface if2;\n"
-     "endinterface\n"},
-    {// two interface declarations, end labels
-     " interface if1 ; endinterface:if1\t\t"
-     "interface  if2; endinterface    :  if2   ",
-     "interface if1;\n"
-     "endinterface : if1\n"
-     "interface if2;\n"
-     "endinterface : if2\n"},
-    {// interface declaration with parameters
-     " interface if1#( parameter int W= 8 );endinterface\t\t",
-     "interface if1 #(\n"
-     "    parameter int W = 8\n"
-     ");\n"
-     "endinterface\n"},
-    {// interface declaration with ports (empty)
-     " interface if1()\n;endinterface\t\t",
-     "interface if1 ();\n"
-     "endinterface\n"},
-    {// interface declaration with parameter comment only, empty ports
-     " interface if1#( \n"
-     "//param\n"
-     ")();endinterface\t\t",
-     "interface if1 #(\n"
-     "    //param\n"
-     ") ();\n"
-     "endinterface\n"},
-    {// interface declaration with parameter, empty ports
-     " interface if1#( parameter int W= 8 )();endinterface\t\t",
-     "interface if1 #(\n"
-     "    parameter int W = 8\n"
-     ") ();\n"
-     "endinterface\n"},
-    {// interface declaration with ports
-     " interface if1( input\tlogic   z)\n;endinterface\t\t",
-     "interface if1 (\n"
-     "    input logic z\n"
-     ");\n"
-     "endinterface\n"},
-    {// interface declaration with multiple ports
-     " interface if1( input\tlogic   z, output logic a)\n;endinterface\t\t",
-     "interface if1 (\n"
-     "    input  logic z,\n"  // should be one-per-line, even it it fits
-     "    output logic a\n"   // aligned
-     ");\n"
-     "endinterface\n"},
-    {// interface declaration with parameters and ports
-     " interface if1#( parameter int W= 8 )(input logic z);endinterface\t\t",
-     // doesn't fit on one line
-     "interface if1 #(\n"
-     "    parameter int W = 8\n"
-     ") (\n"
-     "    input logic z\n"
-     ");\n"
-     "endinterface\n"},
-    {
-        // interface with modport declarations
-        "interface\tfoo_if  ;"
-        "modport  mp1\t( output a, input b);"
-        "modport\tmp2  (output c,input d );\t"
-        "endinterface",
-        "interface foo_if;\n"
-        "  modport mp1(output a, input b);\n"
-        "  modport mp2(output c, input d);\n"
-        "endinterface\n",
-    },
-    {
-        // interface with long modport port names
-        "interface\tfoo_if  ;"
-        "modport  mp1\t( output a_long_output, input detailed_input_name);"
-        "endinterface",
-        "interface foo_if;\n"
-        "  modport mp1(\n"
-        "      output a_long_output,\n"
-        "      input detailed_input_name\n"
-        "  );\n"
-        "endinterface\n",
-    },
-    {
-        // interface with modport declaration with multiple ports
-        "interface\tfoo_if  ;"
-        "modport  mp1\t( output a_long_output, input detailed_input_name);"
-        "endinterface",
-        "interface foo_if;\n"
-        "  modport mp1(\n"
-        "      output a_long_output,\n"
-        "      input detailed_input_name\n"
-        "  );\n"
-        "endinterface\n",
-    },
-    {
-        // interface with modport TF port declaration
-        "interface\tfoo_if  ;"
-        "modport  mp1\t( output a, input b, import c);"
-        "endinterface",
-        "interface foo_if;\n"
-        "  modport mp1(\n"
-        "      output a,\n"
-        "      input b,\n"
-        "      import c\n"
-        "  );\n"
-        "endinterface\n",
-    },
-    {
-        // interface with complex modport ports list
-        "interface\tfoo_if  ;"
-        "modport producer\t(input ready,\toutput data, valid, user,"
-        " strobe, keep, last,\timport producer_reset, producer_tick);"
-        "modport consumer\t(input data, valid, user, strobe, keep, last,"
-        " output ready,\timport consumer_reset, consumer_tick, consume);"
-        "endinterface",
-        "interface foo_if;\n"
-        "  modport producer(\n"
-        "      input ready,\n"
-        "      output data, valid, user, strobe,\n"
-        "          keep, last,\n"
-        "      import producer_reset,\n"
-        "          producer_tick\n"
-        "  );\n"
-        "  modport consumer(\n"
-        "      input data, valid, user, strobe,\n"
-        "          keep, last,\n"
-        "      output ready,\n"
-        "      import consumer_reset,\n"
-        "          consumer_tick, consume\n"
-        "  );\n"
-        "endinterface\n",
-    },
-    {
-        // interface with modports and comments inside
-        "interface foo_if;\n"
-        " modport mp1(\n"
-        "  // Our output\n"
-        "     output a,\n"
-        "  /* Inputs */\n"
-        "      input b1, b_f /*last*/,"
-        "  import c\n"
-        "  );\n"
-        "endinterface\n",
-        "interface foo_if;\n"
-        "  modport mp1(\n"
-        "      // Our output\n"
-        "      output a,\n"
-        "      /* Inputs */\n"
-        "      input b1, b_f  /*last*/,\n"
-        "      import c\n"
-        "  );\n"
-        "endinterface\n",
-    },
-
-    // class test cases
-    {"class action;int xyz;endclass  :  action\n",
-     "class action;\n"
-     "  int xyz;\n"
-     "endclass : action\n"},
-    {"class action  extends mypkg :: inaction;endclass  :  action\n",
-     "class action extends mypkg::inaction;\n"  // tests for spacing around ::
-     "endclass : action\n"},
-    {"class c;function new;endfunction endclass",
-     "class c;\n"
-     "  function new;\n"
-     "  endfunction\n"
-     "endclass\n"},
-    {"class c;function new ( );endfunction endclass",
-     "class c;\n"
-     "  function new();\n"
-     "  endfunction\n"
-     "endclass\n"},
-    {"class c;function new ( string s );endfunction endclass",
-     "class c;\n"
-     "  function new(string s);\n"
-     "  endfunction\n"
-     "endclass\n"},
-    {"class c;function new ( string s ,int i );endfunction endclass",
-     "class c;\n"
-     "  function new(string s, int i);\n"
-     "  endfunction\n"
-     "endclass\n"},
-    {"class c;function void f;endfunction endclass",
-     "class c;\n"
-     "  function void f;\n"
-     "  endfunction\n"
-     "endclass\n"},
-    {"class c;virtual function void f;endfunction endclass",
-     "class c;\n"
-     "  virtual function void f;\n"
-     "  endfunction\n"
-     "endclass\n"},
-    {"class c;function int f ( );endfunction endclass",
-     "class c;\n"
-     "  function int f();\n"
-     "  endfunction\n"
-     "endclass\n"},
-    {"class c;function int f ( int  ii );endfunction endclass",
-     "class c;\n"
-     "  function int f(int ii);\n"
-     "  endfunction\n"
-     "endclass\n"},
-    {"class c;function int f ( int  ii ,bit  bb );endfunction endclass",
-     "class c;\n"
-     "  function int f(int ii, bit bb);\n"
-     "  endfunction\n"
-     "endclass\n"},
-    {"class c;task t ;endtask endclass",
-     "class c;\n"
-     "  task t;\n"
-     "  endtask\n"
-     "endclass\n"},
-    {"class c;task t ( int  ii ,bit  bb );endtask endclass",
-     "class c;\n"
-     "  task t(int ii, bit bb);\n"
-     "  endtask\n"
-     "endclass\n"},
-    {"class c; task automatic repeated_assigner;"
-     "repeat (count) y = w;"  // single statement body
-     "endtask endclass",
-     "class c;\n"
-     "  task automatic repeated_assigner;\n"
-     "    repeat (count) y = w;\n"
-     "  endtask\n"
-     "endclass\n"},
-    {"class c; task automatic delayed_assigner;"
-     "#   100   y = w;"  // delayed assignment
-     "endtask endclass",
-     "class c;\n"
-     "  task automatic delayed_assigner;\n"
-     "    #100 y = w;\n"
-     "  endtask\n"
-     "endclass\n"},
-    {"class c; task automatic labeled_assigner;"
-     "lbl   :   y = w;"  // delayed assignment
-     "endtask endclass",
-     "class c;\n"
-     "  task automatic labeled_assigner;\n"
-     "    lbl : y = w;\n"  // TODO(fangism): no space before ':'
-     "  endtask\n"
-     "endclass\n"},
-    // task with macro call
-    {"module m1;\ntask automatic t1();\n"
-     "t2(`R1(1)+ 8);endtask : t1\nendmodule",
-     "module m1;\n"
-     "  task automatic t1();\n"
-     "    t2(`R1(1) + 8);\n"
-     "  endtask : t1\n"
-     "endmodule\n"},
-
-    // tasks with control statements
-    {"class c; task automatic waiter;"
-     "if (count == 0) begin #0; return;end "
-     "endtask endclass",
-     "class c;\n"
-     "  task automatic waiter;\n"
-     "    if (count == 0) begin\n"
-     "      #0;\n"
-     "      return;\n"
-     "    end\n"
-     "  endtask\n"
-     "endclass\n"},
-    {"class c; task automatic heartbreaker;"
-     "if( c)if( d) break ;"
-     "endtask endclass",
-     "class c;\n"
-     "  task automatic heartbreaker;\n"
-     "    if (c) if (d) break;\n"
-     "  endtask\n"
-     "endclass\n"},
-    {"class c; task automatic waiter;"
-     "repeat (count) @(posedge clk);"
-     "endtask endclass",
-     "class c;\n"
-     "  task automatic waiter;\n"
-     "    repeat (count) @(posedge clk);\n"
-     "  endtask\n"
-     "endclass\n"},
-    {"class c; task automatic repeat_assigner;"
-     "repeat( r )\ny = w;"
-     "repeat( q )\ny = 1;"
-     "endtask endclass",
-     "class c;\n"
-     "  task automatic repeat_assigner;\n"
-     "    repeat (r) y = w;\n"
-     "    repeat (q) y = 1;\n"
-     "  endtask\n"
-     "endclass\n"},
-    {"class c; task automatic event_control_assigner;"
-     "@ ( posedge clk )\ny = w;"
-     "@ ( negedge clk )\nz = w;"
-     "endtask endclass",
-     "class c;\n"
-     "  task automatic event_control_assigner;\n"
-     "    @(posedge clk) y = w;\n"
-     "    @(negedge clk) z = w;\n"
-     "  endtask\n"
-     "endclass\n"},
-    {
-        // classes with surrrounding comments
-        // vertical spacing preserved
-        "\n// pre-c\n\n"
-        "  class   c  ;\n"
-        "// c stuff\n"
-        "endclass\n"
-        "  // pre-d\n"
-        "\n\nclass d ;\n"
-        " // d stuff\n"
-        "endclass\n"
-        "\n// the end\n",
-        "\n// pre-c\n\n"
-        "class c;\n"
-        "  // c stuff\n"
-        "endclass\n"
-        "// pre-d\n\n\n"
-        "class d;\n"
-        "  // d stuff\n"
-        "endclass\n\n"
-        "// the end\n",
-    },
-    {// class with comments around task/function declarations
-     "class c;      // c is for cookie\n"
-     "    // f is for false\n"
-     "\tfunction f(integer size) ; endfunction\n"
-     " // t is for true\n"
-     "task t();endtask\n"
-     " // class is about to end\n"
-     "endclass",
-     "class c;  // c is for cookie\n"
-     "  // f is for false\n"
-     "  function f(integer size);\n"
-     "  endfunction\n"
-     "  // t is for true\n"
-     "  task t();\n"
-     "  endtask\n"
-     "  // class is about to end\n"
-     "endclass\n"},
-
-    // interface class test cases
-    {"interface class Foo;\nendclass\n",
-     "interface class Foo;\n"
-     "endclass\n"},
-    {"interface   class   Foo  ;  endclass\n",
-     "interface class Foo;\n"
-     "endclass\n"},
-    {"interface class Foo extends Bar , Baz ;\nendclass\n",
-     "interface class Foo extends Bar, Baz;\n"
-     "endclass\n"},
-    {"interface class Foo;\n  pure   virtual   task   foo (  ) ; \nendclass\n",
-     "interface class Foo;\n"
-     "  pure virtual task foo();\n"
-     "endclass\n"},
-
-    // class property alignment test cases
-    {"class c;\n"
-     "int foo  ;\n"
-     "byte bar;\n"
-     "endclass : c\n",
-     "class c;\n"
-     "  int  foo;\n"
-     "  byte bar;\n"
-     "endclass : c\n"},
-    {"class c;\n"
-     "int foo;\n"
-     "const bit b;\n"
-     "endclass : c\n",
-     "class c;\n"
-     "  int       foo;\n"
-     "  const bit b;\n"
-     "endclass : c\n"},
-    {"class c;\n"
-     "rand logic l;\n"
-     "int foo;\n"
-     "endclass : c\n",
-     "class c;\n"
-     "  rand logic l;\n"
-     "  int        foo;\n"
-     "endclass : c\n"},
-    {"class c;\n"
-     "rand logic l;\n"
-     "const static int foo;\n"  // more qualifiers
-     "endclass : c\n",
-     "class c;\n"
-     "  rand logic       l;\n"
-     "  const static int foo;\n"
-     "endclass : c\n"},
-    {"class c;\n"
-     "static local int foo;\n"
-     "const bit b;\n"
-     "endclass : c\n",
-     "class c;\n"
-     "  static local int foo;\n"
-     "  const bit        b;\n"
-     "endclass : c\n"},
-    {// example with queue
-     "class c;\n"
-     "int foo [$] ;\n"
-     "int foo_bar ;\n"
-     "endclass : c\n",
-     "class c;\n"
-     "  int foo     [$];\n"
-     "  int foo_bar;\n"
-     "endclass : c\n"},
-    {// subcolumns
-     "class cc;\n"
-     "rand bit [A-1:0] foo;\n"
-     "rand bit [A-1:0][2] bar;\n"
-     "int foobar[X+1:Y];\n"
-     "int baz[42];\n"
-     "rand bit qux[Z];\n"
-     "rand bit [1:0] quux[3:0];\n"
-     "rand bit [A:BB][42] quuz[7];\n"
-     "endclass\n",
-     "class cc;\n"
-     "  rand bit [A-1: 0]     foo;\n"
-     "  rand bit [A-1: 0][ 2] bar;\n"
-     "  int                   foobar[X+1:Y];\n"
-     "  int                   baz   [   42];\n"
-     "  rand bit              qux   [    Z];\n"
-     "  rand bit [  1: 0]     quux  [  3:0];\n"
-     "  rand bit [  A:BB][42] quuz  [    7];\n"
-     "endclass\n"},
-    {"class cc;\n"
-     "int qux[2];\n"
-     "int quux[SIZE-1+SHIFT:SHIFT];\n"
-     "int quuz[SOME_CONSTANT];\n"
-     "endclass\n",
-     "class cc;\n"
-     "  int qux [                 2];\n"
-     "  int quux[SIZE-1+SHIFT:SHIFT];\n"
-     "  int quuz[     SOME_CONSTANT];\n"
-     "endclass\n"},
-    {// aligns over comments (ignored)
-     "class c;\n"
-     "// foo is...\n"
-     "int foo;\n"
-     "// b is...\n"
-     "const bit b;\n"
-     " // llama is...\n"
-     "logic llama;\n"
-     "endclass : c\n",
-     "class c;\n"
-     "  // foo is...\n"
-     "  int       foo;\n"
-     "  // b is...\n"
-     "  const bit b;\n"
-     "  // llama is...\n"
-     "  logic     llama;\n"
-     "endclass : c\n"},
-    {// aligns over comments (ignored), even with blank lines
-     "class c;\n"
-     "// foo is...\n"
-     "int foo;\n"
-     "\n"
-     "// b is...\n"
-     "const bit b;\n"
-     "\n"
-     " // llama is...\n"
-     "logic llama;\n"
-     "endclass : c\n",
-     "class c;\n"
-     "  // foo is...\n"
-     "  int       foo;\n"
-     "\n"
-     "  // b is...\n"
-     "  const bit b;\n"
-     "\n"
-     "  // llama is...\n"
-     "  logic     llama;\n"
-     "endclass : c\n"},
-    {"class c;\n"
-     "rand logic l;\n"
-     "int [1:0] foo;\n"
-     "endclass : c\n",
-     "class c;\n"
-     "  rand logic       l;\n"
-     "  int        [1:0] foo;\n"
-     "endclass : c\n"},
-    {// non-data-declarations break up groups
-     "class c;\n"
-     "rand logic l;\n"
-     "int foo;\n"
-     "`uvm_bar_foo()\n"
-     "logic k;\n"
-     "rand int bar;\n"
-     "endclass : c\n",
-     "class c;\n"
-     "  rand logic l;\n"
-     "  int        foo;\n"
-     "  `uvm_bar_foo()\n"  // separates alignment groups above/below
-     "  logic    k;\n"
-     "  rand int bar;\n"
-     "endclass : c\n"},
-    {// non-data-declarations break up groups
-     "class c;\n"
-     "logic k;\n"
-     "rand int bar;\n"
-     "function void f();\n"
-     "endfunction\n"
-     "rand logic l;\n"
-     "int foo;\n"
-     "endclass : c\n",
-     "class c;\n"
-     "  logic    k;\n"
-     "  rand int bar;\n"
-     "  function void f();\n"  // function declaration breaks groups
-     "  endfunction\n"
-     "  rand logic l;\n"
-     "  int        foo;\n"
-     "endclass : c\n"},
-    {// align single-value initializers at the '='
-     "class c;\n"
-     "const logic foo=0;\n"
-     "const bit b=1;\n"
-     "endclass : c\n",
-     "class c;\n"
-     "  const logic foo = 0;\n"
-     "  const bit   b   = 1;\n"
-     "endclass : c\n"},
-    {// align single-value initializers at the '=', over non-initialized
-     "class c;\n"
-     "const logic foo=0;\n"
-     "rand int iidrv;\n"
-     "const bit b=1;\n"
-     "endclass : c\n",
-     "class c;\n"
-     "  const logic foo    = 0;\n"
-     "  rand int    iidrv;\n"  // no initializer, but align across this
-     "  const bit   b      = 1;\n"
-     "endclass : c\n"},
-
-    // constraint test cases
-    {
-        "class foo; constraint c1_c{ } endclass",
-        "class foo;\n"
-        "  constraint c1_c {}\n"
-        "endclass\n",
-    },
-    {
-        "class foo; constraint c1_c{  } constraint c2_c{ } endclass",
-        "class foo;\n"
-        "  constraint c1_c {}\n"
-        "  constraint c2_c {}\n"
-        "endclass\n",
-    },
-    {
-        "class foo; constraint c1_c{soft z==y;unique{baz};}endclass",
-        "class foo;\n"
-        "  constraint c1_c {\n"
-        "    soft z == y;\n"
-        "    unique {baz};\n"
-        "  }\n"
-        "endclass\n",
-    },
-    {
-        "class foo; constraint c1_c{ //comment1\n"
-        "//comment2\n"
-        "//comment3\n"
-        "} endclass",
-        "class foo;\n"
-        "  constraint c1_c {  //comment1\n"
-        "    //comment2\n"
-        "    //comment3\n"
-        "  }\n"
-        "endclass\n",
-    },
-
-    {"class foo;constraint c { "
-     "timer_enable dist { [ 8'h0 : 8'hfe ] :/ 90 , 8'hff :/ 10 }; "
-     "} endclass\n",
-     "class foo;\n"
-     "  constraint c {\n"
-     "    timer_enable dist {\n"
-     "      [8'h0 : 8'hfe] :/ 90,\n"
-     "      8'hff          :/ 10\n"  // aligned
-     "    };\n"
-     "  }\n"
-     "endclass\n"},
-
-    {
-        "class Foo; constraint if_c { if (z) { soft x == y; } } endclass\n",
-        "class Foo;\n"
-        "  constraint if_c {\n"
-        "    if (z) {\n"
-        "      soft x == y;\n"
-        "    }\n"
-        "  }\n"
-        "endclass\n",
-    },
-    {
-        "class Foo; constraint if_c { if (z) {\n"
-        "//comment-a\n"
-        "soft x == y;\n"
-        "//comment-b\n"
-        "} } endclass\n",
-        "class Foo;\n"
-        "  constraint if_c {\n"
-        "    if (z) {\n"
-        "      //comment-a\n"  // properly indented
-        "      soft x == y;\n"
-        "      //comment-b\n"  // properly indented
-        "    }\n"
-        "  }\n"
-        "endclass\n",
-    },
-    {
-        "class c; "
-        "constraint c_has_config_error {"
-        "if (yyy) {zzzz == 1;} else {yyyyyyy == 0;}} "
-        "endclass",
-        "class c;\n"
-        "  constraint c_has_config_error {\n"
-        "    if (yyy) {\n"
-        "      zzzz == 1;\n"
-        "    } else {\n"
-        "      yyyyyyy == 0;\n"
-        "    }\n"
-        "  }\n"
-        "endclass\n",
-    },
-    // distributions: colon alignment
-    {"class c;\n"
-     "constraint co {\n"
-     "d dist {\n"
-     "[1:2]:/2,\n"
-     "[11:33]:/22,\n"
-     "[111:444]:/8,\n"
-     "[1:42]:/10,\n"
-     "[11:12]:/3\n"
-     "};\n"
-     "}\n"
-     "endclass\n",
-     "class c;\n"
-     "  constraint co {\n"
-     "    d dist {\n"
-     "      [  1 :   2] :/ 2,\n"
-     "      [ 11 :  33] :/ 22,\n"
-     "      [111 : 444] :/ 8,\n"
-     "      [  1 :  42] :/ 10,\n"
-     "      [ 11 :  12] :/ 3\n"
-     "    };\n"
-     "  }\n"
-     "endclass\n"},
-    // distributions: subcolumns
-    {"class foo;\n"
-     "constraint bar {\n"
-     "baz dist {\n"
-     "[1:2]:/2,\n"
-     "QUX[3:0]:/10,\n"
-     "[11:33]:/22,\n"
-     "ID_LONGER_THAN_RANGES:/3,\n"
-     "[111:QUUZ[Z]]:/8,\n"
-     "[X[4:0]:Y[8:Z-2]]:/8\n"
-     "};\n"
-     "}\n"
-     "endclass\n",
-     "class foo;\n"
-     "  constraint bar {\n"
-     "    baz dist {\n"
-     "      [     1 :        2]   :/ 2,\n"
-     "      QUX[3:0]              :/ 10,\n"
-     "      [    11 :       33]   :/ 22,\n"
-     "      ID_LONGER_THAN_RANGES :/ 3,\n"
-     "      [   111 :  QUUZ[Z]]   :/ 8,\n"
-     "      [X[4:0] : Y[8:Z-2]]   :/ 8\n"
-     "    };\n"
-     "  }\n"
-     "endclass\n"},
-    // class with empty parameter list
-    {"class foo #(); endclass",
-     "class foo #();\n"
-     "endclass\n"},
-    // class with empty parameter list, with comment
-    {"class foo #(  \n"
-     "// comment\n"
-     "); endclass",
-     "class foo #(\n"
-     "    // comment\n"
-     ");\n"
-     "endclass\n"},
-    // class with empty parameter list, extends
-    {"class foo #()extends bar ; endclass",
-     "class foo #() extends bar;\n"
-     "endclass\n"},
-    // class extends from type with named parameters
-    {"class foo extends bar #(.N(N), .M(M)); endclass",
-     "class foo extends bar #(\n"
-     "    .N(N),\n"
-     "    .M(M)\n"
-     ");\n"
-     "endclass\n"},
-
-    // class with one parameter list
-    {"class foo #(type a = b); endclass",
-     "class foo #(\n"
-     "    type a = b\n"
-     ");\n"
-     "endclass\n"},
-
-    // class with multiple paramter list
-    {"class foo #(type a = b, type c = d, type e = f); endclass",
-     "class foo #(\n"
-     "    type a = b,\n"
-     "    type c = d,\n"
-     "    type e = f\n"
-     ");\n"
-     "endclass\n"},
-
-    // class with data members
-    {"class  i_love_data ;const\ninteger  sizer\t;endclass",
-     "class i_love_data;\n"
-     "  const integer sizer;\n"
-     "endclass\n"},
-    {"class  i_love_data ;const\ninteger  sizer=3\t;endclass",
-     "class i_love_data;\n"
-     "  const integer sizer = 3;\n"
-     "endclass\n"},
-    {"class  i_love_data ;protected\nint  count  \t;endclass",
-     "class i_love_data;\n"
-     "  protected int count;\n"
-     "endclass\n"},
-    {"class  i_love_data ;\t\nint  counter\n ;int  countess \t;endclass",
-     "class i_love_data;\n"
-     "  int counter;\n"
-     "  int countess;\n"
-     "endclass\n"},
-    {"class  i_love_params ;foo#( . bar)  baz\t;endclass",
-     "class i_love_params;\n"
-     "  foo #(.bar) baz;\n"
-     "endclass\n"},
-    {"class  i_love_params ;foo#( . bar ( bah ))  baz\t;endclass",
-     "class i_love_params;\n"
-     "  foo #(.bar(bah)) baz;\n"
-     "endclass\n"},
-    {"class  i_love_params ;foo#( . bar ( bah\n),"
-     ".\ncat( dog) )  baz\t;endclass",
-     "class i_love_params;\n"
-     "  foo #(\n"
-     "      .bar(bah),\n"
-     "      .cat(dog)\n"
-     "  ) baz;\n"
-     "endclass\n"},
-    {"class  i_love_params ;foo#( . bar)  baz1,baz2\t;endclass",
-     "class i_love_params;\n"
-     "  foo #(.bar) baz1, baz2;\n"
-     "endclass\n"},
-    {"class  i_love_params ;foo#( . bar)  baz\t;baz#(.foo)bar;endclass",
-     "class i_love_params;\n"
-     "  foo #(.bar) baz;\n"
-     "  baz #(.foo) bar;\n"
-     "endclass\n"},
-    {"class i_love_params // comment\n"
-     ";\n"
-     "foo#(\n"
-     ".foobar(quuuuux) // comment\n"
-     ", .cat(dog)\n"
-     ") baz // comment\n"
-     ";endclass\n",
-     "class i_love_params  // comment\n"
-     ";\n"
-     "  foo #(\n"
-     "        .foobar(quuuuux)  // comment\n"
-     "      , .cat   (dog)\n"
-     "  ) baz  // comment\n"
-     "  ;\n"
-     "endclass\n"},
-
-    // typedef test cases
-    {"typedef enum logic\t{ A=0, B=1 }foo_t;",
-     "typedef enum logic {\n"
-     "  A = 0,\n"
-     "  B = 1\n"
-     "} foo_t;\n"},
-    {"typedef enum uint8_t\t{ kA=8'b0, kB=8'b1 }foo_t;",
-     "typedef enum uint8_t {\n"  // uint8_t is user-defined
-     "  kA = 8'b0,\n"
-     "  kB = 8'b1\n"
-     "} foo_t;\n"},
-    {// With comments on same line as enum value
-     "typedef enum logic\t{ A=0, // foo\n"
-     "B,// bar\n"
-     "`ifndef DO_PANIC\n"
-     "C=42,// answer\n"
-     "`endif\n"
-     "D=3    // baz\n"
-     "}foo_t;",
-     "typedef enum logic {\n"
-     "  A = 0,   // foo\n"
-     "  B,       // bar\n"
-     "`ifndef DO_PANIC\n"
-     "  C = 42,  // answer\n"
-     "`endif\n"
-     "  D = 3    // baz\n"
-     "} foo_t;\n"},
-    {// with scalar dimensions
-     "typedef enum logic[2]\t{ A=0, B=1 }foo_t;",
-     "typedef enum logic [2] {\n"
-     "  A = 0,\n"
-     "  B = 1\n"
-     "} foo_t;\n"},
-    {// with range dimensions
-     "typedef enum logic[1:0]\t{ A=0, B=1 }foo_t;",
-     "typedef enum logic [1:0] {\n"
-     "  A = 0,\n"
-     "  B = 1\n"
-     "} foo_t;\n"},
-    {"typedef foo_pkg::baz_t#(.L(L), .W(W)) bar_t;\n",
-     "typedef foo_pkg::baz_t#(\n"
-     "    .L(L),\n"
-     "    .W(W)\n"
-     ") bar_t;\n"},
-    // By default (class_parameter_space == false), no space before '#'
-    {"typedef dv_base_env_cov #(.CFG_T(tl_agent_env_cfg)) tl_agent_env_cov;\n",
-     "typedef dv_base_env_cov#(\n"
-     "    .CFG_T(tl_agent_env_cfg)\n"
-     ") tl_agent_env_cov;\n"},
-    {"typedef dv_base_env_cov#(.CFG_T(tl_agent_env_cfg)) tl_agent_env_cov;\n",
-     "typedef dv_base_env_cov#(\n"
-     "    .CFG_T(tl_agent_env_cfg)\n"
-     ") tl_agent_env_cov;\n"},
-    // single short parameter stays on one line
-    {"typedef my_class #(.P(P)) my_class_t;\n",
-     "typedef my_class#(.P(P)) my_class_t;\n"},
-
-    // let declarations each stay on their own line
-    {"module t;\n"
-     "let OFF = 4;\n"
-     "let UNIQUE = 32;\n"
-     "let PP(a) = 30 + a;\n"
-     "endmodule\n",
-     "module t;\n"
-     "  let OFF = 4;\n"
-     "  let UNIQUE = 32;\n"
-     "  let PP(a) = 30 + a;\n"
-     "endmodule\n"},
-
-    // let declarations each stay on their own line
-    {"module t;\n"
-     "let OFF = 4;\n"
-     "let UNIQUE = 32;\n"
-     "let PP(a) = 30 + a;\n"
-     "endmodule\n",
-     "module t;\n"
-     "  let OFF = 4;\n"
-     "  let UNIQUE = 32;\n"
-     "  let PP(a) = 30 + a;\n"
-     "endmodule\n"},
-
-    // package test cases
-    {"package fedex;localparam  int  www=3 ;endpackage   :  fedex\n",
-     "package fedex;\n"
-     "  localparam int www = 3;\n"
-     "endpackage : fedex\n"},
-    {"package   typey ;"
-     "typedef enum int{ A=0, B=1 }foo_t;"
-     "typedef enum{ C=0, D=1 }bar_t;"
-     "endpackage:typey\n",
-     "package typey;\n"
-     "  typedef enum int {\n"
-     "    A = 0,\n"
-     "    B = 1\n"
-     "  } foo_t;\n"
-     "  typedef enum {\n"
-     "    C = 0,\n"
-     "    D = 1\n"
-     "  } bar_t;\n"
-     "endpackage : typey\n"},
-    {// net type declarations
-     "package foo_pkg;"
-     "nettype shortreal\t\tfoo  ;"
-     "nettype\nbar[1:0 ] baz  with\tquux ;"
-     "endpackage",
-     "package foo_pkg;\n"
-     "  nettype shortreal foo;\n"
-     "  nettype bar [1:0] baz with quux;\n"
-     "endpackage\n"},
-    {"package foo_pkg; \n"
-     "// function description.......\n"
-     "function automatic void bar();"
-     "endfunction "
-     "endpackage\n",
-     "package foo_pkg;\n"
-     "  // function description.......\n"
-     "  function automatic void bar();\n"
-     "  endfunction\n"
-     "endpackage\n"},
-    {"package foo_pkg; \n"
-     "// function description.......\n"
-     "function void bar(string name=\"x\" ) ;"
-     "endfunction "
-     "endpackage\n",
-     "package foo_pkg;\n"
-     "  // function description.......\n"
-     "  function void bar(string name = \"x\");\n"
-     "  endfunction\n"
-     "endpackage\n"},
-    {" package foo_pkg; \n"
-     "// class description.............\n"
-     "class classy;"
-     "endclass "
-     "endpackage\n",
-     "package foo_pkg;\n"
-     "  // class description.............\n"
-     "  class classy;\n"
-     "  endclass\n"
-     "endpackage\n"},
-    {"package\tfoo_pkg; \n"
-     "// class description.............\n"
-     "class   classy;    \n"
-     "// function description.......\n"
-     "function\nautomatic   void bar( );"
-     "endfunction   "
-     "endclass\t"
-     "endpackage\n",
-     "package foo_pkg;\n"
-     "  // class description.............\n"
-     "  class classy;\n"
-     "    // function description.......\n"
-     "    function automatic void bar();\n"
-     "    endfunction\n"
-     "  endclass\n"
-     "endpackage\n"},
-    {"package fedex;\n"
-     "  import \"asdf\" context function void bar(\n"
-     "    input bit              [2:1] aaaa,   // EOL COMMENT\n"
-     "                                          // another\n"
-     "    input bit foo\n"
-     "  );\n"
-     "endpackage\n",
-     "package fedex;\n"
-     "  import \"asdf\" context\n"
-     "      function void bar(\n"
-     "    input\n        bit [2:1] aaaa,  // EOL COMMENT\n"
-     "                         // another\n"
-     "    input bit foo\n"
-     "  );\n"
-     "endpackage\n"},
-
-    // function test cases
-    {"function f ;endfunction", "function f;\nendfunction\n"},
-    {"function f ;endfunction:   f", "function f;\nendfunction : f\n"},
-    {"function f ( );endfunction", "function f();\nendfunction\n"},
-    {"function f (input bit x);endfunction",
-     "function f(input bit x);\nendfunction\n"},
-    {"function f (input bit x,logic y );endfunction",
-     "function f(input bit x, logic y);\nendfunction\n"},
-    {"function f;\n// statement comment\nendfunction\n",
-     "function f;\n"
-     "  // statement comment\n"  // indented
-     "endfunction\n"},
-    {"function f();\n// statement comment\nendfunction\n",
-     "function f();\n"
-     "  // statement comment\n"  // indented
-     "endfunction\n"},
-    {"function f(input int x);\n"
-     "// statement comment\n"
-     "f=x;\n"
-     "// statement comment\n"
-     "endfunction\n",
-     "function f(input int x);\n"
-     "  // statement comment\n"  // indented
-     "  f = x;\n"
-     "  // statement comment\n"  // indented
-     "endfunction\n"},
-    {// line breaks around assignments
-     "function f;a=b;c+=d;endfunction",
-     "function f;\n"
-     "  a = b;\n"
-     "  c += d;\n"
-     "endfunction\n"},
-    {"function f;a&=b;c=d;endfunction",
-     "function f;\n"
-     "  a &= b;\n"
-     "  c = d;\n"
-     "endfunction\n"},
-    {"function f;a<<=b;c=b;d>>>=b;endfunction",
-     "function f;\n"
-     "  a <<= b;\n"
-     "  c = b;\n"
-     "  d >>>= b;\n"
-     "endfunction\n"},
-    {// port declaration exceeds line length limit
-     "function f (loooong_type if_it_fits_I_sits);endfunction",
-     "function f(\n"
-     "    loooong_type if_it_fits_I_sits);\n"
-     "endfunction\n"},
-    {"function\nvoid\tspace;a=( b+c )\n;endfunction   :space\n",
-     "function void space;\n"
-     "  a = (b + c);\n"
-     "endfunction : space\n"},
-    {"function\nvoid\twarranty;return  to_sender\n;endfunction   :warranty\n",
-     "function void warranty;\n"
-     "  return to_sender;\n"
-     "endfunction : warranty\n"},
-    {// if statement that fits on one line
-     "function if_i_fits_i_sits;"
-     "if(x)y=x;"
-     "endfunction",
-     "function if_i_fits_i_sits;\n"
-     "  if (x) y = x;\n"
-     "endfunction\n"},
-    {// for loop
-     "function\nvoid\twarranty;for(j=0; j<k; --k)begin "
-     "++j\n;end endfunction   :warranty\n",
-     "function void warranty;\n"
-     "  for (j = 0; j < k; --k) begin\n"
-     "    ++j;\n"
-     "  end\n"
-     "endfunction : warranty\n"},
-    {// for loop that needs wrapping
-     "function\nvoid\twarranty;for(jjjjj=0; jjjjj<kkkkk; --kkkkk)begin "
-     "++j\n;end endfunction   :warranty\n",
-     "function void warranty;\n"
-     "  for (\n"
-     "      jjjjj = 0; jjjjj < kkkkk; --kkkkk\n"
-     "  ) begin\n"
-     "    ++j;\n"
-     "  end\n"
-     "endfunction : warranty\n"},
-    {// for loop that needs more wrapping
-     "function\nvoid\twarranty;"
-     "for(jjjjjjjj=0; jjjjjjjj<kkkkkkkk; --kkkkkkkk)begin "
-     "++j\n;end endfunction   :warranty\n",
-     "function void warranty;\n"
-     "  for (\n"
-     "      jjjjjjjj = 0;\n"
-     "      jjjjjjjj < kkkkkkkk;\n"
-     "      --kkkkkkkk\n"
-     "  ) begin\n"
-     "    ++j;\n"
-     "  end\n"
-     "endfunction : warranty\n"},
-    {// for loop that fits on one line
-     "function loop_fits;"
-     "for(x=0;x<N;++x) y=x;"
-     "endfunction",
-     "function loop_fits;\n"
-     "  for (x = 0; x < N; ++x) y = x;\n"
-     "endfunction\n"},
-    {// for loop that would fit on one line, but is force-split with //comment
-     "function loop_fits;"
-     "for(x=0;x<N;++x) //\n y=x;"
-     "endfunction",
-     "function loop_fits;\n"
-     "  for (x = 0; x < N; ++x)  //\n"
-     "    y = x;\n"
-     "endfunction\n"},
-    {// for loop with function call in initializer
-     "function  void looper(); "
-     "for (int i=f(n); i>=0; i -- ) begin end "
-     "endfunction",
-     "function void looper();\n"
-     "  for (int i = f(n); i >= 0; i--) begin\n"
-     "  end\n"
-     "endfunction\n"},
-    {// for loop with function call in condition
-     "function  void looper(); "
-     "for (int i=0; i<f(m); i -- ) begin end "
-     "endfunction",
-     "function void looper();\n"
-     "  for (int i = 0; i < f(m); i--) begin\n"
-     "  end\n"
-     "endfunction\n"},
-    {// for loop with an attribute instance in the initializer.
-     // Regression: this used to abort with a CHECK failure while reshaping
-     // the kForSpec partitions when an attribute appears in the header.
-     "module m; initial for(int i=0(* a *);i<4;i++) x=i; endmodule",
-     "module m;\n"
-     "  initial\n"
-     "    for (int i = 0 (* a *); i < 4; i++)\n"
-     "      x = i;\n"
-     "endmodule\n"},
-    {// forever loop
-     "function\nvoid\tforevah;forever  begin "
-     "++k\n;end endfunction\n",
-     "function void forevah;\n"
-     "  forever begin\n"
-     "    ++k;\n"
-     "  end\n"
-     "endfunction\n"},
-    {// forever loop
-     "function\nvoid\tforevah;forever  "
-     "++k\n;endfunction\n",
-     "function void forevah;\n"
-     "  forever ++k;\n"
-     "endfunction\n"},
-    {// forever loop, forced break
-     "function\nvoid\tforevah;forever     //\n"
-     "++k\n;endfunction\n",
-     "function void forevah;\n"
-     "  forever  //\n"
-     "    ++k;\n"
-     "endfunction\n"},
-    {// repeat loop
-     "function\nvoid\tpete;repeat(3)  begin "
-     "++k\n;end endfunction\n",
-     "function void pete;\n"
-     "  repeat (3) begin\n"
-     "    ++k;\n"
-     "  end\n"
-     "endfunction\n"},
-    {// repeat loop
-     "function\nvoid\tpete;repeat(3)  "
-     "++k\n;endfunction\n",
-     "function void pete;\n"
-     "  repeat (3)++k;\n"  // TODO(fangism): space before ++
-     "endfunction\n"},
-    {// repeat loop, forced break
-     "function\nvoid\tpete;repeat(3)//\n"
-     "++k\n;endfunction\n",
-     "function void pete;\n"
-     "  repeat (3)  //\n"
-     "    ++k;\n"
-     "endfunction\n"},
-    {// while loop
-     "function\nvoid\twily;while( coyote )  begin "
-     "++super_genius\n;end endfunction\n",
-     "function void wily;\n"
-     "  while (coyote) begin\n"
-     "    ++super_genius;\n"
-     "  end\n"
-     "endfunction\n"},
-    {// while loop
-     "function\nvoid\twily;while( coyote )  "
-     "++ super_genius\n;   endfunction\n",
-     "function void wily;\n"
-     "  while (coyote)++super_genius;\n"  // TODO(fangism): space before ++
-     "endfunction\n"},
-    {// while loop, forced break
-     "function\nvoid\twily;while( coyote ) //\n "
-     "++ super_genius\n;   endfunction\n",
-     "function void wily;\n"
-     "  while (coyote)  //\n"
-     "    ++super_genius;\n"
-     "endfunction\n"},
-    {// do-while loop
-     "function\nvoid\tdonot;do  begin "
-     "++s\n;end  while( z);endfunction\n",
-     "function void donot;\n"
-     "  do begin\n"
-     "    ++s;\n"
-     "  end while (z);\n"
-     "endfunction\n"},
-    {// do-while loop, single statement
-     "function\nvoid\tdonot;do  "
-     "++s\n;  while( z);endfunction\n",
-     "function void donot;\n"
-     "  do ++s; while (z);\n"
-     "endfunction\n"},
-    {// do-while loop, single statement, forced break
-     "function\nvoid\tdonot;do  "
-     "++s\n;//\n  while( z);endfunction\n",
-     "function void donot;\n"
-     "  do\n"
-     "    ++s;  //\n"
-     "  while (z);\n"
-     "endfunction\n"},
-    {// foreach loop
-     "function\nvoid\tforeacher;foreach( m [n] )  begin "
-     "++m\n;end endfunction\n",
-     "function void foreacher;\n"
-     "  foreach (m[n]) begin\n"
-     "    ++m;\n"
-     "  end\n"
-     "endfunction\n"},
-    {// spaces in condition expression
-     "function f; return {a}? {b} :{ c };endfunction",
-     "function f;\n"
-     "  return {a} ? {b} : {c};\n"
-     "endfunction\n"},
-    {"task t;endtask",
-     "task t;\n"
-     "endtask\n"},
-    {"task t (   );endtask",
-     "task t();\n"
-     "endtask\n"},
-    {"task t (input    bit   drill   ) ;endtask",
-     "task t(input bit drill);\n"
-     "endtask\n"},
-    {"task t; ## 100 ;endtask",
-     "task t;\n"
-     "  ##100;\n"
-     "endtask\n"},
-    {"task t; ## (1+1) ;endtask",  // delay expression
-     "task t;\n"
-     "  ##(1 + 1);\n"
-     "endtask\n"},
-    {"task t; ## delay_value ;endtask",
-     "task t;\n"
-     "  ##delay_value;\n"
-     "endtask\n"},
-    {"task t; ## `DELAY_VALUE ;endtask",
-     "task t;\n"
-     "  ##`DELAY_VALUE;\n"
-     "endtask\n"},
-    {"task t;\n"
-     "`uvm_error( foo,bar);\n"
-     "endtask\n",
-     "task t;\n"
-     "  `uvm_error(foo, bar);\n"
-     "endtask\n"},
-    {"task t;\n"
-     "`uvm_error(foo,bar)\n"
-     ";\n"  // null statement
-     "endtask\n",
-     "task t;\n"
-     "  `uvm_error(foo, bar)\n"
-     "  ;\n"
-     "endtask\n"},
-    {"task t;\n"
-     "if(expr)begin\t\n"
-     "`uvm_error(foo,bar);\n"
-     "end\n"
-     "endtask\n",
-     "task t;\n"
-     "  if (expr) begin\n"
-     "    `uvm_error(foo, bar);\n"
-     "  end\n"
-     "endtask\n"},
-    {"task\nrabbit;$kill(the,\nrabbit)\n;endtask:  rabbit\n",
-     "task rabbit;\n"
-     "  $kill(the, rabbit);\n"
-     "endtask : rabbit\n"},
-    {"function  int foo( );if( a )a+=1 ; endfunction",
-     "function int foo();\n"
-     "  if (a) a += 1;\n"
-     "endfunction\n"},
-    {"function  void foo( );foo=`MACRO(b,c) ; endfunction",
-     "function void foo();\n"
-     "  foo = `MACRO(b, c);\n"
-     "endfunction\n"},
-    {"module foo;if    \t  (bar)begin assign a=1; end endmodule",
-     "module foo;\n"
-     "  if (bar) begin\n"
-     "    assign a = 1;\n"
-     "  end\n"
-     "endmodule\n"},
-    {"module proc_cont_assigner;\n"
-     "always begin\n"
-     "assign x1 =   y1;\n"
-     "deassign   x2 ;\n"
-     "force x3=y3;\n"
-     "release   x4 ;\n"
-     "end\n"
-     "endmodule\n",
-     "module proc_cont_assigner;\n"
-     "  always begin\n"
-     "    assign x1 = y1;\n"
-     "    deassign x2;\n"
-     "    force x3 = y3;\n"
-     "    release x4;\n"
-     "  end\n"
-     "endmodule\n"},
-    {"module g_test(  );\n"
-     "\tinitial begin:main_test \t"
-     "for(int i=0;i<k;i++)begin "
-     "case(i )\n"
-     " 6'd0  :release in[0];  \n"
-     "   endcase  "
-     " \t\tend \t"
-     "\t end:main_test\n"
-     "endmodule:g_test\n",
-     "module g_test ();\n"
-     "  initial begin : main_test\n"
-     "    for (int i = 0; i < k; i++) begin\n"
-     "      case (i)\n"
-     "        6'd0: release in[0];\n"
-     "      endcase\n"
-     "    end\n"
-     "  end : main_test\n"
-     "endmodule : g_test\n"},
-    {// conditional generate (case)
-     "module mc; case(s)a : bb c ; d : ee f; endcase endmodule",
-     "module mc;\n"
-     "  case (s)\n"
-     "    a: bb c;\n"
-     "    d: ee f;\n"
-     "  endcase\n"
-     "endmodule\n"},
-    {// conditional generate (case), with comments
-     "module mc; case(s)\n//comment a\na:bb  c;\n//comment b\n endcase "
-     "endmodule",
-     "module mc;\n"
-     "  case (s)\n"
-     "    //comment a\n"  // indented to case-item level
-     "    a: bb c;\n"
-     "    //comment b\n"  // indented to case-item level
-     "  endcase\n"
-     "endmodule\n"},
-
-    {// "default:", not "default :"
-     "function f; case (x) default: x=y; endcase endfunction\n",
-     "function f;\n"
-     "  case (x)\n"
-     "    default: x = y;\n"
-     "  endcase\n"
-     "endfunction\n"},
-    {// default with null statement: "default: ;", not "default :;"
-     "function f; case (x) default :; endcase endfunction\n",
-     "function f;\n"
-     "  case (x)\n"
-     "    default: ;\n"
-     "  endcase\n"
-     "endfunction\n"},
-    {// case statement
-     "function f; case (x) State0 : a=b; State1 : begin a=b; end "
-     "endcase endfunction\n",
-     "function f;\n"
-     "  case (x)\n"
-     "    State0: a = b;\n"
-     "    State1: begin\n"
-     "      a = b;\n"
-     "    end\n"
-     "  endcase\n"
-     "endfunction\n"},
-    {// case statement, interleaved with comments
-     "function f; case (x) \n//c1\nState0 : a=b;//c2\n//c3\n State1 : "
-     "a=b;//c4\n//c5\n "
-     "endcase endfunction\n",
-     "function f;\n"
-     "  case (x)\n"
-     "    //c1\n"
-     "    State0: a = b;  //c2\n"
-     "    //c3\n"
-     "    State1: a = b;  //c4\n"
-     "    //c5\n"
-     "  endcase\n"
-     "endfunction\n"},
-    {// case inside statement, comments
-     "function f; case (x)inside \n//comment\n"
-     "[0:1]:x=y; \n"
-     "    //comment\n"
-     "endcase endfunction\n",
-     "function f;\n"
-     "  case (x) inside\n"
-     "    //comment\n"
-     "    [0 : 1]: x = y;\n"
-     "    //comment\n"
-     "  endcase\n"
-     "endfunction\n"},
-    {// case inside statement
-     "function f; case (x)inside k1 : return b; k2 : begin return b; end "
-     "endcase endfunction\n",
-     "function f;\n"
-     "  case (x) inside\n"
-     "    k1: return b;\n"
-     "    k2: begin\n"
-     "      return b;\n"
-     "    end\n"
-     "  endcase\n"
-     "endfunction\n"},
-    {// case inside statement, with ranges
-     "function f; case (x) inside[a:b] : return b; [c:d] : return b; "
-     "default :return z;"
-     "endcase endfunction\n",
-     "function f;\n"
-     "  case (x) inside\n"
-     "    [a : b]: return b;\n"
-     "    [c : d]: return b;\n"
-     "    default: return z;\n"
-     "  endcase\n"
-     "endfunction\n"},
-    {// case pattern statement
-     "function f;"
-     "case (y) matches "
-     ".foo   : return 0;"
-     ".*\t: return 1;"
-     "endcase "
-     "case (z) matches "
-     ".foo\t\t: return 0;"
-     ".*   : return 1;"
-     "endcase "
-     "endfunction",
-     "function f;\n"
-     "  case (y) matches\n"
-     "    .foo: return 0;\n"
-     "    .*: return 1;\n"
-     "  endcase\n"
-     "  case (z) matches\n"
-     "    .foo: return 0;\n"
-     "    .*: return 1;\n"
-     "  endcase\n"
-     "endfunction\n"},
-    {// keep short case items on one line
-     "function f; case (x)k1 : if( b )break; default :return 2;"
-     "endcase endfunction\n",
-     "function f;\n"
-     "  case (x)\n"
-     "    k1:      if (b) break;\n"  // aligned
-     "    default: return 2;\n"
-     "  endcase\n"
-     "endfunction\n"},
-    {// keep short default items on one line
-     "function f; case (x)k1 :break; default :if( c )return 2;"
-     "endcase endfunction\n",
-     "function f;\n"
-     "  case (x)\n"
-     "    k1:      break;\n"  // aligned
-     "    default: if (c) return 2;\n"
-     "  endcase\n"
-     "endfunction\n"},
-    {// keep short case inside items on one line
-     "function f; case (x)inside k1 : if( b )return c; k2 : return a;"
-     "endcase endfunction\n",
-     "function f;\n"
-     "  case (x) inside\n"
-     "    k1: if (b) return c;\n"
-     "    k2: return a;\n"
-     "  endcase\n"
-     "endfunction\n"},
-    {// keep short case pattern items on one line
-     "function f;"
-     "case (y) matches "
-     ".foo   :if( n )return 0;"
-     ".*\t: return 1;"
-     "endcase "
-     "endfunction",
-     "function f;\n"
-     "  case (y) matches\n"
-     "    .foo: if (n) return 0;\n"
-     "    .*: return 1;\n"
-     "  endcase\n"
-     "endfunction\n"},
-    {// randcase
-     "function f; randcase k1 : return c; k2 : return a;"
-     "endcase endfunction\n",
-     "function f;\n"
-     "  randcase\n"
-     "    k1: return c;\n"
-     "    k2: return a;\n"
-     "  endcase\n"
-     "endfunction\n"},
-
-    // This tests checks for not breaking around hierarchy operators.
-    {"function\nvoid\twarranty;"
-     "foo.bar = fancyfunction(aaaaaaaa.bbbbbbb,"
-     "    ccccccccc.ddddddddd) ;"
-     "endfunction   :warranty\n",
-     "function void warranty;\n"
-     "  foo.bar = fancyfunction(\n"
-     "      aaaaaaaa.bbbbbbb,\n"
-     "      ccccccccc.ddddddddd\n"
-     "  );\n"
-     "endfunction : warranty\n"},
-
-    // Group of tests testing partitioning of arguments inside function calls
-    {// function with function call inside if statement header
-     "function foo;if(aa(bb,cc));endfunction\n",
-     "function foo;\n"
-     "  if (aa(bb, cc));\n"
-     "endfunction\n"},
-    {// function with function call inside if statement header and with
-     // begin-end block
-     "function foo;if (aa(bb,cc,dd,ee))begin end endfunction\n",
-     "function foo;\n"
-     "  if (aa(bb, cc, dd, ee)) begin\n"
-     "  end\n"
-     "endfunction\n"},
-    {// function with kMethodCallExtension inside if statement header and with
-     // begin-end block
-     "function foo;if (aa.bb(cc,dd,ee))begin end endfunction\n",
-     "function foo;\n"
-     "  if (aa.bb(cc, dd, ee)) begin\n"
-     "  end\n"
-     "endfunction\n"},
-    {// nested kMethodCallExtension calls - one level
-     "function foo;aa.bb(cc.dd(a1), ee.ff(a2));endfunction\n",
-     "function foo;\n"
-     "  aa.bb(cc.dd(a1), ee.ff(a2));\n"
-     "endfunction\n"},
-    {// nested kMethodCallExtension calls - two level
-     "function foo;aa.bb(cc.dd(a1.b1(a2), b1), ee.ff(c1, d1));endfunction\n",
-     "function foo;\n"
-     "  aa.bb(cc.dd(a1.b1(a2), b1), ee.ff(\n"
-     "        c1, d1));\n"
-     "endfunction\n"},
-
-    {// simple initial statement with function call
-     "module m;initial aa(bb,cc,dd,ee);endmodule\n",
-     "module m;\n"
-     "  initial aa(bb, cc, dd, ee);\n"
-     "endmodule\n"},
-    {// expressions and function calls inside if-statement headers
-     "module m;initial begin if(aa(bb)==cc(dd))a=b;if (xx()) b = a;end "
-     "endmodule\n",
-     "module m;\n"
-     "  initial begin\n"
-     "    if (aa(bb) == cc(dd)) a = b;\n"
-     "    if (xx()) b = a;\n"
-     "  end\n"
-     "endmodule\n"},
-    {// fuction with two arguments inside if-statement headers
-     "module\nm;initial\nbegin\nif(aa(bb,cc))x=y;end\nendmodule\n",
-     "module m;\n"
-     "  initial begin\n"
-     "    if (aa(bb, cc)) x = y;\n"
-     "  end\n"
-     "endmodule\n"},
-    {// kMethodCallExtension inside if-statement headers
-     "module m;initial begin if (aa.bb(cc)) x = y;end endmodule",
-     "module m;\n"
-     "  initial begin\n"
-     "    if (aa.bb(cc)) x = y;\n"
-     "  end\n"
-     "endmodule\n"},
-    {// initial statement with object method call
-     "module m; initial a.b(a,b,c); endmodule\n",
-     "module m;\n"
-     "  initial a.b(a, b, c);\n"
-     "endmodule\n"},
-    {// initial statement with method call on indexed object
-     "module m; initial a[i].b(a,b,c); endmodule\n",
-     "module m;\n"
-     "  initial a[i].b(a, b, c);\n"
-     "endmodule\n"},
-    {// initial statement with method call on function returned object
-     "module m; initial a(d,e,f).b(a,b,c); endmodule\n",
-     "module m;\n"
-     "  initial a(d, e, f).b(a, b, c);\n"
-     "endmodule\n"},
-    {// initial statement with indexed access to function returned object
-     "module m; initial a(a,b,c)[i]; endmodule\n",
-     "module m;\n"
-     "  initial a(a, b, c) [i];\n"
-     "endmodule\n"},
-    {// method call with no arguments on an object
-     "module m; initial foo.bar();endmodule\n",
-     "module m;\n"
-     "  initial foo.bar();\n"
-     "endmodule\n"},
-    {// method call with one argument on an object
-     "module m; initial foo.bar(aa);endmodule\n",
-     "module m;\n"
-     "  initial foo.bar(aa);\n"
-     "endmodule\n"},
-    {// method call with two arguments on an object
-     "module m; initial foo.bar(aa,bb);endmodule\n",
-     "module m;\n"
-     "  initial foo.bar(aa, bb);\n"
-     "endmodule\n"},
-    {// method call with three arguments on an object
-     "module m; initial foo.bar(aa,bb,cc);endmodule\n",
-     "module m;\n"
-     "  initial foo.bar(aa, bb, cc);\n"
-     "endmodule\n"},
-
-    {
-        // This tests for if-statements with null statements
-        "function foo;"
-        "if (zz) ; "
-        "if (yy) ; "
-        "endfunction",
-        "function foo;\n"
-        "  if (zz);\n"
-        "  if (yy);\n"
-        "endfunction\n",
-    },
-
-    {
-        // This tests for if-statements starting on their own line.
-        "function foo;"
-        "if (zz) begin "
-        "return 0;"
-        "end "
-        "if (yy) begin "
-        "return 1;"
-        "end "
-        "endfunction",
-        "function foo;\n"
-        "  if (zz) begin\n"
-        "    return 0;\n"
-        "  end\n"
-        "  if (yy) begin\n"
-        "    return 1;\n"
-        "  end\n"
-        "endfunction\n",
-    },
-
-    {
-        // This tests for if-statements with single statement bodies
-        "function foo;"
-        "if (zz) return 0;"
-        "if (yy) return 1;"
-        "endfunction",
-        "function foo;\n"
-        "  if (zz) return 0;\n"
-        "  if (yy) return 1;\n"
-        "endfunction\n",
-    },
-
-    {
-        // This tests for if-statement mixed with plain statements
-        "function foo;"
-        "a=b;"
-        "if (zz) return 0;"
-        "c=d;"
-        "endfunction",
-        "function foo;\n"
-        "  a = b;\n"
-        "  if (zz) return 0;\n"
-        "  c = d;\n"
-        "endfunction\n",
-    },
-
-    {
-        // This tests for if-statement with forced break mixed with others
-        "function foo;"
-        "a=b;"
-        "if (zz)//\n return 0;"
-        "c=d;"
-        "endfunction",
-        "function foo;\n"
-        "  a = b;\n"
-        "  if (zz)  //\n"
-        "    return 0;\n"
-        "  c = d;\n"
-        "endfunction\n",
-    },
-    {
-        "function t;"
-        "if (r == t)"
-        "a.b(c);"
-        "endfunction",
-        "function t;\n"
-        "  if (r == t) a.b(c);\n"
-        "endfunction\n",
-    },
-
-    {// This tests for for-statement with forced break mixed with others
-     "function f;"
-     "x=y;"
-     "for (int i=0; i<S*IPS; i++) #1ps a += $urandom();"
-     "return 2;"
-     "endfunction",
-     "function f;\n"
-     "  x = y;\n"
-     "  for (int i = 0; i < S * IPS; i++)\n"  // doesn't fit, so indents
-     "    #1ps a += $urandom();\n"
-     "  return 2;\n"
-     "endfunction\n"},
-
-    {
-        // This tests for-statements with null statements
-        "function foo;"
-        "for(;;)  ;\t"
-        "for(;;)  ;\t"
-        "endfunction",
-        "function foo;\n"
-        "  for (;;);\n"
-        "  for (;;);\n"
-        "endfunction\n",
-    },
-
-    {
-        // This tests for if-else-statements with null statements
-        "function foo;"
-        "if (zz) ;  else  ;"
-        "if (yy) ;   else   ;"
-        "endfunction",
-        "function foo;\n"
-        "  if (zz);\n"
-        "  else;\n"
-        "  if (yy);\n"
-        "  else;\n"
-        "endfunction\n",
-    },
-
-    {
-        // This tests for end-else-begin.
-        "function foo;"
-        "if (zz) begin "
-        "return 0;"
-        "end "
-        "else "
-        "begin "
-        "return 1;"
-        "end "
-        "endfunction",
-        "function foo;\n"
-        "  if (zz) begin\n"
-        "    return 0;\n"
-        "  end else begin\n"
-        "    return 1;\n"
-        "  end\n"
-        "endfunction\n",
-    },
-    {
-        // This tests for end-else-if
-        "function foo;"
-        "if (zz) begin "
-        "return 0;"
-        "end "
-        "else "
-        "if(yy)begin "
-        "return 1;"
-        "end "
-        "endfunction",
-        "function foo;\n"
-        "  if (zz) begin\n"
-        "    return 0;\n"
-        "  end else if (yy) begin\n"
-        "    return 1;\n"
-        "  end\n"
-        "endfunction\n",
-    },
-    {
-        // This tests labeled end-else-if
-        "function foo;"
-        "if (zz) begin : label1 "
-        "return 0;"
-        "end : label1 "
-        "else if (yy) begin : label2 "
-        "return 1;"
-        "end : label2 "
-        "endfunction",
-        "function foo;\n"
-        "  if (zz) begin : label1\n"
-        "    return 0;\n"
-        "  end : label1\n"
-        "  else if (yy) begin : label2\n"
-        "    return 1;\n"
-        "  end : label2\n"
-        "endfunction\n",
-    },
-    {
-        // This tests labeled end-else-if-else
-        "function foo;"
-        "if (zz) begin : label1 "
-        "return 0;"
-        "end : label1 "
-        "else if (yy) begin : label2 "
-        "return 1;"
-        "end : label2 "
-        "else begin : label3 "
-        "return 2;"
-        "end : label3 "
-        "endfunction",
-        "function foo;\n"
-        "  if (zz) begin : label1\n"
-        "    return 0;\n"
-        "  end : label1\n"
-        "  else if (yy) begin : label2\n"
-        "    return 1;\n"
-        "  end : label2\n"
-        "  else begin : label3\n"
-        "    return 2;\n"
-        "  end : label3\n"
-        "endfunction\n",
-    },
-
-    {
-        // randomize function
-        "function r ;"
-        "if ( ! randomize (bar )) begin    end "
-        "if ( ! obj.randomize (bar )) begin    end "
-        "endfunction",
-        "function r;\n"
-        "  if (!randomize(bar)) begin\n"
-        "  end\n"
-        "  if (!obj.randomize(bar)) begin\n"
-        "  end\n"
-        "endfunction\n",
-    },
-    {
-        // randomize-with call, with comments
-        "function f;"
-        "s = std::randomize() with {\n"
-        "// comment1\n"
-        "a == e;\n"
-        "// comment2\n"
-        "};"
-        "endfunction\n",
-        "function f;\n"
-        "  s = std::randomize() with {\n"
-        "    // comment1\n"
-        "    a == e;\n"
-        "    // comment2\n"
-        "  };\n"
-        "endfunction\n",
-    },
-    {
-        // randomize-with call, with comments, one joined
-        "function f;"
-        "s = std::randomize() with {\n"
-        "// comment1\n"
-        "a == e;// comment2\n"
-        "};"
-        "endfunction\n",
-        "function f;\n"
-        "  s = std::randomize() with {\n"
-        "    // comment1\n"
-        "    a == e;  // comment2\n"
-        "  };\n"
-        "endfunction\n",
-    },
-    {
-        // randomize-with call, with comment, and conditional
-        "function f;"
-        "s = std::randomize() with {\n"
-        "// comment\n"
-        "a == e;"
-        "if (x) {"
-        "a;"
-        "}"
-        "};"
-        "endfunction\n",
-        "function f;\n"
-        "  s = std::randomize() with {\n"
-        "    // comment\n"
-        "    a == e;\n"
-        "    if (x) {a;}\n"  // TODO(fangism): consider expanding
-        "  };\n"
-        "endfunction\n",
-    },
-
-    // module declaration test cases
-    {"   module       foo  ;     endmodule\n",
-     "module foo;\n"
-     "endmodule\n"},
-    {"   module       foo   (    )   ;     endmodule\n",
-     "module foo ();\n"
-     "endmodule\n"},
-    {"   module       foo   (  .x (  x) );     endmodule\n",
-     "module foo (\n"
-     "    .x(x)\n"
-     ");\n"
-     "endmodule\n"},
-    {"   module       foo   (  .x (  x)  \n,\n . y "
-     "  ( \ny) );     endmodule\n",
-     "module foo (\n"
-     "    .x(x),\n"
-     "    .y(y)\n"
-     ");\n"
-     "endmodule\n"},
-
-    // module instantiation test cases
-    {"  module foo   ; bar bq();endmodule\n",
-     "module foo;\n"
-     "  bar bq ();\n"  // single instance
-     "endmodule\n"},
-    {"  module foo   ; bar bq(), bq2(  );endmodule\n",
-     "module foo;\n"
-     "  bar bq (), bq2 ();\n"  // multiple instances, still fitting on one line
-     "endmodule\n"},
-    {"module foo; bar #(.N(N)) bq (.bus(bus));endmodule\n",
-     // instance parameter and port fits on line
-     "module foo;\n"
-     "  bar #(.N(N)) bq (.bus(bus));\n"
-     "endmodule\n"},
-    {"module foo; bar #(.N(N),.M(M)) bq ();endmodule\n",  // two named params
-     "module foo;\n"
-     "  bar #(\n"
-     "      .N(N),\n"
-     "      .M(M)\n"
-     "  ) bq ();\n"
-     "endmodule\n"},
-    {"module foo; bar #(//comment\n.N(N),.M(M)) bq ();endmodule\n",
-     "module foo;\n"
-     "  bar #(  //comment\n"  // EOL comment before first param
-     "      .N(N),\n"
-     "      .M(M)\n"
-     "  ) bq ();\n"
-     "endmodule\n"},
-    {"module foo; bar #(.N(N),//comment\n.M(M)) bq ();endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "      .N(N),  //comment\n"  // EOL comment after first param
-     "      .M(M)\n"
-     "  ) bq ();\n"
-     "endmodule\n"},
-    {"module foo; bar #(.N(N),.M(M)//comment\n) bq ();endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "      .N(N),\n"
-     "      .M(M)   //comment\n"  // EOL comment after last param
-     "  ) bq ();\n"
-     "endmodule\n"},
-    {"  module foo   ; bar bq(aa,bb,cc);endmodule\n",
-     "module foo;\n"
-     "  bar bq (\n"
-     "      aa,\n"
-     "      bb,\n"
-     "      cc\n"
-     "  );\n"  // multiple positional ports, one per line
-     "endmodule\n"},
-    {"  module foo   ; bar bq(aa,\n"
-     "`ifdef BB\n"
-     "bb,\n"
-     "`endif\n"
-     "cc);endmodule\n",
-     "module foo;\n"
-     "  bar bq (\n"
-     "      aa,\n"
-     "`ifdef BB\n"
-     "      bb,\n"  // keep same indentation as outside conditional
-     "`endif\n"
-     "      cc\n"
-     "  );\n"  // multiple positional ports, one per line
-     "endmodule\n"},
-    {"  module foo   ; bar bq(.aa,.bb);endmodule\n",
-     "module foo;\n"
-     "  bar bq (\n"
-     "      .aa,\n"
-     "      .bb\n"
-     "  );\n"  // multiple named ports, one per line
-     "endmodule\n"},
-    {"  module foo   ; bar bq(.aa(aa),.bb(bb));endmodule\n",
-     "module foo;\n"
-     "  bar bq (\n"
-     "      .aa(aa),\n"
-     "      .bb(bb)\n"
-     "  );\n"  // multiple named ports, one per line
-     "endmodule\n"},
-    {"  module foo   ; bar bq(.aa(aa),\n"
-     "`ifdef ZZ\n"
-     ".zz(  zz  ),\n"
-     "`else\n"
-     ".yy(  yy  ),\n"
-     "`endif\n"
-     ".bb(bb)\n"
-     ");endmodule\n",
-     "module foo;\n"
-     "  bar bq (\n"
-     "      .aa(aa),\n"
-     "`ifdef ZZ\n"
-     "      .zz(zz),\n"
-     "`else\n"
-     "      .yy(yy),\n"
-     "`endif\n"
-     "      .bb(bb)\n"
-     "  );\n"  // multiple named ports, one per line
-     "endmodule\n"},
-    {"  module foo   ; bar#(NNNNNNNN)"
-     "bq(.aa(aaaaaa),.bb(bbbbbb));endmodule\n",
-     "module foo;\n"
-     "  bar #(NNNNNNNN) bq (\n"
-     "      .aa(aaaaaa),\n"
-     "      .bb(bbbbbb)\n"
-     "  );\n"
-     "endmodule\n"},
-    {" module foo   ; barrrrrrr "
-     "bq(.aaaaaa(aaaaaa),.bbbbbb(bbbbbb));endmodule\n",
-     "module foo;\n"
-     "  barrrrrrr bq (\n"
-     "      .aaaaaa(aaaaaa),\n"
-     "      .bbbbbb(bbbbbb)\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo; bar #(.NNNNN(NNNNN)) bq (.bussss(bussss));endmodule\n",
-     // instance parameter and port does not fit on line
-     "module foo;\n"
-     "  bar #(\n"
-     "      .NNNNN(NNNNN)\n"
-     "  ) bq (\n"
-     "      .bussss(bussss)\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo; bar #(//\n.N(N)) bq (.bus(bus));endmodule\n",
-     "module foo;\n"
-     "  bar #(  //\n"  // would fit on one line, but forced to expand by //
-     "      .N(N)\n"
-     "  ) bq (\n"
-     "      .bus(bus)\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo; bar #(\n"
-     "`ifdef MM\n"
-     ".M(M)\n"
-     "`else\n"
-     ".N(N)\n"
-     "`endif\n"
-     ") bq (.bus(bus));endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "`ifdef MM\n"
-     "      .M(M)\n"
-     "`else\n"
-     "      .N(N)\n"
-     "`endif\n"
-     "  ) bq (\n"
-     "      .bus(bus)\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo; bar #(.N(N)//\n) bq (.bus(bus));endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"  // would fit on one line, but forced to expand by //
-     "      .N(N)  //\n"
-     "  ) bq (\n"
-     "      .bus(bus)\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo; bar #(.N(N)) bq (//\n.bus(bus));endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"  // would fit on one line, but forced to expand by //
-     "      .N(N)\n"
-     "  ) bq (  //\n"
-     "      .bus(bus)\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo; bar #(.N(N)) bq (.bus(bus)//\n);endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"  // would fit on one line, but forced to expand by //
-     "      .N(N)\n"
-     "  ) bq (\n"
-     "      .bus(bus)  //\n"
-     "  );\n"
-     "endmodule\n"},
-    {" module foo   ; bar "
-     "bq(.aaa(aaa),.bbb(bbb),.ccc(ccc),.ddd(ddd));endmodule\n",
-     "module foo;\n"
-     "  bar bq (\n"
-     "      .aaa(aaa),\n"  // ports don't fit on one line, so expanded
-     "      .bbb(bbb),\n"
-     "      .ccc(ccc),\n"
-     "      .ddd(ddd)\n"
-     "  );\n"
-     "endmodule\n"},
-    {" module foo   ; bar "
-     "bq(.aa(aa),.bb(bb),.cc(cc),.dd(dd));endmodule\n",
-     "module foo;\n"
-     "  bar bq (\n"
-     "      .aa(aa),\n"  // one named port per line
-     "      .bb(bb),\n"
-     "      .cc(cc),\n"
-     "      .dd(dd)\n"
-     "  );\n"
-     "endmodule\n"},
-    {" module foo   ; bar "
-     "bq(.aa(aa),//\n.bb(bb),.cc(cc),.dd(dd));endmodule\n",
-     "module foo;\n"
-     "  bar bq (\n"
-     "      .aa(aa),  //\n"  // forced to expand by //
-     "      .bb(bb),\n"
-     "      .cc(cc),\n"
-     "      .dd(dd)\n"
-     "  );\n"
-     "endmodule\n"},
-    {" module foo   ; bar "
-     "bq(.aa(aa),.bb(bb),.cc(cc),.dd(dd)//\n);endmodule\n",
-     "module foo;\n"
-     "  bar bq (\n"
-     "      .aa(aa),\n"
-     "      .bb(bb),\n"
-     "      .cc(cc),\n"
-     "      .dd(dd)   //\n"  // forced to expand by //
-     "  );\n"
-     "endmodule\n"},
-    {// gate instantiation test
-     "module m;"
-     "and\tx0(a, \t\tb,c);"
-     "or\nx1(a,  \n b,    d);"
-     "endmodule\n",
-     "module m;\n"
-     "  and x0 (a, b, c);\n"
-     "  or x1 (a, b, d);\n"
-     "endmodule\n"},
-    {// ifdef inside port actuals
-     "module m;  foo bar   (\n"
-     "`ifdef   BAZ\n"
-     "`endif\n"
-     ")  ;endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "`ifdef BAZ\n"
-     "`endif\n"
-     "  );\n"
-     "endmodule\n"},
-    {// ifdef inside port actuals after a port connection
-     "module m;  foo bar   ( .a (a) ,\n"
-     "`ifdef   BAZ\n"
-     "`endif\n"
-     ")  ;endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .a(a),\n"
-     "`ifdef BAZ\n"
-     "`endif\n"
-     "  );\n"
-     "endmodule\n"},
-    {// ifdef inside port actuals before a port connection
-     "module m;  foo bar   (\n"
-     "`ifdef   BAZ\n"
-     "`endif\n"
-     ". b(b) )  ;endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "`ifdef BAZ\n"
-     "`endif\n"
-     "      .b(b)\n"
-     "  );\n"
-     "endmodule\n"},
-    {// ifdef-conditional port connection
-     "module m;  foo bar   (\n"
-     "`ifdef   BAZ\n"
-     ". c (\tc) \n"
-     "`endif\n"
-     " )  ;endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "`ifdef BAZ\n"
-     "      .c(c)\n"
-     "`endif\n"
-     "  );\n"
-     "endmodule\n"},
-    {// ifndef-else-conditional port connection
-     "module m;  foo bar   (\n"
-     "`ifndef   BAZ\n"
-     ". c (\tc) \n"
-     "  `else\n"
-     " . d(d\t)\n"
-     "  `endif\n"
-     " )  ;endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "`ifndef BAZ\n"
-     "      .c(c)\n"
-     "`else\n"
-     "      .d(d)\n"
-     "`endif\n"
-     "  );\n"
-     "endmodule\n"},
-
-    {// comment following a delay in next line
-     "module t;\n"
-     "reg x;\n"
-     "initial begin\n"
-     "#20\n"
-     "//comment\n"
-     "x = 1;\n"
-     "x = 2;\n"
-     "end\n"
-     "endmodule\n",
-     "module t;\n"
-     "  reg x;\n"
-     "  initial begin\n"
-     "    #20\n"
-     "    //comment\n"
-     "    x = 1;\n"
-     "    x = 2;\n"
-     "  end\n"
-     "endmodule\n"},
-    {// comment following a delay in the same line
-     "module t;\n"
-     "reg x;\n"
-     "initial begin\n"
-     "#20 //comment\n"
-     "x = 1;\n"
-     "x = 2;\n"
-     "end\n"
-     "endmodule\n",
-     "module t;\n"
-     "  reg x;\n"
-     "  initial begin\n"
-     "    #20  //comment\n"
-     "    x = 1;\n"
-     "    x = 2;\n"
-     "  end\n"
-     "endmodule\n"},
-    // Macro calls inside [...]
-    {"module foo;\nlogic [`BAR(1)\n+2] foo;\nendmodule",
-     "module foo;\n"
-     "  logic [`BAR(1)\n"
-     "+2] foo;\n"
-     "endmodule\n"},
-    {"module foo;\nlogic [`BAR(1)+2] foo;\nendmodule",
-     "module foo;\n"
-     "  logic [`BAR(1)+2] foo;\n"
-     "endmodule\n"},
-    {"module foo ();\n  function bar();\n    "
-     "logic [12:34] data[`AAAAAAAAAAAAAAAAAAAAAAAA(1) : "
-     "`BBBBBBBBBBBBBBBBBBBBBBBB(2) + 3];\n  "
-     "endfunction\nendmodule",
-     "module foo ();\n"
-     "  function bar();\n"
-     "    logic [12:34] data[\n"
-     "    `AAAAAAAAAAAAAAAAAAAAAAAA(1) :\n"
-     "    `BBBBBBBBBBBBBBBBBBBBBBBB(2) + 3];\n"
-     "  endfunction\n"
-     "endmodule\n"},
-    {
-        // test that alternate top-syntax mode works
-        "// verilog_syntax: parse-as-module-body\n"
-        "`define           FOO\n",
-        "// verilog_syntax: parse-as-module-body\n"
-        "`define FOO\n",
-    },
-    {
-        // test alternate parsing mode in macro expansion
-        "class foo;\n"
-        "`MY_MACRO(\n"
-        " // verilog_syntax: parse-as-statements\n"
-        " // EOL comment\n"
-        " int count;\n"
-        " if(cfg.enable) begin\n"
-        " count = 1;\n"
-        " end,\n"
-        " utils_pkg::decrement())\n"
-        "endclass\n",
-        "class foo;\n"
-        "  `MY_MACRO(\n"
-        "      // verilog_syntax: parse-as-statements\n"
-        "      // EOL comment\n"
-        "      int count;\n"
-        "      if (cfg.enable) begin\n"
-        "        count = 1;\n"
-        "      end, utils_pkg::decrement())\n"
-        "endclass\n",
-    },
-
-    // tests top-level data declarations
-    {"a;",  // implicit type
-     "a;\n"},
-    {"a\tb;",  // explicit type
-     "a b;\n"},
-    {"a;b;",
-     "a;\n"
-     "b;\n"},
-    {"a ,b;",  // implicit type
-     "a, b;\n"},
-    /* TODO(b/149591599): implicit type data declarations in module body
-    {"module\tm ;a ;endmodule",
-     "module m;\n"
-     "  a;\n"
-     "endmodule\n"},
-    */
-    {"package\tp ;a ;endpackage",  // implicit type
-     "package p;\n"
-     "  a;\n"
-     "endpackage\n"},
-    {"package\tp ;a ,b ;endpackage",  // implicit type
-     "package p;\n"
-     "  a, b;\n"
-     "endpackage\n"},
-    {"package\tp ;a ;b ;endpackage",  // implicit type
-     "package p;\n"
-     "  a;\n"
-     "  b;\n"
-     "endpackage\n"},
-    /* TODO(b/149591627) : implicit type data declarations in class body
-    {"class\tc ;a ;endclass",
-     "class c;\n"
-     "  a;\n"
-     "endclass\n"},
-     */
-    {"function\tf ;a ;endfunction",  // implicit type
-     "function f;\n"
-     "  a;\n"
-     "endfunction\n"},
-    {"function\tf ;a   ;x ;endfunction",  // implicit type
-     "function f;\n"
-     "  a;\n"
-     "  x;\n"
-     "endfunction\n"},
-    /* TODO(b/149592527): multi-variable data declaration as block_item_decl
-     // same inside tasks
-    {"function\tf ;a  \t,x ;endfunction",  // implicit type
-     "function f;\n"
-     "  a, x;\n"
-     "endfunction\n"},
-     */
-    {"task\tt ;a ;endtask",  // implicit type
-     "task t;\n"
-     "  a;\n"
-     "endtask\n"},
-    {"task\tt ;a   ;x ;endtask",  // implicit type
-     "task t;\n"
-     "  a;\n"
-     "  x;\n"
-     "endtask\n"},
-
-    {// tests bind declaration
-     "bind   foo   bar baz  ( . clk ( clk  ) ) ;",
-     "bind foo bar baz (.clk(clk));\n"},
-    {// tests bind declaration, with type params
-     "bind   foo   bar# ( . W ( W ) ) baz  ( . clk ( clk  ) ) ;",
-     "bind foo bar #(.W(W)) baz (.clk(clk));\n"},
-    {// tests bind declarations
-     "bind   foo   bar baz  ( ) ;"
-     "bind goo  car  caz (   );",
-     "bind foo bar baz ();\n"
-     "bind goo car caz ();\n"},
-
-    {"bind blah foo #( .MaxCount(MaxCount), .MaxDelta(MaxDelta)) bar ("
-     "    .clk(clk), .rst(rst), .value(value) );",
-     "bind blah foo #(\n"
-     "    .MaxCount(MaxCount),\n"
-     "    .MaxDelta(MaxDelta)\n"
-     ") bar (\n"
-     "    .clk  (clk),\n"
-     "    .rst  (rst),\n"
-     "    .value(value)\n"
-     ");\n"},
-    {"bind foo bar baz(\\\n"
-     "`undef d\\\n"
-     "`undef d);",
-     "bind foo bar baz (\\\n"
-     "    `undef d\\\n"
-     "    `undef d\n"
-     ");\n"},
-    {
-        "bind expaaaaaaaaaaand_meeee looooooooong_name# ("
-        ".W(W_CONST), .H(H_CONST), .D(D_CONST)  )"
-        "instaaance_name (.in(iiiiiiiin), .out(ooooooout), .clk(ccccccclk));",
-        "bind expaaaaaaaaaaand_meeee\n"
-        "    looooooooong_name #(\n"
-        "    .W(W_CONST),\n"
-        "    .H(H_CONST),\n"
-        "    .D(D_CONST)\n"
-        ") instaaance_name (\n"
-        "    .in (iiiiiiiin),\n"
-        "    .out(ooooooout),\n"
-        "    .clk(ccccccclk)\n"
-        ");\n",
-    },
-
-    {
-        "bind expand_inst name# ("
-        ".W(W_CONST), .H(H_CONST), .D(D_CONST)  )"
-        "instaaance_name (.in(iiiiiiiin), .out(ooooooout), .clk(ccccccclk));",
-        "bind expand_inst name #(\n"
-        "    .W(W_CONST),\n"
-        "    .H(H_CONST),\n"
-        "    .D(D_CONST)\n"
-        ") instaaance_name (\n"
-        "    .in (iiiiiiiin),\n"
-        "    .out(ooooooout),\n"
-        "    .clk(ccccccclk)\n"
-        ");\n",
-    },
-
-    {
-        // tests import declaration
-        "import  foo_pkg :: bar ;",
-        "import foo_pkg::bar;\n",
-    },
-    {
-        // tests import declaration with wildcard
-        "import  foo_pkg :: * ;",
-        "import foo_pkg::*;\n",
-    },
-    {
-        // tests import declarations
-        "import  foo_pkg :: *\t;"
-        "import  goo_pkg\n:: thing ;",
-        "import foo_pkg::*;\n"
-        "import goo_pkg::thing;\n",
-    },
-    // preserve spaces inside [] dimensions, but limit spaces around ':' to one
-    // and adjust everything else
-    {"foo[W-1:0]a[0:K-1];",  // data declaration
-     "foo [W-1:0] a[0:K-1];\n"},
-    {"foo[W-1 : 0]a[0 : K-1];", "foo [W-1 : 0] a[0 : K-1];\n"},
-    {"foo[W  -  1 : 0 ]a [ 0  :  K  -  1] ;",
-     "foo [W  -  1 : 0] a[0 : K  -  1];\n"},
-    // remove spaces between [...] [...] in multi-dimension arrays
-    {"foo[K] [W]a;",  //
-     "foo [K][W] a;\n"},
-    {"foo b [K] [W] ;",  //
-     "foo b[K][W];\n"},
-    {"logic[K:1] [W:1]a;",  //
-     "logic [K:1][W:1] a;\n"},
-    {"logic b [K:1] [W:1] ;",  //
-     "logic b[K:1][W:1];\n"},
-    // spaces in bit slicing
-    {
-        // preserve 0 spaces
-        "always_ff @(posedge clk) begin "
-        "dummy  <=\tfoo  [  7:2  ] ; "
-        "end",
-        "always_ff @(posedge clk) begin\n"
-        "  dummy <= foo[7:2];\n"
-        "end\n",
-    },
-    {
-        // preserve 1 space
-        "always_ff @(posedge clk) begin "
-        "dummy  <=\tfoo  [  7 : 2  ] ; "
-        "end",
-        "always_ff @(posedge clk) begin\n"
-        "  dummy <= foo[7 : 2];\n"
-        "end\n",
-    },
-    {
-        // limit multiple spaces to 1
-        "always_ff @(posedge clk) begin "
-        "dummy  <=\tfoo  [  7  :  2  ] ; "
-        "end",
-        "always_ff @(posedge clk) begin\n"
-        "  dummy <= foo[7 : 2];\n"
-        "end\n",
-    },
-    {
-        "always_ff @(posedge clk) begin "
-        "dummy  <=\tfoo  [  7  : 2  ] ; "
-        "end",
-        "always_ff @(posedge clk) begin\n"
-        "  dummy <= foo[7 : 2];\n"
-        "end\n",
-    },
-    {
-        // keep value on the left when symmetrizing
-        "always_ff @(posedge clk) begin "
-        "dummy  <=\tfoo  [  7: 2  ] ; "
-        "end",
-        "always_ff @(posedge clk) begin\n"
-        "  dummy <= foo[7:2];\n"
-        "end\n",
-    },
-    {
-        "always_ff @(posedge clk) begin "
-        "dummy  <=\tfoo  [  7:  2  ] ; "
-        "end",
-        "always_ff @(posedge clk) begin\n"
-        "  dummy <= foo[7:2];\n"
-        "end\n",
-    },
-    {
-        "always_ff @(posedge clk) begin "
-        "dummy  <=\tfoo  [  7 :2  ] ; "
-        "end",
-        "always_ff @(posedge clk) begin\n"
-        "  dummy <= foo[7 : 2];\n"
-        "end\n",
-    },
-    {
-        "always_ff @(posedge clk) begin "
-        "dummy  <=\tfoo  [  7 :  2  ] ; "
-        "end",
-        "always_ff @(posedge clk) begin\n"
-        "  dummy <= foo[7 : 2];\n"
-        "end\n",
-    },
-    {
-        // use value on the left, but limit to 1 space
-        "always_ff @(posedge clk) begin "
-        "dummy  <=\tfoo  [  7  :2  ] ; "
-        "end",
-        "always_ff @(posedge clk) begin\n"
-        "  dummy <= foo[7 : 2];\n"
-        "end\n",
-    },
-
-    // task test cases
-    {"task t ;endtask:t",  //
-     "task t;\n"
-     "endtask : t\n"},
-    {"task t ;#   10 ;# 5ns ; # 0.1 ; # 1step ;endtask",
-     "task t;\n"
-     "  #10;\n"  // no space in delay expression
-     "  #5ns;\n"
-     "  #0.1;\n"
-     "  #1step;\n"
-     "endtask\n"},
-    {"task t\n;a<=b ;c<=d ;endtask\n",
-     "task t;\n"
-     "  a <= b;\n"
-     "  c <= d;\n"
-     "endtask\n"},
-    {"class c;   virtual protected task\tt  ( foo bar);"
-     "a.a<=b.b;\t\tc.c\n<=   d.d; endtask   endclass",
-     "class c;\n"
-     "  virtual protected task t(foo bar);\n"
-     "    a.a <= b.b;\n"
-     "    c.c <= d.d;\n"
-     "  endtask\n"
-     "endclass\n"},
-    {"task t;\n// statement comment\nendtask\n",
-     "task t;\n"
-     "  // statement comment\n"  // indented
-     "endtask\n"},
-    {"task t( );\n// statement comment\nendtask\n",
-     "task t();\n"
-     "  // statement comment\n"  // indented
-     "endtask\n"},
-    {"task t( input x  );\n"
-     "// statement comment\n"
-     "s();\n"
-     "// statement comment\n"
-     "endtask\n",
-     "task t(input x);\n"
-     "  // statement comment\n"  // indented
-     "  s();\n"
-     "  // statement comment\n"  // indented
-     "endtask\n"},
-    {"task fj;fork join fork join\tendtask",
-     "task fj;\n"
-     "  fork\n"
-     "  join\n"
-     "  fork\n"
-     "  join\n"
-     "endtask\n"},
-    {"task fj;fork join_any fork join_any\tendtask",
-     "task fj;\n"
-     "  fork\n"
-     "  join_any\n"
-     "  fork\n"
-     "  join_any\n"
-     "endtask\n"},
-    {"task fj;fork join_none fork join_none\tendtask",
-     "task fj;\n"
-     "  fork\n"
-     "  join_none\n"
-     "  fork\n"
-     "  join_none\n"
-     "endtask\n"},
-    {"task fj;fork\n"
-     "//c1\njoin\n"
-     "//c2\n"
-     "fork  \n"
-     "//c3\n"
-     "join\tendtask",
-     "task fj;\n"
-     "  fork\n"
-     "    //c1\n"
-     "  join\n"
-     "  //c2\n"
-     "  fork\n"
-     "    //c3\n"
-     "  join\n"
-     "endtask\n"},
-    {"task fj;\n"
-     "fork "
-     "begin "
-     "end "
-     "foo();"
-     "begin "
-     "end "
-     "join_any endtask",
-     "task fj;\n"
-     "  fork\n"
-     "    begin\n"
-     "    end\n"
-     "    foo();\n"
-     "    begin\n"
-     "    end\n"
-     "  join_any\n"
-     "endtask\n"},
-    {
-        // call and assertion statements
-        "task  t ;Fire() ;assert ( x);assert(y );endtask",
-        "task t;\n"
-        "  Fire();\n"
-        "  assert (x);\n"
-        "  assert (y);\n"
-        "endtask\n",
-    },
-    {
-        // assertion statements with body clause
-        "task  t ;Fire() ;assert ( x) fee ( );assert(y ) foo ( ) ;endtask",
-        "task t;\n"
-        "  Fire();\n"
-        "  assert (x) fee();\n"
-        "  assert (y) foo();\n"
-        "endtask\n",
-    },
-    {
-        // assertion statements with else clause
-        "task  t ;Fire() ;assert ( x) else  fee ( );"
-        "assert(y ) else  foo ( ) ;endtask",
-        "task t;\n"
-        "  Fire();\n"
-        "  assert (x)\n"
-        "  else fee();\n"
-        "  assert (y)\n"
-        "  else foo();\n"
-        "endtask\n",
-    },
-    {
-        // assertion statements with else clause
-        "task  t ;Fire() ;assert ( x) fa(); else  fee ( );"
-        "assert(y ) fi(); else  foo ( ) ;endtask",
-        "task t;\n"
-        "  Fire();\n"
-        "  assert (x) fa();\n"
-        "  else fee();\n"
-        "  assert (y) fi();\n"
-        "  else foo();\n"
-        "endtask\n",
-    },
-    {
-        // assume statements
-        "task  t ;Fire() ;assume ( x);assume(y );endtask",
-        "task t;\n"
-        "  Fire();\n"
-        "  assume (x);\n"
-        "  assume (y);\n"
-        "endtask\n",
-    },
-    {
-        // cover statements
-        "task  t ;Fire() ;cover ( x);cover(y );endtask",
-        "task t;\n"
-        "  Fire();\n"
-        "  cover (x);\n"
-        "  cover (y);\n"
-        "endtask\n",
-    },
-    {
-        // cover statements, with action
-        "task  t ;Fire() ;cover ( x)g( );cover(y ) h();endtask",
-        "task t;\n"
-        "  Fire();\n"
-        "  cover (x) g();\n"
-        "  cover (y) h();\n"
-        "endtask\n",
-    },
-    {
-        // cover statements, with action block
-        "task  t ;Fire() ;cover ( x) begin g( ); end "
-        "cover(y ) begin h(); end endtask",
-        "task t;\n"
-        "  Fire();\n"
-        "  cover (x) begin\n"
-        "    g();\n"
-        "  end\n"
-        "  cover (y) begin\n"
-        "    h();\n"
-        "  end\n"
-        "endtask\n",
-    },
-    {// shuffle calls
-     "task t; foo. shuffle  ( );bar .shuffle( ); endtask",
-     "task t;\n"
-     "  foo.shuffle();\n"
-     "  bar.shuffle();\n"
-     "endtask\n"},
-    {// wait statements (null)
-     "task t; wait  (a==b);wait(c<d); endtask",
-     "task t;\n"
-     "  wait (a == b);\n"
-     "  wait (c < d);\n"
-     "endtask\n"},
-    {// wait statements, single action statement
-     "task t; wait  (a==b) p();wait(c<d) q(); endtask",
-     "task t;\n"
-     "  wait (a == b) p();\n"
-     "  wait (c < d) q();\n"
-     "endtask\n"},
-    {// wait statements, block action statement
-     "task t; wait  (a==b) begin p(); end "
-     "wait(c<d) begin q(); end endtask",
-     "task t;\n"
-     "  wait (a == b) begin\n"
-     "    p();\n"
-     "  end\n"
-     "  wait (c < d) begin\n"
-     "    q();\n"
-     "  end\n"
-     "endtask\n"},
-    {// wait fork statements
-     "task t ; wait\tfork;wait   fork ;endtask",
-     "task t;\n"
-     "  wait fork;\n"
-     "  wait fork;\n"
-     "endtask\n"},
-    {// labeled single statements (prefix-style)
-     "task t;l1:x<=y ;endtask",
-     "task t;\n"
-     "  l1 : x <= y;\n"
-     "endtask\n"},
-    {// labeled block statements (prefix-style)
-     "task t;l1:begin end:l1 endtask",
-     "task t;\n"
-     "  l1 : begin\n"
-     "  end : l1\n"
-     "endtask\n"},
-    {// labeled seq block statements
-     "task t;begin:l1 end:l1 endtask",
-     "task t;\n"
-     "  begin : l1\n"
-     "  end : l1\n"
-     "endtask\n"},
-    {// labeled par block statements
-     "task t;fork:l1 join:l1 endtask",
-     "task t;\n"
-     "  fork : l1\n"
-     "  join : l1\n"
-     "endtask\n"},
-    {// task with disable statements
-     "task  t ;fork\tjoin\tdisable\tfork;endtask",
-     "task t;\n"
-     "  fork\n"
-     "  join\n"
-     "  disable fork;\n"
-     "endtask\n"},
-    {"task  t ;fork\tjoin_any\tdisable\tfork  ;endtask",
-     "task t;\n"
-     "  fork\n"
-     "  join_any\n"
-     "  disable fork;\n"
-     "endtask\n"},
-    {"task  t ;disable\tbean_counter  ;endtask",
-     "task t;\n"
-     "  disable bean_counter;\n"
-     "endtask\n"},
-    {
-        // task with if-statement
-        "task t;"
-        "if (r == t)"
-        "a.b(c);"
-        "endtask",
-        "task t;\n"
-        "  if (r == t) a.b(c);\n"
-        "endtask\n",
-    },
-    {
-        // task with system call inside if header
-        "task t;"
-        "if (!$cast(ssssssssssssssss,vvvvvvvvvv,gggggggg))begin end endtask:t",
-        "task t;\n"
-        "  if (!$cast(\n"
-        "          ssssssssssssssss,\n"
-        "          vvvvvvvvvv,\n"
-        "          gggggggg\n"
-        "      )) begin\n"
-        "  end\n"
-        "endtask : t\n",
-    },
-    {
-        // task with nested subtask call and arguments passed by name
-        "task t;"
-        "if (!$cast(ssssssssssssssss, vvvvvvvvvv.gggggggg("
-        ".ppppppp(ppppppp),"
-        ".yyyyy(\"xxxxxxxxxxxxx\")"
-        "))) begin "
-        "end "
-        "endtask : t",
-        "task t;\n"
-        "  if (!$cast(\n"
-        "          ssssssssssssssss,\n"
-        "          vvvvvvvvvv.gggggggg(\n"
-        "              .ppppppp(ppppppp),\n"
-        "              .yyyyy(\"xxxxxxxxxxxxx\")\n"
-        "          )\n"
-        "      )) begin\n"
-        "  end\n"
-        "endtask : t\n",
-    },
-
-    {
-        // assert property statements
-        "task  t ;assert  property( x);assert\tproperty(y );endtask",
-        "task t;\n"
-        "  assert property (x);\n"
-        "  assert property (y);\n"
-        "endtask\n",
-    },
-    {
-        // assert property statements, with action
-        "task  t ;assert  property( x) j();assert\tproperty(y )k( );endtask",
-        "task t;\n"
-        "  assert property (x) j();\n"
-        "  assert property (y) k();\n"
-        "endtask\n",
-    },
-    {
-        // assert property statements, with action block
-        "task  t ;assert  property( x) begin j();end "
-        " assert\tproperty(y )begin\tk( );  end endtask",
-        "task t;\n"
-        "  assert property (x) begin\n"
-        "    j();\n"
-        "  end\n"
-        "  assert property (y) begin\n"
-        "    k();\n"
-        "  end\n"
-        "endtask\n",
-    },
-    {
-        // assert property statements, else with null
-        "task  t ;assert  property( x) else;assert\tproperty(y )else;endtask",
-        "task t;\n"
-        "  assert property (x)\n"
-        "  else;\n"
-        "  assert property (y)\n"
-        "  else;\n"
-        "endtask\n",
-    },
-    {
-        // assert property statements, else with actions
-        "task  t ;assert  property( x) f(); else p(); "
-        "\tassert\tproperty(y ) g();else  q( );endtask",
-        "task t;\n"
-        "  assert property (x) f();\n"
-        "  else p();\n"
-        "  assert property (y) g();\n"
-        "  else q();\n"
-        "endtask\n",
-    },
-    {
-        // assert property statement, with action block, else statement
-        "task  t ;assert  property( x) begin j();end  else\tk( );  endtask",
-        "task t;\n"
-        "  assert property (x) begin\n"
-        "    j();\n"
-        "  end else k();\n"
-        "endtask\n",
-    },
-    {
-        // assert property statement, with action statement, else block
-        "task  t ;assert  property( x) j();  else  begin\tk( );end  endtask",
-        "task t;\n"
-        "  assert property (x) j();\n"
-        "  else begin\n"
-        "    k();\n"
-        "  end\n"
-        "endtask\n",
-    },
-    {
-        // assert property statement, with action block, else block
-        "task  t ;assert  property( x)begin j();end  "
-        "else  begin\tk( );end  endtask",
-        "task t;\n"
-        "  assert property (x) begin\n"
-        "    j();\n"
-        "  end else begin\n"
-        "    k();\n"
-        "  end\n"
-        "endtask\n",
-    },
-
-    {
-        // assume property statements
-        "task  t ;assume  property( x);assume\tproperty(y );endtask",
-        "task t;\n"
-        "  assume property (x);\n"
-        "  assume property (y);\n"
-        "endtask\n",
-    },
-    {
-        // assume property statements, with action
-        "task  t ;assume  property( x) j();assume\tproperty(y )k( );endtask",
-        "task t;\n"
-        "  assume property (x) j();\n"
-        "  assume property (y) k();\n"
-        "endtask\n",
-    },
-    {
-        // assume property statements, with action block
-        "task  t ;assume  property( x) begin j();end "
-        " assume\tproperty(y )begin\tk( );  end endtask",
-        "task t;\n"
-        "  assume property (x) begin\n"
-        "    j();\n"
-        "  end\n"
-        "  assume property (y) begin\n"
-        "    k();\n"
-        "  end\n"
-        "endtask\n",
-    },
-    {
-        // assume property statements, else with null
-        "task  t ;assume  property( x) else;assume\tproperty(y )else;endtask",
-        "task t;\n"
-        "  assume property (x)\n"
-        "  else;\n"
-        "  assume property (y)\n"
-        "  else;\n"
-        "endtask\n",
-    },
-    {
-        // assume property statements, else with actions
-        "task  t ;assume  property( x) f(); else p(); "
-        "\tassume\tproperty(y ) g();else  q( );endtask",
-        "task t;\n"
-        "  assume property (x) f();\n"
-        "  else p();\n"
-        "  assume property (y) g();\n"
-        "  else q();\n"
-        "endtask\n",
-    },
-    {
-        // assume property statement, with action block, else statement
-        "task  t ;assume  property( x) begin j();end  else\tk( );  endtask",
-        "task t;\n"
-        "  assume property (x) begin\n"
-        "    j();\n"
-        "  end else k();\n"
-        "endtask\n",
-    },
-    {
-        // assume property statement, with action statement, else block
-        "task  t ;assume  property( x) j();  else  begin\tk( );end  endtask",
-        "task t;\n"
-        "  assume property (x) j();\n"
-        "  else begin\n"
-        "    k();\n"
-        "  end\n"
-        "endtask\n",
-    },
-    {
-        // assume property statement, with action block, else block
-        "task  t ;assume  property( x)begin j();end  "
-        "else  begin\tk( );end  endtask",
-        "task t;\n"
-        "  assume property (x) begin\n"
-        "    j();\n"
-        "  end else begin\n"
-        "    k();\n"
-        "  end\n"
-        "endtask\n",
-    },
-
-    {
-        // expect property statements
-        "task  t ;expect  ( x);expect\t(y );endtask",
-        "task t;\n"
-        "  expect (x);\n"
-        "  expect (y);\n"
-        "endtask\n",
-    },
-    {
-        // expect property statements, with action
-        "task  t ;expect  ( x) j();expect\t(y )k( );endtask",
-        "task t;\n"
-        "  expect (x) j();\n"
-        "  expect (y) k();\n"
-        "endtask\n",
-    },
-    {
-        // expect property statements, with action block
-        "task  t ;expect  ( x) begin j();end "
-        " expect\t(y )begin\tk( );  end endtask",
-        "task t;\n"
-        "  expect (x) begin\n"
-        "    j();\n"
-        "  end\n"
-        "  expect (y) begin\n"
-        "    k();\n"
-        "  end\n"
-        "endtask\n",
-    },
-    {
-        // expect property statements, else with null
-        "task  t ;expect  ( x) else;expect\t(y )else;endtask",
-        "task t;\n"
-        "  expect (x)\n"
-        "  else;\n"
-        "  expect (y)\n"
-        "  else;\n"
-        "endtask\n",
-    },
-    {
-        // expect property statements, else with actions
-        "task  t ;expect  ( x) f(); else p(); "
-        "\texpect\t(y ) g();else  q( );endtask",
-        "task t;\n"
-        "  expect (x) f();\n"
-        "  else p();\n"
-        "  expect (y) g();\n"
-        "  else q();\n"
-        "endtask\n",
-    },
-    {
-        // expect property statement, with action block, else statement
-        "task  t ;expect  ( x) begin j();end  else\tk( );  endtask",
-        "task t;\n"
-        "  expect (x) begin\n"
-        "    j();\n"
-        "  end else k();\n"
-        "endtask\n",
-    },
-    {
-        // expect property statement, with action statement, else block
-        "task  t ;expect  ( x) j();  else  begin\tk( );end  endtask",
-        "task t;\n"
-        "  expect (x) j();\n"
-        "  else begin\n"
-        "    k();\n"
-        "  end\n"
-        "endtask\n",
-    },
-    {
-        // expect property statement, with action block, else block
-        "task  t ;expect  ( x)begin j();end  "
-        "else  begin\tk( );end  endtask",
-        "task t;\n"
-        "  expect (x) begin\n"
-        "    j();\n"
-        "  end else begin\n"
-        "    k();\n"
-        "  end\n"
-        "endtask\n",
-    },
-
-    {
-        // cover property statements
-        "task  t ;cover  property( x);cover\tproperty(y );endtask",
-        "task t;\n"
-        "  cover property (x);\n"
-        "  cover property (y);\n"
-        "endtask\n",
-    },
-    {
-        // cover property statements, with action
-        "task  t ;cover  property( x) j();cover\tproperty(y )k( );endtask",
-        "task t;\n"
-        "  cover property (x) j();\n"
-        "  cover property (y) k();\n"
-        "endtask\n",
-    },
-    {
-        // cover property statements, with action block
-        "task  t ;cover  property( x) begin j();end "
-        " cover\tproperty(y )begin\tk( );  end endtask",
-        "task t;\n"
-        "  cover property (x) begin\n"
-        "    j();\n"
-        "  end\n"
-        "  cover property (y) begin\n"
-        "    k();\n"
-        "  end\n"
-        "endtask\n",
-    },
-
-    {
-        // cover sequence statements
-        "task  t ;cover  sequence( x);cover\tsequence(y );endtask",
-        "task t;\n"
-        "  cover sequence (x);\n"
-        "  cover sequence (y);\n"
-        "endtask\n",
-    },
-    {
-        // cover sequence statements, with action
-        "task  t ;cover  sequence( x) j();cover\tsequence(y )k( );endtask",
-        "task t;\n"
-        "  cover sequence (x) j();\n"
-        "  cover sequence (y) k();\n"
-        "endtask\n",
-    },
-    {
-        // cover sequence statements, with action block
-        "task  t ;cover  sequence( x) begin j();end "
-        " cover\tsequence(y )begin\tk( );  end endtask",
-        "task t;\n"
-        "  cover sequence (x) begin\n"
-        "    j();\n"
-        "  end\n"
-        "  cover sequence (y) begin\n"
-        "    k();\n"
-        "  end\n"
-        "endtask\n",
-    },
-
-    {// module with disable statements
-     "module m;always begin :block disable m.block; end endmodule",
-     "module m;\n"
-     "  always begin : block\n"
-     "    disable m.block;\n"
-     "  end\n"
-     "endmodule\n"},
-    {"module m;always begin disable m.block; end endmodule",
-     "module m;\n"
-     "  always begin\n"
-     "    disable m.block;\n"
-     "  end\n"
-     "endmodule\n"},
-
-    // property test cases
-    {"module mp ;property p1 ; a|->b;endproperty endmodule",
-     "module mp;\n"
-     "  property p1;\n"
-     "    a |-> b;\n"
-     "  endproperty\n"
-     "endmodule\n"},
-    {"module mp ;property p1 ; a|->b;endproperty:p1 endmodule",
-     "module mp;\n"
-     "  property p1;\n"
-     "    a |-> b;\n"
-     "  endproperty : p1\n"  // with end label
-     "endmodule\n"},
-    {"module mp ;property p1 ; a|->## 1  b;endproperty endmodule",
-     "module mp;\n"
-     "  property p1;\n"
-     "    a |-> ##1 b;\n"  // with delay
-     "  endproperty\n"
-     "endmodule\n"},
-    {"module mp ;property p1 ; a|->## [0: 1]  b;endproperty endmodule",
-     "module mp;\n"
-     "  property p1;\n"
-     "    a |-> ##[0:1] b;\n"  // prefer no spaces with delay range
-     "  endproperty\n"
-     "endmodule\n"},
-    {"module mp ;property p1 ; a|->## [0  : 1]  b;endproperty endmodule",
-     "module mp;\n"
-     "  property p1;\n"
-     "    a |-> ##[0 : 1] b;\n"  // limit to one space, symmetrize
-     "  endproperty\n"
-     "endmodule\n"},
-    {"module mp ;property p1 ; a## 1  b;endproperty endmodule",
-     "module mp;\n"
-     "  property p1;\n"
-     "    a ##1 b;\n"
-     "  endproperty\n"
-     "endmodule\n"},
-    {"module mp ;property p1 ; (a^c)## 1  b;endproperty endmodule",
-     "module mp;\n"
-     "  property p1;\n"
-     "    (a ^ c) ##1 b;\n"
-     "  endproperty\n"
-     "endmodule\n"},
-
-    // covergroup test cases
-    {// Minimal case
-     "covergroup c; endgroup\n",
-     "covergroup c;\n"
-     "endgroup\n"},
-    {// Minimal useful case
-     "covergroup c @ (posedge clk); coverpoint a; endgroup\n",
-     "covergroup c @(posedge clk);\n"
-     "  coverpoint a;\n"
-     "endgroup\n"},
-    {// Multiple coverpoints
-     "covergroup foo @(posedge clk); coverpoint a; coverpoint b; "
-     "coverpoint c; coverpoint d; endgroup\n",
-     "covergroup foo @(posedge clk);\n"
-     "  coverpoint a;\n"
-     "  coverpoint b;\n"
-     "  coverpoint c;\n"
-     "  coverpoint d;\n"
-     "endgroup\n"},
-    {// Multiple bins
-     "covergroup memory @ (posedge ce); address  :coverpoint addr {"
-     "bins low={0,127}; bins high={128,255};} endgroup\n",
-     "covergroup memory @(posedge ce);\n"
-     "  address: coverpoint addr {\n"
-     "    bins low = {0, 127};\n"
-     "    bins high = {128, 255};\n"
-     "  }\n"
-     "endgroup\n"},
-    {// Custom sample() function
-     "covergroup c with function sample(bit i); endgroup\n",
-     "covergroup c with function sample (\n"
-     "    bit i\n"  // test cases are wrapped at 40
-     ");\n"
-     "endgroup\n"},
-
-    // comment-controlled formatter disabling
-    {"// verilog_format: off\n"  // disables whole file
-     "  `include  \t\t  \"path/to/file.vh\"\n",
-     "// verilog_format: off\n"
-     "  `include  \t\t  \"path/to/file.vh\"\n"},  // keeps bad spacing
-    {"/* verilog_format: off */\n"                // disables whole file
-     "  `include  \t\t  \"path/to/file.svh\"  \n",
-     "/* verilog_format: off */\n"
-     "  `include  \t\t  \"path/to/file.svh\"  \n"},  // keeps bad spacing
-    {"// verilog_format: on\n"  // already enabled, no effect
-     "  `include  \t  \"path/to/file.svh\"  \t\n",
-     "// verilog_format: on\n"
-     "`include \"path/to/file.svh\"\n"},
-    {"// verilog_format: off\n"
-     "// verilog_format: on\n"  // re-enable right away
-     "  `include  \t\t  \"path/to/file.svh\"  \n",
-     "// verilog_format: off\n"
-     "// verilog_format: on\n"
-     "`include \"path/to/file.svh\"\n"},
-    {"/* aaa *//* bbb */\n"                         // not formatting controls
-     "  `include  \t\t  \"path/to/file.svh\"  \n",  // should format
-     "/* aaa */  /* bbb */\n"  // currently inserts 2 spaces
-     "`include \"path/to/file.svh\"\n"},
-    {"/* verilog_format: off *//* verilog_format: on */\n"  // re-enable
-     "  `include  \t\t  \"path/to/file.svh\"  \n",
-     // Note that this case normally wouldn't fit in 40 columns,
-     // but disabling formatting lets it overflow.
-     "/* verilog_format: off *//* verilog_format: on */\n"
-     "`include \"path/to/file.svh\"\n"},
-    {"// verilog_format: off\n"
-     "  `include  \t\t  \"path/to/fileA.svh\"  // verilog_format: on\n"
-     "  `include  \t\t  \"path/to/fileB.svh\"  \n",
-     // re-enable formatting with comment trailing other tokens
-     "// verilog_format: off\n"
-     "  `include  \t\t  \"path/to/fileA.svh\"  // verilog_format: on\n"
-     "`include \"path/to/fileB.svh\"\n"},
-    {"  `include  \t\t  \"path/to/file1.vh\" \n"  // format this
-     "// verilog_format: off\n"                   // start disabling
-     "  `include  \t\t  \"path/to/file2.vh\" \n"
-     "\t\t\n"
-     "  `include  \t\t  \"path/to/file3.vh\" \n"
-     "// verilog_format: on\n"                     // stop disabling
-     "  `include  \t\t  \"path/to/file4.vh\" \n",  // format this
-     "`include \"path/to/file1.vh\"\n"
-     "// verilog_format: off\n"  // start disabling
-     "  `include  \t\t  \"path/to/file2.vh\" \n"
-     "\t\t\n"
-     "  `include  \t\t  \"path/to/file3.vh\" \n"
-     "// verilog_format: on\n"  // stop disabling
-     "`include \"path/to/file4.vh\"\n"},
-    {// disabling formatting on a module (to end of file)
-     "// verilog_format: off\n"
-     "module m;endmodule\n",
-     "// verilog_format: off\n"
-     "module m;endmodule\n"},
-    {// disabling formatting on a module (to end of file)
-     "// verilog_format: off\n"
-     "module m;\n"
-     "unindented instantiation;\n"
-     "endmodule\n",
-     "// verilog_format: off\n"
-     "module m;\n"
-     "unindented instantiation;\n"
-     "endmodule\n"},
-    {// disabling formatting inside a port declaration list disables alignment,
-     // but falls back to standard compaction.
-     "module align_off(\n"
-     "input w  ,\n"
-     "    // verilog_format: off\n"
-     "input wire  [y:z] wwww,\n"
-     "    // verilog_format: on\n"
-     "output  reg    xx\n"
-     ");\n"
-     "endmodule",
-     "module align_off (\n"
-     "    input w  ,\n"  // preserved because group is partially disabled
-     "    // verilog_format: off\n"
-     "input wire  [y:z] wwww,\n"  // not compacted
-     "    // verilog_format: on\n"
-     "    output  reg    xx\n"  // preserved because group is partially disabled
-     ");\n"
-     "endmodule\n"},
-
-    {// multiple tokens with EOL comment
-     "module please;  // don't break before the comment\n"
-     "endmodule\n",
-     "module please\n"
-     "    ;  // don't break before the comment\n"
-     "endmodule\n"},
-    {// one token with EOL comment
-     "module please;\n"
-     "endmodule  // don't break before the comment\n",
-     "module please;\n"
-     "endmodule  // don't break before the comment\n"},
-    {
-        // line with only an EOL comment
-        "module wild;\n"
-        "// a really long comment on its own line to be left alone\n"
-        "endmodule",
-        "module wild;\n"
-        "  // a really long comment on its own line to be left alone\n"
-        "endmodule\n",
-    },
-    {
-        // primitive declaration
-        "primitive primitive1(o, s, r);output o;reg o;input s;input r;table 1 "
-        "? :"
-        " ? : 0; ? 1    : 0   : -; endtable endprimitive",
-        "primitive primitive1(o, s, r);\n"
-        "  output o;\n"
-        "  reg o;\n"
-        "  input s;\n"
-        "  input r;\n"
-        "  table\n"
-        "    1 ? : ? : 0;\n"
-        "    ? 1 : 0 : -;\n"
-        "  endtable\n"
-        "endprimitive\n",
-    },
-    {
-        // one-input combinatorial UDP
-        "primitive primitive1 ( o,i ) ;output o;input i;"
-        " table 1  :   0 ;   0  :  1 ; endtable endprimitive",
-        "primitive primitive1(o, i);\n"
-        "  output o;\n"
-        "  input i;\n"
-        "  table\n"
-        "    1 : 0;\n"
-        "    0 : 1;\n"
-        "  endtable\n"
-        "endprimitive\n",
-    },
-    {
-        // two-input combinatorial UDP
-        "primitive primitive2(o, s, r);output o;input s;input r;"
-        "table 1 ? : 0;? 1 : -; endtable endprimitive",
-        "primitive primitive2(o, s, r);\n"
-        "  output o;\n"
-        "  input s;\n"
-        "  input r;\n"
-        "  table\n"
-        "    1 ? : 0;\n"
-        "    ? 1 : -;\n"
-        "  endtable\n"
-        "endprimitive\n",
-    },
-    {
-        // ten-input combinatorial UDP
-        "primitive comb10(o, i0, i1, i2, i3, i4, i5, i6, i7, i8, i9);"
-        "output o;input i0, i1, i2, i3, i4, i5, i6, i7, i8, i9;"
-        "table 0 ? ? ? ? ? ? ? ? 0 : 0;1 ? ? ? ? ? ? ? ? 0 : 1;"
-        "1 ? ? ? ? ? ? ? ? 1 : 1;0 ? ? ? ? ? ? ? ? 1 : 0;endtable endprimitive",
-        "primitive comb10(o, i0, i1, i2, i3, i4,\n"
-        "                 i5, i6, i7, i8, i9);\n"
-        "  output o;\n"
-        "  input i0, i1, i2, i3, i4, i5, i6, i7,\n"
-        "      i8, i9;\n"
-        "  table\n"
-        "    0 ? ? ? ? ? ? ? ? 0 : 0;\n"
-        "    1 ? ? ? ? ? ? ? ? 0 : 1;\n"
-        "    1 ? ? ? ? ? ? ? ? 1 : 1;\n"
-        "    0 ? ? ? ? ? ? ? ? 1 : 0;\n"
-        "  endtable\n"
-        "endprimitive\n",
-    },
-    {
-        // sequential level-sensitive UDP
-        "primitive level_seq(o, c, d);output o;reg o;"
-        "  input c;input d;table\n"
-        "//  C D  state O\n"
-        "0   ? : ? :  -;  // No Change\n"
-        "? 0   : 0 :  0;  // Unknown\n"
-        "endtable endprimitive",
-        "primitive level_seq(o, c, d);\n"
-        "  output o;\n"
-        "  reg o;\n"
-        "  input c;\n"
-        "  input d;\n"
-        "  table\n"
-        "    //  C D  state O\n"
-        "    0 ? : ? : -;  // No Change\n"
-        "    ? 0 : 0 : 0;  // Unknown\n"
-        "  endtable\n"
-        "endprimitive\n",
-    },
-    {
-        // sequential edge-sensitive UDP
-        "primitive edge_seq(o, c, d);output o;reg o;input c;input d;"
-        "table (01) 0 : ? :  0;(01) 1 : ? :  1;(0?) 1 : 1 :  1;(0?) 0 : 0 :  "
-        "0;\n"
-        "// ignore negative c\n"
-        "(?0) ? : ? :  -;\n"
-        "// ignore changes on steady c\n"
-        "?  (?\?) : ? :  -; endtable endprimitive",
-        "primitive edge_seq(o, c, d);\n"
-        "  output o;\n"
-        "  reg o;\n"
-        "  input c;\n"
-        "  input d;\n"
-        "  table\n"
-        "    (01) 0 : ? : 0;\n"
-        "    (01) 1 : ? : 1;\n"
-        "    (0?) 1 : 1 : 1;\n"
-        "    (0?) 0 : 0 : 0;\n"
-        "    // ignore negative c\n"
-        "    (?0) ? : ? : -;\n"
-        "    // ignore changes on steady c\n"
-        "    ? (?\?) : ? : -;\n"
-        "  endtable\n"
-        "endprimitive\n",
-    },
-    {
-        // mixed sequential UDP
-        "primitive mixed(o, clk, j, k, preset, clear);output o;reg o;"
-        "input c;input j, k;input preset, clear;table "
-        "?  ??  01:?:1 ; // preset logic\n"
-        "?  ??  *1:1:1 ;?  ??  10:?:0 ; // clear logic\n"
-        "?  ??  1*:0:0 ;r  00  00:0:1 ; // normal\n"
-        "r  00  11:?:- ;r  01  11:?:0 ;r  10  11:?:1 ;r  11  11:0:1 ;"
-        "r  11  11:1:0 ;f  ??  ??:?:- ;b  *?  ??:?:- ;"
-        " // j and k\n"
-        "b  ?*  ??:?:- ;endtable endprimitive\n",
-        "primitive mixed(o, clk, j, k, preset,\n"
-        "                clear);\n"
-        "  output o;\n"
-        "  reg o;\n"
-        "  input c;\n"
-        "  input j, k;\n"
-        "  input preset, clear;\n"
-        "  table\n"
-        "    ? ? ? 0 1 : ? : 1;  // preset logic\n"
-        "    ? ? ? * 1 : 1 : 1;\n"
-        "    ? ? ? 1 0 : ? : 0;  // clear logic\n"
-        "    ? ? ? 1 * : 0 : 0;\n"
-        "    r 0 0 0 0 : 0 : 1;  // normal\n"
-        "    r 0 0 1 1 : ? : -;\n"
-        "    r 0 1 1 1 : ? : 0;\n"
-        "    r 1 0 1 1 : ? : 1;\n"
-        "    r 1 1 1 1 : 0 : 1;\n"
-        "    r 1 1 1 1 : 1 : 0;\n"
-        "    f ? ? ? ? : ? : -;\n"
-        "    b * ? ? ? : ? : -;  // j and k\n"
-        "    b ? * ? ? : ? : -;\n"
-        "  endtable\n"
-        "endprimitive\n",
-    },
-    // un-lexed multiline macro arg token
-    {
-        " task  S ; "
-        "`ppgJH3JoxhwyTmZ2dgPiuMQzpRAWiSs("
-        "{xYtxuh6.FIMcVPEWfhtoI2FSe, xYtxuh6.ZVL5XASVGLYz32} == "
-        "SqRgavM[15:2];\n"
-        "JgQLBG == 4'h0;, \"foo\" )\n"
-        "endtask\n",
-        "task S;\n"
-        "  `ppgJH3JoxhwyTmZ2dgPiuMQzpRAWiSs(\n"
-        "      {xYtxuh6.FIMcVPEWfhtoI2FSe, xYtxuh6.ZVL5XASVGLYz32} == "
-        "SqRgavM[15:2];\n"
-        "JgQLBG == 4'h0;,\n"
-        "      \"foo\")\n"
-        "endtask\n",
-    },
-
-    // module instantiation named ports tabular alignment
-    //{// module instantiation with no port, only comments
-    //    "module m;\n"
-    //    "foo bar(\n"
-    //    "\t//comment1\n"
-    //    "//comment2\n"
-    //    ");\n"
-    //    "endmodule\n",
-    //    "module m;\n"
-    //    "  foo bar (\n"
-    //    "      //comment1\n"
-    //    "      //comment2\n"
-    //    "  );\n"
-    //    "endmodule\n"
-    //},
-    {// all named ports
-     "module m;\n"
-     "foo bar(.a(a), .aa(aa), .aaa(aaa));\n"
-     "endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .a  (a),\n"
-     "      .aa (aa),\n"
-     "      .aaa(aaa)\n"
-     "  );\n"
-     "endmodule\n"},
-    {// named ports left unconnected
-     "module m;\n"
-     "foo bar(.a(), .aa(), .aaa());\n"
-     "endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .a  (),\n"
-     "      .aa (),\n"
-     "      .aaa()\n"
-     "  );\n"
-     "endmodule\n"},
-    {// multiple named ports groups separated by blank line
-     "module m;\n"
-     "foo bar(.a(a), .aaa(aaa),\n\n .b(b), .bbbbbb(bbbbb));\n"
-     "endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .a  (a),\n"
-     "      .aaa(aaa),\n"
-     "\n"
-     "      .b     (b),\n"
-     "      .bbbbbb(bbbbb)\n"
-     "  );\n"
-     "endmodule\n"},
-    {// named ports with concatenation
-     "module m;\n"
-     "foo bar(.a(a), .aaa({a,b,c}));\n"
-     "endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .a  (a),\n"
-     "      .aaa({a, b, c})\n"
-     "  );\n"
-     "endmodule\n"},
-    {// name ports with slices
-     "module m;\n"
-     "foo bar(.a(a), .aaa(q[r:s]));\n"
-     "endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .a  (a),\n"
-     "      .aaa(q[r:s])\n"
-     "  );\n"
-     "endmodule\n"},
-    {// named ports with pre-proc directives
-     "module m;\n"
-     "foo bar(.a(a), `ifdef MACRO .aa(aa), `endif .aaa(aaa));\n"
-     "endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .a  (a),\n"
-     "`ifdef MACRO\n"
-     "      .aa (aa),\n"
-     "`endif\n"
-     "      .aaa(aaa)\n"
-     "  );\n"
-     "endmodule\n"},
-    {// named ports with macros
-     "module m;\n"
-     "foo bar(.a(a), .aa(aa[`RANGE]), .aaa(aaa));\n"
-     "endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .a  (a),\n"
-     "      .aa (aa[`RANGE]),\n"
-     "      .aaa(aaa)\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "foo bar(.a(a), .AA, .aaa(aaa));\n"
-     "endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .a  (a),\n"
-     "      .AA,\n"
-     "      .aaa(aaa)\n"
-     "  );\n"
-     "endmodule\n"},
-    {// name ports with comments
-     "module m;\n"
-     "foo bar(.a(a), .aa(aa)/*comment*/, .aaa(aaa));\n"
-     "endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .a  (a),\n"
-     "      .aa (aa)  /*comment*/,\n"
-     "      .aaa(aaa)\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "foo bar(.a(a),//comment1\n .aaa(aaa)//comment2\n);\n"
-     "endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .a  (a),   //comment1\n"
-     "      .aaa(aaa)  //comment2\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "foo bar(.a(a),\n"
-     " //.aa(aa),\n"
-     ".aaa(aaa));\n"
-     "endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .a  (a),\n"
-     "      //.aa(aa),\n"
-     "      .aaa(aaa)\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "foo bar(\n"
-     ".a(a) //comment1\n"
-     ", .aaa(aaa) //comment2\n"
-     ") //comment3\n"
-     ";\n"
-     "endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "        .a  (a)    //comment1\n"
-     "      , .aaa(aaa)  //comment2\n"
-     "  )  //comment3\n"
-     "  ;\n"
-     "endmodule\n"},
-    {// module instantiation with all implicit connections
-     "module m;\n"
-     "foo bar(.a, .aa, .aaaaa);\n"
-     "endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .a,\n"
-     "      .aa,\n"
-     "      .aaaaa\n"
-     "  );\n"
-     "endmodule\n"},
-    {// named ports corssed with implicit connections
-     "module m;\n"
-     "foo bar(.a(a), .aa, .aaaaa(aaaaa));\n"
-     "endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .a    (a),\n"
-     "      .aa,\n"
-     "      .aaaaa(aaaaa)\n"
-     "  );\n"
-     "endmodule\n"},
-    {// named ports corssed with wildcard connections
-     "module m;\n"
-     "foo bar(.a(a), .aaa(aaa), .*);\n"
-     "endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .a  (a),\n"
-     "      .aaa(aaa),\n"
-     "      .*\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "foo bar(.a(a), .aa(aa), .* , .aaa(aaa));\n"
-     "endmodule\n",
-     "module m;\n"
-     "  foo bar (\n"
-     "      .a  (a),\n"
-     "      .aa (aa),\n"
-     "      .*,\n"
-     "      .aaa(aaa)\n"
-     "  );\n"
-     "endmodule\n"},
-
-    // Parameterized data types, declarations inside #() tabular alignment
-    {// parameterized module with 'list_of_param_assignments'
-     "module foo #(A = 2, AA = 22, AAA = 222);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    A   = 2,\n"
-     "    AA  = 22,\n"
-     "    AAA = 222\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'parameter_declaration'
-     "module foo #(parameter int a = 2, parameter int aa = 22);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    parameter int a  = 2,\n"
-     "    parameter int aa = 22\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'parameter_declaration' and comments
-     "module foo #(//comment\nparameter int a = 2, parameter int aa = 22);\n"
-     "endmodule\n",
-     "module foo #(  //comment\n"
-     "    parameter int a  = 2,\n"
-     "    parameter int aa = 22\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'parameter_declaration' and trailing comments
-     "module foo #(parameter int a = 2,//comment\n parameter int aa = 22);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    parameter int a  = 2,  //comment\n"
-     "    parameter int aa = 22\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'parameter_declaration' and pre-proc
-     "module foo #(parameter int a = 2,\n"
-     "`ifdef MACRO parameter int aa = 22, `endif\n"
-     "parameter int aaa = 222);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    parameter int a   = 2,\n"
-     "`ifdef MACRO\n"
-     "    parameter int aa  = 22,\n"
-     "`endif\n"
-     "    parameter int aaa = 222\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'parameter_declaration' and packed dimensions
-     "module foo #(parameter logic [3:0] a = 2, parameter logic [30:0] aa = "
-     "22);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    parameter logic [ 3:0] a  = 2,\n"
-     "    parameter logic [30:0] aa = 22\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'parameter_declaration' and unpacked
-     // dimensions
-     "module foo #(parameter logic a[3:0] = 2, parameter logic  aa [30:0] = "
-     "22);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    parameter logic a [ 3:0] = 2,\n"
-     "    parameter logic aa[30:0] = 22\n"
-     ");\n"
-     "endmodule\n"},
-
-    {// parameterized module with 'local_parameter_declaration'
-     "module foo #(localparam int a = 2, localparam int aa = 22);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    localparam int a  = 2,\n"
-     "    localparam int aa = 22\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'local_parameter_declaration' and comments
-     "module foo #(//comment\nlocalparam int a = 2, localparam int aa = 22);\n"
-     "endmodule\n",
-     "module foo #(  //comment\n"
-     "    localparam int a  = 2,\n"
-     "    localparam int aa = 22\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'local_parameter_declaration' and trailing
-     // comments
-     "module foo #(localparam int a = 2,//comment\n localparam int aa = 22);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    localparam int a  = 2,  //comment\n"
-     "    localparam int aa = 22\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'local_parameter_declaration' and pre-proc
-     "module foo #(localparam int a = 2,\n"
-     "`ifdef MACRO localparam int aa = 22, `endif\n"
-     "localparam int aaa = 222);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    localparam int a   = 2,\n"
-     "`ifdef MACRO\n"
-     "    localparam int aa  = 22,\n"
-     "`endif\n"
-     "    localparam int aaa = 222\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'local_parameter_declaration' and packed
-     // dimensions
-     "module foo #(localparam logic [3:0] a = 2, localparam logic [30:0] aa = "
-     "22);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    localparam logic [ 3:0] a  = 2,\n"
-     "    localparam logic [30:0] aa = 22\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'local_parameter_declaration' and unpacked
-     // dimensions
-     "module foo #(localparam logic a[3:0] = 2, localparam logic  aa [30:0] = "
-     "22);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    localparam logic a [ 3:0] = 2,\n"
-     "    localparam logic aa[30:0] = 22\n"
-     ");\n"
-     "endmodule\n"},
-
-    {// parameterized module with 'data_type list_of_param_assignments'
-     "module foo #( int a = 2,  real aa = 22, longint aaa = 222);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    int     a   = 2,\n"
-     "    real    aa  = 22,\n"
-     "    longint aaa = 222\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'data_type list_of_param_assignments' and
-     // comments
-     "module foo #(//comment\nint a = 2,  shortreal aa = 22, longint aaa = "
-     "222);\n"
-     "endmodule\n",
-     "module foo #(  //comment\n"
-     "    int       a   = 2,\n"
-     "    shortreal aa  = 22,\n"
-     "    longint   aaa = 222\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'data_type list_of_param_assignments' and
-     // trailing comments
-     "module foo #(int a = 2,  shortreal aa = 22,//comment\n longint aaa = "
-     "222);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    int       a   = 2,\n"
-     "    shortreal aa  = 22,  //comment\n"
-     "    longint   aaa = 222\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'data_type list_of_param_assignments' and
-     // pre-proc
-     "module foo #(int a = 2,\n"
-     "`ifdef MACRO shortreal aa = 22, `endif\n"
-     " longint aaa = 222);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    int       a   = 2,\n"
-     "`ifdef MACRO\n"
-     "    shortreal aa  = 22,\n"
-     "`endif\n"
-     "    longint   aaa = 222\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'data_type list_of_param_assignments' and
-     // packed dimensions
-     "module foo #(bit [1:0] a = 2,  reg [12:0] aa = 22, logic [123:0] aaa = "
-     "222);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    bit   [  1:0] a   = 2,\n"
-     "    reg   [ 12:0] aa  = 22,\n"
-     "    logic [123:0] aaa = 222\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'data_type list_of_param_assignments' and
-     // unpacked dimensions
-     "module foo #(bit  a[1:0] = 2,  reg  aa[12:0] = 22, logic aaa [123:0]  = "
-     "222);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    bit   a  [  1:0] = 2,\n"
-     "    reg   aa [ 12:0] = 22,\n"
-     "    logic aaa[123:0] = 222\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'type list_of_type_assignments'
-     "module foo #(type T = int, type TT = bit, type TTT= C#(logic) );\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    type T   = int,\n"
-     "    type TT  = bit,\n"
-     "    type TTT = C#(logic)\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'type list_of_type_assignments' and comments
-     "module foo #(//comment\ntype T = int, type TT = bit, type TTT= C#(logic) "
-     ");\n"
-     "endmodule\n",
-     "module foo #(  //comment\n"
-     "    type T   = int,\n"
-     "    type TT  = bit,\n"
-     "    type TTT = C#(logic)\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'data_type list_of_param_assignments' and
-     // trailing comments
-     "module foo #(type T = int, type TT = bit, //comment\n type TTT= "
-     "C#(logic) );\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    type T   = int,\n"
-     "    type TT  = bit,       //comment\n"
-     "    type TTT = C#(logic)\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'data_type list_of_param_assignments' and
-     // pre-proc
-     "module foo #(type T = int,\n"
-     "`ifdef MACRO type TT = bit, `endif\n"
-     " type TTT= C#(logic));\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    type T   = int,\n"
-     "`ifdef MACRO\n"
-     "    type TT  = bit,\n"
-     "`endif\n"
-     "    type TTT = C#(logic)\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'data_type list_of_param_assignments' and
-     // packed dimensions
-     "module foo #(type T = int [3:0], type TT = bit [250:0]);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    type T  = int [  3:0],\n"
-     "    type TT = bit [250:0]\n"
-     ");\n"
-     "endmodule\n"},
-    {"module foo #(type T = int, "
-     "A = 2, int AA = 22, parameter AAA = 222, parameter longint AAAA = 2222, "
-     "localparam AAAAA = 22222, localparam real AAAAAA = 222222"
-     ");\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "               type    T      = int,\n"
-     "                       A      = 2,\n"
-     "               int     AA     = 22,\n"
-     "    parameter          AAA    = 222,\n"
-     "    parameter  longint AAAA   = 2222,\n"
-     "    localparam         AAAAA  = 22222,\n"
-     "    localparam real    AAAAAA = 222222\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with built-in data type
-     "module foo #(int a = 2, real abc = 2234);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    int  a   = 2,\n"
-     "    real abc = 2234\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with type
-     "module foo #(type TYPE1 = int, type TYPE2 = boo);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    type TYPE1 = int,\n"
-     "    type TYPE2 = boo\n"
-     ");\n"
-     "endmodule\n"},
-    {"module foo#(localparam type TYPE1 = int, type TYPE22 = bool, parameter   "
-     " type TYPE333 = real);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    localparam type TYPE1   = int,\n"
-     "               type TYPE22  = bool,\n"
-     "    parameter  type TYPE333 = real\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'data_type list_of_param_assignments' and 1D
-     // packed dimensions
-     "module foo #(parameter type T = int [3:0], type TT = bit [123:0]);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    parameter type T  = int [  3:0],\n"
-     "              type TT = bit [123:0]\n"
-     ");\n"
-     "endmodule\n"},
-    {// parameterized module with 'data_type list_of_param_assignments' and 2D
-     // packed dimensions
-     "module foo #(type T = int [3:0][123:0], type TT = bit [123:0][1:0]);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    type T  = int [  3:0][123:0],\n"
-     "    type TT = bit [123:0][  1:0]\n"
-     ");\n"
-     "endmodule\n"},
-    {// parametrized module with user defined data types
-     "module foo #(type T = my_type1_t, type TT = my_pkg::my_type2_t);\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    type T  = my_type1_t,\n"
-     "    type TT = my_pkg::my_type2_t\n"
-     ");\n"
-     "endmodule\n"},
-
-    {// parameterized class with 'list_of_param_assignments'
-     "class foo #(A = 2, AA = 22, AAA = 222);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    A   = 2,\n"
-     "    AA  = 22,\n"
-     "    AAA = 222\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'parameter_declaration'
-     "class foo #(parameter int a = 2, parameter int aa = 22);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    parameter int a  = 2,\n"
-     "    parameter int aa = 22\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'parameter_declaration' and comments
-     "class foo #(//comment\nparameter int a = 2, parameter int aa = 22);\n"
-     "endclass\n",
-     "class foo #(  //comment\n"
-     "    parameter int a  = 2,\n"
-     "    parameter int aa = 22\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'parameter_declaration' and trailing comments
-     "class foo #(parameter int a = 2,//comment\n parameter int aa = 22);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    parameter int a  = 2,  //comment\n"
-     "    parameter int aa = 22\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'parameter_declaration' and pre-proc
-     "class foo #(parameter int a = 2,\n"
-     "`ifdef MACRO parameter int aa = 22, `endif\n"
-     "parameter int aaa = 222);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    parameter int a   = 2,\n"
-     "`ifdef MACRO\n"
-     "    parameter int aa  = 22,\n"
-     "`endif\n"
-     "    parameter int aaa = 222\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'parameter_declaration' and packed dimensions
-     "class foo #(parameter logic [3:0] a = 2, parameter logic [30:0] aa = "
-     "22);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    parameter logic [ 3:0] a  = 2,\n"
-     "    parameter logic [30:0] aa = 22\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'parameter_declaration' and unpacked dimensions
-     "class foo #(parameter logic a[3:0] = 2, parameter logic  aa [30:0] = "
-     "22);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    parameter logic a [ 3:0] = 2,\n"
-     "    parameter logic aa[30:0] = 22\n"
-     ");\n"
-     "endclass\n"},
-
-    {// parameterized class with 'local_parameter_declaration'
-     "class foo #(localparam int a = 2, localparam int aa = 22);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    localparam int a  = 2,\n"
-     "    localparam int aa = 22\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'local_parameter_declaration' and comments
-     "class foo #(//comment\nlocalparam int a = 2, localparam int aa = 22);\n"
-     "endclass\n",
-     "class foo #(  //comment\n"
-     "    localparam int a  = 2,\n"
-     "    localparam int aa = 22\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'local_parameter_declaration' and trailing
-     // comments
-     "class foo #(localparam int a = 2,//comment\n localparam int aa = 22);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    localparam int a  = 2,  //comment\n"
-     "    localparam int aa = 22\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'local_parameter_declaration' and pre-proc
-     "class foo #(localparam int a = 2,\n"
-     "`ifdef MACRO localparam int aa = 22, `endif\n"
-     "localparam int aaa = 222);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    localparam int a   = 2,\n"
-     "`ifdef MACRO\n"
-     "    localparam int aa  = 22,\n"
-     "`endif\n"
-     "    localparam int aaa = 222\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'local_parameter_declaration' and packed
-     // dimensions
-     "class foo #(localparam logic [3:0] a = 2, localparam logic [30:0] aa = "
-     "22);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    localparam logic [ 3:0] a  = 2,\n"
-     "    localparam logic [30:0] aa = 22\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'local_parameter_declaration' and unpacked
-     // dimensions
-     "class foo #(localparam logic a[3:0] = 2, localparam logic  aa [30:0] = "
-     "22);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    localparam logic a [ 3:0] = 2,\n"
-     "    localparam logic aa[30:0] = 22\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'data_type list_of_param_assignments'
-     "class foo #( int a = 2,  real aa = 22, longint aaa = 222);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    int     a   = 2,\n"
-     "    real    aa  = 22,\n"
-     "    longint aaa = 222\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'data_type list_of_param_assignments' and
-     // comments
-     "class foo #(//comment\nint a = 2,  shortreal aa = 22, longint aaa = "
-     "222);\n"
-     "endclass\n",
-     "class foo #(  //comment\n"
-     "    int       a   = 2,\n"
-     "    shortreal aa  = 22,\n"
-     "    longint   aaa = 222\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'data_type list_of_param_assignments' and
-     // trailing comments
-     "class foo #(int a = 2,  shortreal aa = 22,//comment\n longint aaa = "
-     "222);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    int       a   = 2,\n"
-     "    shortreal aa  = 22,  //comment\n"
-     "    longint   aaa = 222\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'data_type list_of_param_assignments' and
-     // pre-proc
-     "class foo #(int a = 2,\n"
-     "`ifdef MACRO shortreal aa = 22, `endif\n"
-     " longint aaa = 222);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    int       a   = 2,\n"
-     "`ifdef MACRO\n"
-     "    shortreal aa  = 22,\n"
-     "`endif\n"
-     "    longint   aaa = 222\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'data_type list_of_param_assignments' and
-     // packed dimensions
-     "class foo #(bit [1:0] a = 2,  reg [12:0] aa = 22, logic [123:0] aaa = "
-     "222);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    bit   [  1:0] a   = 2,\n"
-     "    reg   [ 12:0] aa  = 22,\n"
-     "    logic [123:0] aaa = 222\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'data_type list_of_param_assignments' and
-     // unpacked dimensions
-     "class foo #(bit  a[1:0] = 2,  reg  aa[12:0] = 22, logic aaa [123:0]  = "
-     "222);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    bit   a  [  1:0] = 2,\n"
-     "    reg   aa [ 12:0] = 22,\n"
-     "    logic aaa[123:0] = 222\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'type list_of_type_assignments'
-     "class foo #(type T = int, type TT = bit, type TTT= C#(logic) );\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    type T   = int,\n"
-     "    type TT  = bit,\n"
-     "    type TTT = C#(logic)\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'type list_of_type_assignments' and comments
-     "class foo #(//comment\ntype T = int, type TT = bit, type TTT= C#(logic) "
-     ");\n"
-     "endclass\n",
-     "class foo #(  //comment\n"
-     "    type T   = int,\n"
-     "    type TT  = bit,\n"
-     "    type TTT = C#(logic)\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'data_type list_of_param_assignments' and
-     // trailing comments
-     "class foo #(type T = int, type TT = bit, //comment\n type TTT= C#(logic) "
-     ");\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    type T   = int,\n"
-     "    type TT  = bit,       //comment\n"
-     "    type TTT = C#(logic)\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'data_type list_of_param_assignments' and
-     // pre-proc
-     "class foo #(type T = int,\n"
-     "`ifdef MACRO type TT = bit, `endif\n"
-     " type TTT= C#(logic));\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    type T   = int,\n"
-     "`ifdef MACRO\n"
-     "    type TT  = bit,\n"
-     "`endif\n"
-     "    type TTT = C#(logic)\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'data_type list_of_param_assignments' and
-     // packed dimensions
-     "class foo #(type T = int [3:0], type TT = bit [250:0]);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    type T  = int [  3:0],\n"
-     "    type TT = bit [250:0]\n"
-     ");\n"
-     "endclass\n"},
-    {"class foo #(type T = int, "
-     "A = 2, int AA = 22, parameter AAA = 222, parameter longint AAAA = 2222, "
-     "localparam AAAAA = 22222, localparam real AAAAAA = 222222"
-     ");\n"
-     "endclass\n",
-     "class foo #(\n"
-     "               type    T      = int,\n"
-     "                       A      = 2,\n"
-     "               int     AA     = 22,\n"
-     "    parameter          AAA    = 222,\n"
-     "    parameter  longint AAAA   = 2222,\n"
-     "    localparam         AAAAA  = 22222,\n"
-     "    localparam real    AAAAAA = 222222\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with built-in data type
-     "class foo #(int a = 2, real abc = 2234);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    int  a   = 2,\n"
-     "    real abc = 2234\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with type
-     "class foo #(type TYPE1 = int, type TYPE2 = boo);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    type TYPE1 = int,\n"
-     "    type TYPE2 = boo\n"
-     ");\n"
-     "endclass\n"},
-    {"class foo#(localparam type TYPE1 = int, type TYPE22 = bool, parameter    "
-     "type TYPE333 = real);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    localparam type TYPE1   = int,\n"
-     "               type TYPE22  = bool,\n"
-     "    parameter  type TYPE333 = real\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'data_type list_of_param_assignments' and 1D
-     // packed dimensions
-     "class foo #(parameter type T = int [3:0], type TT = bit [123:0]);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    parameter type T  = int [  3:0],\n"
-     "              type TT = bit [123:0]\n"
-     ");\n"
-     "endclass\n"},
-    {// parameterized class with 'data_type list_of_param_assignments' and 2D
-     // packed dimensions
-     "class foo #(type T = int [3:0][123:0], type TT = bit [123:0][1:0]);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    type T  = int [  3:0][123:0],\n"
-     "    type TT = bit [123:0][  1:0]\n"
-     ");\n"
-     "endclass\n"},
-    {// parametrized class with user defined data types
-     "class foo #(type T = my_type1_t, type TT = my_pkg::my_type2_t);\n"
-     "endclass\n",
-     "class foo #(\n"
-     "    type T  = my_type1_t,\n"
-     "    type TT = my_pkg::my_type2_t\n"
-     ");\n"
-     "endclass\n"},
-
-    {// parameterized interface with 'local_parameter_declaration'
-     "interface foo #(localparam int a = 2, localparam int aa = 22);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    localparam int a  = 2,\n"
-     "    localparam int aa = 22\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'local_parameter_declaration' and comments
-     "interface foo #(//comment\nlocalparam int a = 2, localparam int aa = "
-     "22);\n"
-     "endinterface\n",
-     "interface foo #(  //comment\n"
-     "    localparam int a  = 2,\n"
-     "    localparam int aa = 22\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'local_parameter_declaration' and trailing
-     // comments
-     "interface foo #(localparam int a = 2,//comment\n localparam int aa = "
-     "22);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    localparam int a  = 2,  //comment\n"
-     "    localparam int aa = 22\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'local_parameter_declaration' and pre-proc
-     "interface foo #(localparam int a = 2,\n"
-     "`ifdef MACRO localparam int aa = 22, `endif\n"
-     "localparam int aaa = 222);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    localparam int a   = 2,\n"
-     "`ifdef MACRO\n"
-     "    localparam int aa  = 22,\n"
-     "`endif\n"
-     "    localparam int aaa = 222\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'local_parameter_declaration' and packed
-     // dimensions
-     "interface foo #(localparam logic [3:0] a = 2, localparam logic [30:0] aa "
-     "= 22);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    localparam logic [ 3:0] a  = 2,\n"
-     "    localparam logic [30:0] aa = 22\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'local_parameter_declaration' and unpacked
-     // dimensions
-     "interface foo #(localparam logic a[3:0] = 2, localparam logic  aa [30:0] "
-     "= 22);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    localparam logic a [ 3:0] = 2,\n"
-     "    localparam logic aa[30:0] = 22\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'data_type list_of_param_assignments'
-     "interface foo #( int a = 2,  real aa = 22, longint aaa = 222);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    int     a   = 2,\n"
-     "    real    aa  = 22,\n"
-     "    longint aaa = 222\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'data_type list_of_param_assignments' and
-     // comments
-     "interface foo #(//comment\nint a = 2,  shortreal aa = 22, longint aaa = "
-     "222);\n"
-     "endinterface\n",
-     "interface foo #(  //comment\n"
-     "    int       a   = 2,\n"
-     "    shortreal aa  = 22,\n"
-     "    longint   aaa = 222\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'data_type list_of_param_assignments' and
-     // trailing comments
-     "interface foo #(int a = 2,  shortreal aa = 22,//comment\n longint aaa = "
-     "222);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    int       a   = 2,\n"
-     "    shortreal aa  = 22,  //comment\n"
-     "    longint   aaa = 222\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'data_type list_of_param_assignments' and
-     // pre-proc
-     "interface foo #(int a = 2,\n"
-     "`ifdef MACRO shortreal aa = 22, `endif\n"
-     " longint aaa = 222);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    int       a   = 2,\n"
-     "`ifdef MACRO\n"
-     "    shortreal aa  = 22,\n"
-     "`endif\n"
-     "    longint   aaa = 222\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'data_type list_of_param_assignments' and
-     // packed dimensions
-     "interface foo #(bit [1:0] a = 2,  reg [12:0] aa = 22, logic [123:0] aaa "
-     "= 222);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    bit   [  1:0] a   = 2,\n"
-     "    reg   [ 12:0] aa  = 22,\n"
-     "    logic [123:0] aaa = 222\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'data_type list_of_param_assignments' and
-     // unpacked dimensions
-     "interface foo #(bit  a[1:0] = 2,  reg  aa[12:0] = 22, logic aaa [123:0]  "
-     "= 222);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    bit   a  [  1:0] = 2,\n"
-     "    reg   aa [ 12:0] = 22,\n"
-     "    logic aaa[123:0] = 222\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'type list_of_type_assignments'
-     "interface foo #(type T = int, type TT = bit, type TTT= C#(logic) );\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    type T   = int,\n"
-     "    type TT  = bit,\n"
-     "    type TTT = C#(logic)\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'type list_of_type_assignments' and
-     // comments
-     "interface foo #(//comment\ntype T = int, type TT = bit, type TTT= "
-     "C#(logic) );\n"
-     "endinterface\n",
-     "interface foo #(  //comment\n"
-     "    type T   = int,\n"
-     "    type TT  = bit,\n"
-     "    type TTT = C#(logic)\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'data_type list_of_param_assignments' and
-     // trailing comments
-     "interface foo #(type T = int, type TT = bit, //comment\n type TTT= "
-     "C#(logic) );\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    type T   = int,\n"
-     "    type TT  = bit,       //comment\n"
-     "    type TTT = C#(logic)\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'data_type list_of_param_assignments' and
-     // pre-proc
-     "interface foo #(type T = int,\n"
-     "`ifdef MACRO type TT = bit, `endif\n"
-     " type TTT= C#(logic));\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    type T   = int,\n"
-     "`ifdef MACRO\n"
-     "    type TT  = bit,\n"
-     "`endif\n"
-     "    type TTT = C#(logic)\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'data_type list_of_param_assignments' and
-     // packed dimensions
-     "interface foo #(type T = int [3:0], type TT = bit [250:0]);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    type T  = int [  3:0],\n"
-     "    type TT = bit [250:0]\n"
-     ");\n"
-     "endinterface\n"},
-    {"interface foo #(type T = int, "
-     "A = 2, int AA = 22, parameter AAA = 222, parameter longint AAAA = 2222, "
-     "localparam AAAAA = 22222, localparam real AAAAAA = 222222"
-     ");\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "               type    T      = int,\n"
-     "                       A      = 2,\n"
-     "               int     AA     = 22,\n"
-     "    parameter          AAA    = 222,\n"
-     "    parameter  longint AAAA   = 2222,\n"
-     "    localparam         AAAAA  = 22222,\n"
-     "    localparam real    AAAAAA = 222222\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with built-in data type
-     "interface foo #(int a = 2, real abc = 2234);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    int  a   = 2,\n"
-     "    real abc = 2234\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with type
-     "interface foo #(type TYPE1 = int, type TYPE2 = boo);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    type TYPE1 = int,\n"
-     "    type TYPE2 = boo\n"
-     ");\n"
-     "endinterface\n"},
-    {"interface foo#(localparam type TYPE1 = int, type TYPE22 = bool, "
-     "parameter    type TYPE333 = real);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    localparam type TYPE1   = int,\n"
-     "               type TYPE22  = bool,\n"
-     "    parameter  type TYPE333 = real\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'data_type list_of_param_assignments' and
-     // 1D packed dimensions
-     "interface foo #(parameter type T = int [3:0], type TT = bit [123:0]);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    parameter type T  = int [  3:0],\n"
-     "              type TT = bit [123:0]\n"
-     ");\n"
-     "endinterface\n"},
-    {// parameterized interface with 'data_type list_of_param_assignments' and
-     // 2D packed dimensions
-     "interface foo #(type T = int [3:0][123:0], type TT = bit [123:0][1:0]);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    type T  = int [  3:0][123:0],\n"
-     "    type TT = bit [123:0][  1:0]\n"
-     ");\n"
-     "endinterface\n"},
-    {// parametrized interface with user defined data types
-     "interface foo #(type T = my_type1_t, type TT = my_pkg::my_type2_t);\n"
-     "endinterface\n",
-     "interface foo #(\n"
-     "    type T  = my_type1_t,\n"
-     "    type TT = my_pkg::my_type2_t\n"
-     ");\n"
-     "endinterface\n"},
-    {// wildcard import package at module header
-     "module foo import bar::*; (baz); endmodule\n",
-     "module foo\n"
-     "  import bar::*;\n"
-     "(\n"
-     "    baz\n"
-     ");\n"
-     "endmodule\n"},
-    {// import package at module header
-     "module foo import bar::baz; (qux); endmodule\n",
-     "module foo\n"
-     "  import bar::baz;\n"
-     "(\n"
-     "    qux\n"
-     ");\n"
-     "endmodule\n"},
-    {// wildcard import multiple packages at module header
-     "module foo import bar::*,baz::*; (qux); endmodule\n",
-     "module foo\n"
-     "  import bar::*, baz::*;\n"
-     "(\n"
-     "    qux\n"
-     ");\n"
-     "endmodule\n"},
-    {// separate package import declarations in module header
-     "module foo import bar::*,baz::*; import q_pkg::qux; (qux); endmodule\n",
-     "module foo\n"
-     "  import bar::*, baz::*;\n"
-     "  import q_pkg::qux;\n"
-     "(\n"
-     "    qux\n"
-     ");\n"
-     "endmodule\n"},
-    {// import package at module header
-     "module foo import bar::baz; #(int p = 3)(qux); endmodule\n",
-     "module foo\n"
-     "  import bar::baz;\n"
-     "#(\n"
-     "    int p = 3\n"
-     ") (\n"
-     "    qux\n"
-     ");\n"
-     "endmodule\n"},
-    // Space between return keyword and return value
-    {"function int foo(logic [31:0] data); return{<<8{data}}; endfunction",
-     "function int foo(logic [31:0] data);\n"
-     "  return {<<8{data}};\n"
-     "endfunction\n"},
-    {"function int f;return(1);endfunction",
-     "function int f;\n"
-     "  return (1);\n"
-     "endfunction\n"},
-    {"function int f;return-1;endfunction",
-     "function int f;\n"
-     "  return -1;\n"
-     "endfunction\n"},
-    {"function int f ;return    ! x\n;endfunction",
-     "function int f;\n"
-     "  return !x;\n"
-     "endfunction\n"},
-    {"function int f ;return    ~ x\n;endfunction",
-     "function int f;\n"
-     "  return ~x;\n"
-     "endfunction\n"},
-    {"function int f ;return    $x\n;endfunction",
-     "function int f;\n"
-     "  return $x;\n"
-     "endfunction\n"},
-    // String initializers
-    {"string a[] = {\n\"a\"\n};\n", "string a[] = {\"a\"};\n"},
-    {"string abc[] = {\n\"a\",\n\"b\",\n\"c\"\n};\n",
-     "string abc[] = {\"a\", \"b\", \"c\"};\n"},
-    {"string abc[] = {\n"
-     "\"a\",//\n"
-     "\"b\", \"c\"\n"
-     "};\n",
-     "string abc[] = {\"a\",  //\n"
-     "                \"b\",\n"
-     "                \"c\"};\n"},
-    {"string abc[] = {//\n"
-     "\"a\", \"b\", \"c\""
-     "};\n",
-     "string abc[] = {  //\n"
-     "  \"a\",\n"
-     "  \"b\",\n"
-     "  \"c\"\n"
-     "};\n"},
-    {"string abc[] = {\n"
-     "\"a\", \"b\", \"c\"//\n"
-     "};\n",
-     "string abc[] = {\"a\",\n"
-     "                \"b\",\n"
-     "                \"c\"  //\n"
-     "                };\n"},
-    {"string abc[] = {//\n"
-     "\"a\",//\n"
-     "\"b\", \"c\"//\n"
-     "};\n",
-     "string abc[] = {  //\n"
-     "  \"a\",  //\n"
-     "  \"b\",\n"
-     "  \"c\"  //\n"
-     "};\n"},
-    {"string abc[] = {\n"
-     "\"a\",\n"
-     "// comment\n"
-     "// comment\n"
-     "\"b\",\n"
-     "\"c\"\n"
-     "};\n",
-     "string abc[] = {\"a\",\n"
-     "                // comment\n"
-     "                // comment\n"
-     "                \"b\",\n"
-     "                \"c\"};\n"},
-    {"string numbers[] = {\"one\", \"two\", \"three\", \"four\"};\n",
-     "string numbers[] = {\"one\",\n"
-     "                    \"two\",\n"
-     "                    \"three\",\n"
-     "                    \"four\"};\n"},
-    {"string numbers[] = {\"one\", \"two\", THREE, \"four\"};\n",
-     "string numbers[] = {\n"
-     "  \"one\", \"two\", THREE, \"four\"\n"
-     "};\n"},
-    {"string numbers[] = {\"one\", {\"two\", \"three\"}, \"four\"};\n",
-     "string numbers[] = {\n"
-     "  \"one\", {\"two\", \"three\"}, \"four\"\n"
-     "};\n"},
-    {"string numbers[] = {\"one\", {\"two\", //\n"
-     "\"three\"}, \"four\"};\n",
-     "string numbers[] = {\n"
-     "  \"one\",\n"
-     "  {\n"
-     "    \"two\",  //\n"
-     "    \"three\"\n"
-     "  },\n"
-     "  \"four\"\n"
-     "};\n"},
-    {"string years[] = {\"two_thousand_nineteen\", \"two_thousand_twenty\",\n"
-     "\"two_thousand_twenty_one\"};\n",
-     // line with 3rd string would exceed column limit in unwrapped style
-     "string years[] = {\n"
-     "  \"two_thousand_nineteen\",\n"
-     "  \"two_thousand_twenty\",\n"
-     "  \"two_thousand_twenty_one\"\n"
-     "};\n"},
-    {"class class_name;\n"
-     "var_type var_name = new(\"the_string\");\n"
-     "endclass\n",
-     "class class_name;\n"
-     "  var_type var_name = new(\"the_string\");\n"
-     "endclass\n"},
-
-    //{   // parameterized class with 'parameter_declaration' and MACRO
-    //    "class foo #(parameter int a = 2,\n"
-    //    "parameter int aaa = `MACRO);\n"
-    //    "endclass\n",
-    //    "class foo #(\n"
-    //    "    parameter int a   = 2,\n"
-    //    "    parameter int aaa = `MACRO\n"
-    //    ");\n"
-    //    "endclass\n"
-    //},
-    // Struct/Union alignment
-    {"typedef struct {\n"
-     "bit [3:0] first; bit [31:0] second; generic_type_name_t third;\n"
-     "} type_t;",
-     "typedef struct {\n"
-     "  bit [3:0]           first;\n"
-     "  bit [31:0]          second;\n"
-     "  generic_type_name_t third;\n"
-     "} type_t;\n"},
-    {"typedef union soft packed {\n"
-     "bit [3:0] first; bit [31:0] second; generic_type_name_t third;\n"
-     "} type_t;",
-     "typedef union soft packed {\n"
-     "  bit [3:0]           first;\n"
-     "  bit [31:0]          second;\n"
-     "  generic_type_name_t third;\n"
-     "} type_t;\n"},
-    {"typedef union soft {\n"
-     "bit [3:0] first; bit [31:0] second; generic_type_name_t third;\n"
-     "} type_t;",
-     "typedef union soft {\n"
-     "  bit [3:0]           first;\n"
-     "  bit [31:0]          second;\n"
-     "  generic_type_name_t third;\n"
-     "} type_t;\n"},
-    {"typedef struct {\n"
-     "// comment\n"
-     "bit [3:0] first; bit [31:0] second; generic_type_name_t third;\n"
-     "} type_t;",
-     "typedef struct {\n"
-     "  // comment\n"
-     "  bit [3:0]           first;\n"
-     "  bit [31:0]          second;\n"
-     "  generic_type_name_t third;\n"
-     "} type_t;\n"},
-    {"typedef struct {\n"
-     "// comment 0\n"
-     "bit [31:0] first; // a\n"
-     "bit [31:0] second; // b\n"
-     "bit third; // c\n"
-     "uint fourth; // d\n"
-     "\n"
-     "// comment 1\n"
-     "int fifth;\n"
-     "// comment 2.1\n"
-     "// comment 2.2\n"
-     "uint sixth;\n"
-     "} timing_cfg_t;",
-     "typedef struct {\n"
-     "  // comment 0\n"
-     "  bit [31:0] first;   // a\n"
-     "  bit [31:0] second;  // b\n"
-     "  bit        third;   // c\n"
-     "  uint       fourth;  // d\n"
-     "\n"
-     "  // comment 1\n"
-     "  int  fifth;\n"
-     "  // comment 2.1\n"
-     "  // comment 2.2\n"
-     "  uint sixth;\n"
-     "} timing_cfg_t;\n"},
-    {"typedef struct {\n"
-     "// comment\n"
-     "rand int r;\n"
-     "int a;\n"
-     "int aa = 0;\n"
-     "int aaa = 1; // comment\n"
-     "foo#(bar) z;\n"
-     "int [x:y] zz; // comment\n"
-     "int zzz[a:b];\n"
-     "} type_t;",
-     "typedef struct {\n"
-     "  // comment\n"
-     "  rand int   r;\n"
-     "  int        a;\n"
-     "  int        aa        = 0;\n"
-     "  int        aaa       = 1;  // comment\n"
-     "  foo #(bar) z;\n"
-     "  int [x:y]  zz;             // comment\n"
-     "  int        zzz[a:b];\n"
-     "} type_t;\n"},
-    {"typedef struct packed {\n"
-     "struct packed { bit q; logic qq; logic qqq; } a_few_qs;\n"
-     "struct packed {\n"
-     "logic [1:0]  q;\n"
-     "} one_q;\n"
-     "int q;\n"
-     "uint qq;\n"
-     "} nested_qs_t;",
-     "typedef struct packed {\n"
-     "  struct packed {\n"
-     "    bit   q;\n"
-     "    logic qq;\n"
-     "    logic qqq;\n"
-     "  } a_few_qs;\n"
-     "  struct packed {logic [1:0] q;} one_q;\n"
-     "  int  q;\n"
-     "  uint qq;\n"
-     "} nested_qs_t;\n"},
-    {"typedef struct packed {\n"
-     "struct packed { bit q; logic qq; logic qqq; } a_few_qs;\n"
-     "struct packed {\n"
-     "// comment\n"
-     "logic [1:0]  q;\n"
-     "} one_q;\n"
-     "int q;\n"
-     "uint qq;\n"
-     "} nested_qs_t;",
-     "typedef struct packed {\n"
-     "  struct packed {\n"
-     "    bit   q;\n"
-     "    logic qq;\n"
-     "    logic qqq;\n"
-     "  } a_few_qs;\n"
-     "  struct packed {\n"
-     "    // comment\n"
-     "    logic [1:0] q;\n"
-     "  } one_q;\n"
-     "  int  q;\n"
-     "  uint qq;\n"
-     "} nested_qs_t;\n"},
-    {"typedef struct {bit [3:0] first;\n"
-     "`ifdef MACRO\n"
-     "bit [31:0] second; generic_type_name_t third;\n"
-     "`endif\n"
-     "} type_t;\n",
-     "typedef struct {\n"
-     "  bit [3:0]           first;\n"
-     "`ifdef MACRO\n"
-     "  bit [31:0]          second;\n"
-     "  generic_type_name_t third;\n"
-     "`endif\n"
-     "} type_t;\n"},
-    {"typedef struct {\n"
-     "bit [3:0] first // c\n"
-     "; bit [31:0] second"
-     "// c\n"
-     "; generic_type_name_t third // c\n"
-     ";} type_t;\n",
-     "typedef struct {\n"
-     "  bit [3:0]           first  // c\n"
-     ";\n"
-     "  bit [31:0]          second  // c\n"
-     ";\n"
-     "  generic_type_name_t third  // c\n"
-     ";\n"
-     "} type_t;\n"},
-    {"struct {logic test1; // c\n"
-     "logic test2;} test3;\n",
-     "struct {\n"
-     "  logic test1;  // c\n"
-     "  logic test2;\n"
-     "} test3;\n"},
-    {"struct {\n"
-     "  /* t */ logic test1; /* t */\n"
-     "/* t */ logic test2; }test3;\n",
-     "struct {\n"
-     "  /* t */ logic test1;  /* t */\n"
-     "  /* t */ logic test2;\n"
-     "} test3;\n"},
-    // Continuation comment alignment
-    {"`define BAR 1 // A\n"
-     "module foo(); // B\n"
-     "wire baz;     // C\n"
-     "endmodule:foo // D\n",
-     "`define BAR 1 // A\n"
-     "module foo ();  // B\n"
-     "  wire baz;  // C\n"
-     "endmodule : foo  // D\n"},
-    {"`define BAR 1 // A\n"
-     "module foo(); // B\n"
-     "              // B.1\n"
-     "              // B.2\n"
-     "wire baz;     // C\n"
-     "              // C.1\n"
-     "              // C.2\n"
-     "endmodule:foo // D\n"
-     "              // D.1\n"
-     "              // D.2\n",
-     "`define BAR 1 // A\n"
-     "module foo ();  // B\n"
-     "                // B.1\n"
-     "                // B.2\n"
-     "  wire baz;  // C\n"
-     "             // C.1\n"
-     "             // C.2\n"
-     "endmodule : foo  // D\n"
-     "                 // D.1\n"
-     "                 // D.2\n"},
-    {"// W\n"
-     "`define BAR 1 // A\n"
-     "   // X\n"
-     "module foo(); // B\n"
-     "              // B.1\n"
-     "              // B.2\n"
-     " // Y\n"
-     "wire baz;     // C\n"
-     "              // C.1\n"
-     "              // C.2\n"
-     "    // Z\n"
-     "endmodule:foo // D\n"
-     "              // D.1\n"
-     "              // D.2\n",
-     "// W\n"
-     "`define BAR 1 // A\n"
-     "// X\n"
-     "module foo ();  // B\n"
-     "                // B.1\n"
-     "                // B.2\n"
-     "  // Y\n"
-     "  wire baz;  // C\n"
-     "             // C.1\n"
-     "             // C.2\n"
-     "  // Z\n"
-     "endmodule : foo  // D\n"
-     "                 // D.1\n"
-     "                 // D.2\n"},
-    {"module foo( // A\n"
-     "            // A.1\n"
-     "// X\n"
-     "input wire i1 [a:b], // B\n"
-     "                     // B.1\n"
-     "input [c:d] i2, // C\n"
-     "                // C.1\n"
-     "\n"
-     "// Y\n"
-     "output reg o1 // D\n"
-     "              // D.1\n"
-     ");endmodule:foo\n",
-     "module foo (  // A\n"
-     "              // A.1\n"
-     "    // X\n"
-     "    input wire       i1[a:b],  // B\n"
-     "                               // B.1\n"
-     "    input      [c:d] i2,       // C\n"
-     "                               // C.1\n"
-     "\n"
-     "    // Y\n"
-     "    output reg o1  // D\n"
-     "                   // D.1\n"
-     ");\n"
-     "endmodule : foo\n"},
-    // user defined type alignment
-    {
-        "module foo();\n"
-        "  logic [5:0][5:0] net_c;\n"
-        " messy_type_name [1:0] net_e;\n"
-        "endmodule\n",
-        "module foo ();\n"
-        "  logic           [5:0][5:0] net_c;\n"
-        "  messy_type_name [1:0]      net_e;\n"
-        "endmodule\n",
-    },
-    // Continuation comment's original starting column is allowed to differ from
-    // starting comment's original starting column at most by 1.
-    // Starting column of comments B and C will change after formatting.
-    // TODO: refine the column alignment depending on current vs previous line.
-    // https://github.com/chipsalliance/verible/pull/858#discussion_r672844015
-    {"module foo ();  // A\n"     // Starting comment; already on correct column
-     "                 // A.1\n"  // A's column + 1
-     "               // A.2\n"    // A's column - 1
-     "wire baz;      // B\n"      // Starting comment; will be moved left
-     "              // B.1\n"     // B's column - 1
-     "                // B.2\n"   // B's column + 1
-     "               // B.3\n"    // B's column
-     "endmodule:foo // C\n"       // Starting comment; will be moved right
-     "               // C.1\n"    // C's column + 1
-     "             // C.2\n",     // C's column - 1
-     "module foo ();  // A\n"
-     "                // A.1\n"
-     "                // A.2\n"
-     "  wire baz;  // B\n"
-     "             // B.1\n"
-     "             // B.2\n"
-     "             // B.3\n"
-     "endmodule : foo  // C\n"
-     "                 // C.1\n"
-     "                 // C.2\n"},
-    {"module foo\n"
-     "#(\n"
-     "  parameter type baz_t = struct packed { `BAZ(); }\n"
-     ")\n"
-     "();\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    parameter type\n"
-     "        baz_t = struct packed {\n"
-     "      `BAZ();\n"
-     "    }\n"
-     ") ();\n"
-     "endmodule\n"},
-    // The same as the previous test case, but without a semicolon at the macro
-    // call
-    {"module foo\n"
-     "#(\n"
-     "  parameter type baz_t = struct packed { `BAZ() }\n"
-     ")\n"
-     "();\n"
-     "endmodule\n",
-     "module foo #(\n"
-     "    parameter type\n"
-     "        baz_t = struct packed {\n"
-     "      `BAZ()\n"
-     "    }\n"
-     ") ();\n"
-     "endmodule\n"},
-    // Check that comments with too large starting column difference are not
-    // aligned as continuation comments.
-    // Check that starting comments are not linked with a comment in
-    // comment-only line above them, even when the starting column is the same.
-    // All comments in this test case are aligned independently, i.e. none are
-    // "continuation comments".
-    {"                // comment1\n"  // A's column, but is above it
-     "module foo ();  // A\n"
-     "                  // comment2\n"  // A's column + 2
-     "              // comment3\n"      // A's column - 2
-     "wire baz;     // B\n"
-     "            // comment4\n"      // B's column - 2
-     "                // comment5\n"  // B's column + 2
-     "              // comment6\n"    // B's column, but not directly under B
-     "endmodule:foo // C\n"
-     "                // comment7\n"  // C's column + 2
-     "              // comment8\n",   // C's column, but not directly under B
-     "// comment1\n"
-     "module foo ();  // A\n"
-     "  // comment2\n"
-     "  // comment3\n"
-     "  wire baz;  // B\n"
-     "  // comment4\n"
-     "  // comment5\n"
-     "  // comment6\n"
-     "endmodule : foo  // C\n"
-     "// comment7\n"
-     "// comment8\n"},
-    // Continuation comment alignment when a line with the starting comment is
-    // wrapped.
-    {"module foo(output logic very_very_very_very_long_name // A\n"
-     "                                                      // A.1\n"
-     "); endmodule\n",
-     "module foo (\n"
-     "    output logic\n"
-     "        very_very_very_very_long_name  // A\n"
-     "                                       // A.1\n"
-     ");\n"
-     "endmodule\n"},
-
-    // Attachment of ',' to elements in enum list (with and without comments)
-    {"typedef enum {\n"
-     "  first , // c1\n"
-     "  second\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "  first,  // c1\n"
-     "  second\n"
-     "} e;\n"},
-    {"typedef enum {\n"
-     "  first ,\n"
-     "  // c1\n"
-     "  second\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "  first,\n"
-     "  // c1\n"
-     "  second\n"
-     "} e;\n"},
-    {"typedef enum {\n"
-     "  first // c1\n"
-     "  , second\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "    first   // c1\n"
-     "  , second\n"
-     "} e;\n"},
-    {"typedef enum {\n"
-     "  first\n"
-     "  // c1\n"
-     "  , second\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "    first\n"
-     "  // c1\n"
-     "  , second\n"
-     "} e;\n"},
-    {"typedef enum {\n"
-     "  first // c1\n"
-     "  , // c2\n"
-     "  second\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "  first   // c1\n"
-     "  ,  // c2\n"
-     "  second\n"
-     "} e;\n"},
-    {"typedef enum {\n"
-     "  first\n"
-     "  // c1\n"
-     "  ,\n"
-     "  // c2\n"
-     "  second\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "  first\n"
-     "  // c1\n"
-     "  ,  // c2\n"
-     "  second\n"
-     "} e;\n"},
-    {"typedef enum {\n"
-     "  first\n"
-     "  // c1\n"
-     "  , // c2\n"
-     "  // c3\n"
-     "  second\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "  first\n"
-     "  // c1\n"
-     "  ,  // c2\n"
-     "  // c3\n"
-     "  second\n"
-     "} e;\n"},
-    {"typedef enum {\n"
-     "  // c1\n"
-     "  first\n"
-     "  // c2\n"
-     "  , // c3\n"
-     "  // c4\n"
-     "  second\n"
-     "  // c5\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "  // c1\n"
-     "  first\n"
-     "  // c2\n"
-     "  ,  // c3\n"
-     "  // c4\n"
-     "  second\n"
-     "  // c5\n"
-     "} e;\n"},
-    {"typedef enum {\n"
-     "  // c1\n"
-     "  // c1+\n"
-     "  first // c2\n"
-     "        // c2+\n"
-     "  , // c3\n"
-     "    // c3+\n"
-     "  // c4\n"
-     "  // c4+\n"
-     "  second // c5\n"
-     "         // c5+\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "  // c1\n"
-     "  // c1+\n"
-     "  first   // c2\n"
-     "          // c2+\n"
-     "  ,  // c3\n"
-     "     // c3+\n"
-     "  // c4\n"
-     "  // c4+\n"
-     "  second  // c5\n"
-     "          // c5+\n"
-     "} e;\n"},
-    {"typedef enum {\n"
-     "  first , /* c1 */\n"
-     "  second\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "  first,  /* c1 */\n"
-     "  second\n"
-     "} e;\n"},
-    {"typedef enum {\n"
-     "  first ,\n"
-     "  /* c1 */\n"
-     "  second\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "  first,\n"
-     "  /* c1 */\n"
-     "  second\n"
-     "} e;\n"},
-    {"typedef enum {\n"
-     "  first /* c1 */\n"
-     "  , second\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "    first   /* c1 */\n"
-     "  , second\n"
-     "} e;\n"},
-    {"typedef enum {\n"
-     "  first\n"
-     "  /* c1 */\n"
-     "  , second\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "    first\n"
-     "  /* c1 */\n"
-     "  , second\n"
-     "} e;\n"},
-    {"typedef enum {\n"
-     "  first /* c1 */\n"
-     "  , /* c2 */\n"
-     "  second\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "  first   /* c1 */\n"
-     "  ,  /* c2 */\n"
-     "  second\n"
-     "} e;\n"},
-    {"typedef enum {\n"
-     "  first\n"
-     "  /* c1 */\n"
-     "  ,\n"
-     "  /* c2 */\n"
-     "  second\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "  first\n"
-     "  /* c1 */\n"
-     "  ,\n"
-     "  /* c2 */\n"
-     "  second\n"
-     "} e;\n"},
-    {"typedef enum {\n"
-     "  /* c1 */\n"
-     "  first\n"
-     "  /* c2 */\n"
-     "  , /* c3 */\n"
-     "  /* c4 */\n"
-     "  second\n"
-     "  /* c5 */\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "  /* c1 */\n"
-     "  first\n"
-     "  /* c2 */\n"
-     "  ,  /* c3 */\n"
-     "  /* c4 */\n"
-     "  second\n"
-     "  /* c5 */\n"
-     "} e;\n"},
-    {"typedef enum {\n"
-     "  /* c1  */\n"
-     "  /* c1+ */\n"
-     "  first /* c2  */\n"
-     "        /* c2+ */\n"
-     "  , /* c3  */\n"
-     "    /* c3+ */\n"
-     "  /* c4  */\n"
-     "  /* c4+ */\n"
-     "  second /* c5  */\n"
-     "         /* c5+ */\n"
-     "} e;\n",
-     "typedef enum {\n"
-     "  /* c1  */\n"
-     "  /* c1+ */\n"
-     "  first   /* c2  */\n"
-     "  /* c2+ */\n"
-     "  ,  /* c3  */\n"
-     "  /* c3+ */\n"
-     "  /* c4  */\n"
-     "  /* c4+ */\n"
-     "  second  /* c5  */\n"
-     "  /* c5+ */\n"
-     "} e;\n"},
-    {"module m;\n"
-     "typedef enum {\n"
-     "  first,\n"
-     "  second\n"
-     "} // c\n"
-     "e;\n"
-     "endmodule\n",
-     "module m;\n"
-     "  typedef enum {\n"
-     "    first,\n"
-     "    second\n"
-     "  }  // c\n"
-     "  e;\n"
-     "endmodule\n"},
-    // Attachment of ';' preceded by EOL comment
-    {"module m;\n"
-     "typedef enum {\n"
-     "  first,\n"
-     "  second\n"
-     "} e // c\n"
-     ";\n"
-     "endmodule\n",
-     "module m;\n"
-     "  typedef enum {\n"
-     "    first,\n"
-     "    second\n"
-     "  } e  // c\n"
-     "  ;\n"
-     "endmodule\n"},
-    {"module m;\n"
-     "typedef enum {\n"
-     "  first,\n"
-     "  second\n"
-     "} // c1\n"
-     "e // c2\n"
-     ";\n"
-     "endmodule\n",
-     "module m;\n"
-     "  typedef enum {\n"
-     "    first,\n"
-     "    second\n"
-     "  }  // c1\n"
-     "  e  // c2\n"
-     "  ;\n"
-     "endmodule\n"},
-    {"assign foo = bar\n"
-     "// comment\n"
-     ";\n",
-     "assign foo = bar\n"
-     "    // comment\n"
-     "    ;\n"},
-    {"assign foo = bar // comment\n"
-     ";\n",
-     "assign foo = bar  // comment\n"
-     ";\n"},
-
-    // Attachment of ',' to elements in PortActualList (with and without
-    // comments)
-    {"module foo;\n"
-     "  bar foobar(\n"
-     "    .first(1) // c1\n"
-     "    ,\n"
-     "    .second(2) // c2\n"
-     "  );\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar foobar (\n"
-     "        .first (1)  // c1\n"
-     "      , .second(2)  // c2\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar foobar(\n"
-     "    .first(1) // c1\n"
-     "    , .second(2) // c2\n"
-     "  );\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar foobar (\n"
-     "        .first (1)  // c1\n"
-     "      , .second(2)  // c2\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar foobar(\n"
-     "    .first(1)\n"
-     "    // c1\n"
-     "    ,\n"
-     "    .second(2)\n"
-     "    // c2\n"
-     "  );\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar foobar (\n"
-     "        .first (1)\n"
-     "      // c1\n"
-     "      , .second(2)\n"
-     "      // c2\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar foobar(\n"
-     "    .first(1)\n"
-     "    // c1\n"
-     "    , .second(2)\n"
-     "    // c2\n"
-     "  );\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar foobar (\n"
-     "        .first (1)\n"
-     "      // c1\n"
-     "      , .second(2)\n"
-     "      // c2\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar foobar(\n"
-     "    .first(1)\n"
-     "    // c1\n"
-     "    , // c2\n"
-     "    .second(2)\n"
-     "    // c3\n"
-     "  );\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar foobar (\n"
-     "      .first (1)\n"
-     "      // c1\n"
-     "      ,  // c2\n"
-     "      .second(2)\n"
-     "      // c3\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar foobar(\n"
-     "    // c1\n"
-     "    // c1+\n"
-     "    .first(1) // c2\n"
-     "              // c2+\n"
-     "    , // c3\n"
-     "      // c3+\n"
-     "    .second(2) // c4\n"
-     "               // c4+\n"
-     "    // c5\n"
-     "    // c5+\n"
-     "  );\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar foobar (\n"
-     "      // c1\n"
-     "      // c1+\n"
-     "      .first (1)  // c2\n"
-     "                  // c2+\n"
-     "      ,  // c3\n"
-     "         // c3+\n"
-     "      .second(2)  // c4\n"
-     "                  // c4+\n"
-     "      // c5\n"
-     "      // c5+\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar foobar(\n"
-     "    .first(1) /* c1 */\n"
-     "    ,\n"
-     "    .second(2) /* c2 */\n"
-     "  );\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar foobar (\n"
-     "        .first (1)  /* c1 */\n"
-     "      , .second(2)  /* c2 */\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar foobar(\n"
-     "    /* c1 */ .first(1),\n"
-     "    /* c2 */ .second(2)\n"
-     "  );\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar foobar (\n"
-     "      /* c1 */.first (1),\n"
-     "      /* c2 */.second(2)\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar foobar(\n"
-     "    .first(1) /* c1 */\n"
-     "    , .second(2) /* c2 */\n"
-     "  );\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar foobar (\n"
-     "        .first (1)  /* c1 */\n"
-     "      , .second(2)  /* c2 */\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar foobar(\n"
-     "    /* c1 */.first(1)\n"
-     "    /* c2 */, .second(2)\n"
-     "  );\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar foobar (\n"
-     "      /* c1 */  .first (1)\n"
-     "      /* c2 */, .second(2)\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar foobar(\n"
-     "    .first(1)\n"
-     "    /* c1 */\n"
-     "    ,\n"
-     "    .second(2)\n"
-     "    /* c2 */\n"
-     "  );\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar foobar (\n"
-     "        .first (1)\n"
-     "      /* c1 */\n"
-     "      , .second(2)\n"
-     "      /* c2 */\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar foobar(\n"
-     "    .first(1)\n"
-     "    /* c1 */\n"
-     "    , .second(2)\n"
-     "    /* c2 */\n"
-     "  );\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar foobar (\n"
-     "        .first (1)\n"
-     "      /* c1 */\n"
-     "      , .second(2)\n"
-     "      /* c2 */\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar foobar(\n"
-     "    .first(1)\n"
-     "    /* c1 */\n"
-     "    , /* c2 */\n"
-     "    .second(2)\n"
-     "    /* c3 */\n"
-     "  );\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar foobar (\n"
-     "      .first (1)\n"
-     "      /* c1 */\n"
-     "      ,  /* c2 */\n"
-     "      .second(2)\n"
-     "      /* c3 */\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar foobar(\n"
-     "    .first(1)\n"
-     "    /* c1 */\n"
-     "    , /* c2 */\n"
-     "    .second(2)\n"
-     "    /* c3 */\n"
-     "  );\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar foobar (\n"
-     "      .first (1)\n"
-     "      /* c1 */\n"
-     "      ,  /* c2 */\n"
-     "      .second(2)\n"
-     "      /* c3 */\n"
-     "  );\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar foobar(\n"
-     "    /* c1  */\n"
-     "    /* c1+ */\n"
-     "    .first(1) /* c2  */\n"
-     "              /* c2+ */\n"
-     "    , /* c3  */\n"
-     "      /* c3+ */\n"
-     "    .second(2) /* c4  */\n"
-     "               /* c4+ */\n"
-     "    /* c5  */\n"
-     "    /* c5+ */\n"
-     "  );\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar foobar (\n"
-     "      /* c1  */\n"
-     "      /* c1+ */\n"
-     "      .first (1)  /* c2  */\n"
-     "      /* c2+ */\n"
-     "      ,  /* c3  */\n"
-     "      /* c3+ */\n"
-     "      .second(2)  /* c4  */\n"
-     "      /* c4+ */\n"
-     "      /* c5  */\n"
-     "      /* c5+ */\n"
-     "  );\n"
-     "endmodule\n"},
-
-    // Attachment of ',' to elements in ActualNamedParameterList (with and
-    // without comments)
-    {"module foo;\n"
-     "  bar#(\n"
-     "    .first(1) // c1\n"
-     "    ,\n"
-     "    .second(2) // c2\n"
-     "  ) baz ();\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "        .first (1)  // c1\n"
-     "      , .second(2)  // c2\n"
-     "  ) baz ();\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar#(\n"
-     "    .first(1) // c1\n"
-     "    , .second(2) // c2\n"
-     "  ) baz ();\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "        .first (1)  // c1\n"
-     "      , .second(2)  // c2\n"
-     "  ) baz ();\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar#(\n"
-     "    .first(1)\n"
-     "    // c1\n"
-     "    ,\n"
-     "    .second(2)\n"
-     "    // c2\n"
-     "  ) baz ();\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "        .first (1)\n"
-     "      // c1\n"
-     "      , .second(2)\n"
-     "      // c2\n"
-     "  ) baz ();\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar#(\n"
-     "    .first(1)\n"
-     "    // c1\n"
-     "    , .second(2)\n"
-     "    // c2\n"
-     "  ) baz ();\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "        .first (1)\n"
-     "      // c1\n"
-     "      , .second(2)\n"
-     "      // c2\n"
-     "  ) baz ();\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar#(\n"
-     "    .first(1)\n"
-     "    // c1\n"
-     "    , // c2\n"
-     "    .second(2)\n"
-     "    // c3\n"
-     "  ) baz ();\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "      .first (1)\n"
-     "      // c1\n"
-     "      ,  // c2\n"
-     "      .second(2)\n"
-     "      // c3\n"
-     "  ) baz ();\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar#(\n"
-     "    // c1\n"
-     "    // c1+\n"
-     "    .first(1) // c2\n"
-     "              // c2+\n"
-     "    , // c3\n"
-     "      // c3+\n"
-     "    .second(2) // c4\n"
-     "               // c4+\n"
-     "    // c5\n"
-     "    // c5+\n"
-     "  ) baz ();\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "      // c1\n"
-     "      // c1+\n"
-     "      .first (1)  // c2\n"
-     "                  // c2+\n"
-     "      ,  // c3\n"
-     "         // c3+\n"
-     "      .second(2)  // c4\n"
-     "                  // c4+\n"
-     "      // c5\n"
-     "      // c5+\n"
-     "  ) baz ();\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar#(\n"
-     "    .first(1) /* c1 */\n"
-     "    ,\n"
-     "    .second(2) /* c2 */\n"
-     "  ) baz ();\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "        .first (1)  /* c1 */\n"
-     "      , .second(2)  /* c2 */\n"
-     "  ) baz ();\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar#(\n"
-     "    /* c1 */ .first(1),\n"
-     "    /* c2 */ .second(2)\n"
-     "  ) baz ();\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "      /* c1 */.first (1),\n"
-     "      /* c2 */.second(2)\n"
-     "  ) baz ();\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar#(\n"
-     "    .first(1) /* c1 */\n"
-     "    , .second(2) /* c2 */\n"
-     "  ) baz ();\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "        .first (1)  /* c1 */\n"
-     "      , .second(2)  /* c2 */\n"
-     "  ) baz ();\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar#(\n"
-     "    /* c1 */.first(1)\n"
-     "    /* c2 */, .second(2)\n"
-     "  ) baz ();\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "      /* c1 */  .first (1)\n"
-     "      /* c2 */, .second(2)\n"
-     "  ) baz ();\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar#(\n"
-     "    .first(1)\n"
-     "    /* c1 */\n"
-     "    ,\n"
-     "    .second(2)\n"
-     "    /* c2 */\n"
-     "  ) baz ();\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "        .first (1)\n"
-     "      /* c1 */\n"
-     "      , .second(2)\n"
-     "      /* c2 */\n"
-     "  ) baz ();\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar#(\n"
-     "    .first(1)\n"
-     "    /* c1 */\n"
-     "    , .second(2)\n"
-     "    /* c2 */\n"
-     "  ) baz ();\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "        .first (1)\n"
-     "      /* c1 */\n"
-     "      , .second(2)\n"
-     "      /* c2 */\n"
-     "  ) baz ();\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar#(\n"
-     "    .first(1)\n"
-     "    /* c1 */\n"
-     "    , /* c2 */\n"
-     "    .second(2)\n"
-     "    /* c3 */\n"
-     "  ) baz ();\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "      .first (1)\n"
-     "      /* c1 */\n"
-     "      ,  /* c2 */\n"
-     "      .second(2)\n"
-     "      /* c3 */\n"
-     "  ) baz ();\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar#(\n"
-     "    .first(1)\n"
-     "    /* c1 */\n"
-     "    , /* c2 */\n"
-     "    .second(2)\n"
-     "    /* c3 */\n"
-     "  ) baz ();\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "      .first (1)\n"
-     "      /* c1 */\n"
-     "      ,  /* c2 */\n"
-     "      .second(2)\n"
-     "      /* c3 */\n"
-     "  ) baz ();\n"
-     "endmodule\n"},
-    {"module foo;\n"
-     "  bar#(\n"
-     "    /* c1  */\n"
-     "    /* c1+ */\n"
-     "    .first(1) /* c2  */\n"
-     "              /* c2+ */\n"
-     "    , /* c3  */\n"
-     "      /* c3+ */\n"
-     "    .second(2) /* c4  */\n"
-     "               /* c4+ */\n"
-     "    /* c5  */\n"
-     "    /* c5+ */\n"
-     "  ) baz ();\n"
-     "endmodule\n",
-     "module foo;\n"
-     "  bar #(\n"
-     "      /* c1  */\n"
-     "      /* c1+ */\n"
-     "      .first (1)  /* c2  */\n"
-     "      /* c2+ */\n"
-     "      ,  /* c3  */\n"
-     "      /* c3+ */\n"
-     "      .second(2)  /* c4  */\n"
-     "      /* c4+ */\n"
-     "      /* c5  */\n"
-     "      /* c5+ */\n"
-     "  ) baz ();\n"
-     "endmodule\n"},
-
-    // ":" and "'{" in a single line
-    {"assign foo[2] =\n"
-     "'{\n"
-     "bar: 1'b1,  // c\n"
-     "baz: 1'b0,  // c\n"
-     "foobar: CONSTANT,\n"
-     "qux:\n"
-     "{\n"
-     "a,  // c\n"
-     "b\n"
-     "}\n"
-     "};\n",
-     "assign foo[2] = '{\n"
-     "        bar: 1'b1,  // c\n"
-     "        baz: 1'b0,  // c\n"
-     "        foobar: CONSTANT,\n"
-     "        qux: {\n"
-     "          a,  // c\n"
-     "          b\n"
-     "        }\n"
-     "    };\n"},
-    {"assign a = (b) ? '{c: d[e], f: '1} : g;\n",
-     "assign a = (b) ?\n"
-     "    '{c: d[e], f: '1}\n"
-     "    : g;\n"},
-
-    // -----------------------------------------------------------------
-    // Comments around `else`.
-    // Check whether `else` partition is found correctly and that actual code is
-    // not appended to EOL comments.
-
-    // generate if
-
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "// eol-c\n"
-     "else if (r) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  // eol-c\n"
-     "  else if (r) assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "else if (r) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  // eol-c\n"
-     "  // eol-c\n"
-     "  else if (r) assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "else // eol-c\n"
-     "if (r) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  else  // eol-c\n"
-     "  if (r) assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "else\n"
-     "// eol-c\n"
-     "if (r) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  else\n"
-     "  // eol-c\n"
-     "  if (r)\n"
-     "    assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "if (r) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  // eol-c\n"
-     "  else  // eol-c\n"
-     "  if (r) assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "if (r) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  else  // eol-c\n"
-     "  // eol-c\n"
-     "  if (r)\n"
-     "    assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "if (r) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  // eol-c\n"
-     "  else  // eol-c\n"
-     "  // eol-c\n"
-     "  if (r)\n"
-     "    assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "if\n"
-     "// eol-c\n"
-     "(r) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  // eol-c\n"
-     "  else  // eol-c\n"
-     "  // eol-c\n"
-     "  if\n"
-     "      // eol-c\n"
-     "      (r)\n"
-     "    assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "if\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "(r) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  // eol-c\n"
-     "  // eol-c\n"
-     "  else  // eol-c\n"
-     "  // eol-c\n"
-     "  // eol-c\n"
-     "  if\n"
-     "      // eol-c\n"
-     "      // eol-c\n"
-     "      (r)\n"
-     "    assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-
-    // generate if with function call
-
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "// eol-c\n"
-     "else if (foo(x) == bar(1, 2)) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  // eol-c\n"
-     "  else if (foo(x) == bar(1, 2))\n"
-     "    assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "else if (foo(x) == bar(1, 2)) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  // eol-c\n"
-     "  // eol-c\n"
-     "  else if (foo(x) == bar(1, 2))\n"
-     "    assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "else // eol-c\n"
-     "if (foo(x) == bar(1, 2)) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  else  // eol-c\n"
-     "  if (foo(x) == bar(1, 2)) assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "else\n"
-     "// eol-c\n"
-     "if (foo(x) == bar(1, 2)) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  else\n"
-     "  // eol-c\n"
-     "  if (foo(\n"
-     "          x\n"
-     "      ) == bar(\n"
-     "          1, 2\n"
-     "      ))\n"
-     "    assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "if (foo(x) == bar(1, 2)) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  // eol-c\n"
-     "  else  // eol-c\n"
-     "  if (foo(x) == bar(1, 2)) assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "if (foo(x) == bar(1, 2)) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  else  // eol-c\n"
-     "  // eol-c\n"
-     "  if (foo(\n"
-     "          x\n"
-     "      ) == bar(\n"
-     "          1, 2\n"
-     "      ))\n"
-     "    assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "if (foo(x) == bar(1, 2)) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  // eol-c\n"
-     "  else  // eol-c\n"
-     "  // eol-c\n"
-     "  if (foo(\n"
-     "          x\n"
-     "      ) == bar(\n"
-     "          1, 2\n"
-     "      ))\n"
-     "    assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "if\n"
-     "// eol-c\n"
-     "(foo(x) == bar(1, 2)) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  // eol-c\n"
-     "  else  // eol-c\n"
-     "  // eol-c\n"
-     "  if\n"
-     "      // eol-c\n"
-     "      (foo(\n"
-     "          x\n"
-     "      ) == bar(\n"
-     "          1, 2\n"
-     "      ))\n"
-     "    assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "if (x) assign z=y;\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "if\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "(foo(x) == bar(1, 2)) assign z=w;\n"
-     "else assign x=y;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  if (x) assign z = y;\n"
-     "  // eol-c\n"
-     "  // eol-c\n"
-     "  else  // eol-c\n"
-     "  // eol-c\n"
-     "  // eol-c\n"
-     "  if\n"
-     "      // eol-c\n"
-     "      // eol-c\n"
-     "      (foo(\n"
-     "          x\n"
-     "      ) == bar(\n"
-     "          1, 2\n"
-     "      ))\n"
-     "    assign z = w;\n"
-     "  else assign x = y;\n"
-     "endmodule\n"},
-
-    // else begin
-
-    {"module zx;\n"
-     "always begin\n"
-     "if (a) b<=1;\n"
-     "// eol-c\n"
-     "else begin b<=2;\n"
-     "end\n"
-     "end\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always begin\n"
-     "    if (a) b <= 1;\n"
-     "    // eol-c\n"
-     "    else begin\n"
-     "      b <= 2;\n"
-     "    end\n"
-     "  end\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always begin\n"
-     "if (a) b<=1;\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "else begin b<=2;\n"
-     "end\n"
-     "end\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always begin\n"
-     "    if (a) b <= 1;\n"
-     "    // eol-c\n"
-     "    // eol-c\n"
-     "    else begin\n"
-     "      b <= 2;\n"
-     "    end\n"
-     "  end\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always begin\n"
-     "if (a) b<=1;\n"
-     "else // eol-c\n"
-     "begin b<=2;\n"
-     "end\n"
-     "end\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always begin\n"
-     "    if (a) b <= 1;\n"
-     "    else  // eol-c\n"
-     "    begin\n"
-     "      b <= 2;\n"
-     "    end\n"
-     "  end\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always begin\n"
-     "if (a) b<=1;\n"
-     "else\n"
-     "// eol-c\n"
-     "begin b<=2;\n"
-     "end\n"
-     "end\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always begin\n"
-     "    if (a) b <= 1;\n"
-     "    else\n"
-     "    // eol-c\n"
-     "    begin\n"
-     "      b <= 2;\n"
-     "    end\n"
-     "  end\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always begin\n"
-     "if (a) b<=1;\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "begin b<=2;\n"
-     "end\n"
-     "end\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always begin\n"
-     "    if (a) b <= 1;\n"
-     "    // eol-c\n"
-     "    else  // eol-c\n"
-     "    begin\n"
-     "      b <= 2;\n"
-     "    end\n"
-     "  end\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always begin\n"
-     "if (a) b<=1;\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "begin b<=2;\n"
-     "end\n"
-     "end\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always begin\n"
-     "    if (a) b <= 1;\n"
-     "    else  // eol-c\n"
-     "    // eol-c\n"
-     "    begin\n"
-     "      b <= 2;\n"
-     "    end\n"
-     "  end\n"
-     "endmodule\n"},
-
-    // else if
-
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "// eol-c\n"
-     "else if (set) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    // eol-c\n"
-     "    else if (set) assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "else if (set) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    // eol-c\n"
-     "    // eol-c\n"
-     "    else if (set) assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "else // eol-c\n"
-     "if (set) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    else  // eol-c\n"
-     "    if (set) assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "else\n"
-     "// eol-c\n"
-     "if (set) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    else\n"
-     "    // eol-c\n"
-     "    if (set)\n"
-     "      assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "if (set) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    // eol-c\n"
-     "    else  // eol-c\n"
-     "    if (set) assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "if (set) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    else  // eol-c\n"
-     "    // eol-c\n"
-     "    if (set)\n"
-     "      assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "if (set) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    // eol-c\n"
-     "    else  // eol-c\n"
-     "    // eol-c\n"
-     "    if (set)\n"
-     "      assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "if\n"
-     "// eol-c\n"
-     "(set) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    // eol-c\n"
-     "    else  // eol-c\n"
-     "    // eol-c\n"
-     "    if\n"
-     "        // eol-c\n"
-     "        (set)\n"
-     "      assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "if\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "(set) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    // eol-c\n"
-     "    // eol-c\n"
-     "    else  // eol-c\n"
-     "    // eol-c\n"
-     "    // eol-c\n"
-     "    if\n"
-     "        // eol-c\n"
-     "        // eol-c\n"
-     "        (set)\n"
-     "      assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-
-    // else if with function call
-
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "// eol-c\n"
-     "else if (foo(clr, set, 1)) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    // eol-c\n"
-     "    else if (foo(clr, set, 1))\n"
-     "      assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "else if (foo(clr, set, 1)) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    // eol-c\n"
-     "    // eol-c\n"
-     "    else if (foo(clr, set, 1))\n"
-     "      assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "else // eol-c\n"
-     "if (foo(clr, set, 1)) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    else  // eol-c\n"
-     "    if (foo(clr, set, 1)) assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "else\n"
-     "// eol-c\n"
-     "if (foo(clr, set, 1)) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    else\n"
-     "    // eol-c\n"
-     "    if (foo(\n"
-     "            clr, set, 1\n"
-     "        ))\n"
-     "      assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "if (foo(clr, set, 1)) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    // eol-c\n"
-     "    else  // eol-c\n"
-     "    if (foo(clr, set, 1)) assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "if (foo(clr, set, 1)) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    else  // eol-c\n"
-     "    // eol-c\n"
-     "    if (foo(\n"
-     "            clr, set, 1\n"
-     "        ))\n"
-     "      assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "if (foo(clr, set, 1)) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    // eol-c\n"
-     "    else  // eol-c\n"
-     "    // eol-c\n"
-     "    if (foo(\n"
-     "            clr, set, 1\n"
-     "        ))\n"
-     "      assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "if\n"
-     "// eol-c\n"
-     "(foo(clr, set, 1)) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    // eol-c\n"
-     "    else  // eol-c\n"
-     "    // eol-c\n"
-     "    if\n"
-     "        // eol-c\n"
-     "        (foo(\n"
-     "            clr, set, 1\n"
-     "        ))\n"
-     "      assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-    {"module zx;\n"
-     "always @(clr or set)\n"
-     "if (clr) assign q=0;\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "else // eol-c\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "if\n"
-     "// eol-c\n"
-     "// eol-c\n"
-     "(foo(clr, set, 1)) assign q=1;\n"
-     "else deassign q;\n"
-     "endmodule\n",
-     "module zx;\n"
-     "  always @(clr or set)\n"
-     "    if (clr) assign q = 0;\n"
-     "    // eol-c\n"
-     "    // eol-c\n"
-     "    else  // eol-c\n"
-     "    // eol-c\n"
-     "    // eol-c\n"
-     "    if\n"
-     "        // eol-c\n"
-     "        // eol-c\n"
-     "        (foo(\n"
-     "            clr, set, 1\n"
-     "        ))\n"
-     "      assign q = 1;\n"
-     "    else deassign q;\n"
-     "endmodule\n"},
-
-    // -----------------------------------------------------------------
-    // Comments around and inside macro calls.
-
-    // between identifier and '(', no args
-
-    {"// verilog_syntax: parse-as-module-body",
-     "// verilog_syntax: parse-as-module-body\n"},
-    {"// verilog_syntax: parse-as-statements",
-     "// verilog_syntax: parse-as-statements\n"},
-    {"// verilog_syntax: parse-as-class-body",
-     "// verilog_syntax: parse-as-class-body\n"},
-    {"// verilog_syntax: parse-as-package-body",
-     "// verilog_syntax: parse-as-package-body\n"},
-    {"// verilog_syntax: parse-as-library-map",
-     "// verilog_syntax: parse-as-library-map\n"},
-    {"// verilog_syntax: does-not-exist-mode",
-     "// verilog_syntax: does-not-exist-mode\n"},
-    {"// verilog_syntax: parse-as-module-body\n",
-     "// verilog_syntax: parse-as-module-body\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "// comment",
-     "// verilog_syntax: parse-as-module-body\n"
-     "// comment\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c */ ();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c */ ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c1 */ /* c2 */ ();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */  /* c2 */ ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c */\n"
-     "();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c */\n"
-     "    ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c1 */ /* c2 */\n"
-     "();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */  /* c2 */\n"
-     "    ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz // c\n"
-     "();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c\n"
-     "    ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c1 */ // c2\n"
-     "();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */  // c2\n"
-     "    ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c */ ();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c */ ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c1 */ /* c2 */ ();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c1 */  /* c2 */ ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c */\n"
-     "();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c */\n"
-     "    ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c1 */ /* c2 */\n"
-     "();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c1 */  /* c2 */\n"
-     "    ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "// c\n"
-     "();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    // c\n"
-     "    ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c1 */ // c2\n"
-     "();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c1 */  // c2\n"
-     "    ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     "();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c1 */\n"
-     "    /* c2 */\n"
-     "    ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "// c1\n"
-     "// c2\n"
-     "();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    // c1\n"
-     "    // c2\n"
-     "    ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c1 */\n"
-     "/* c2 */ ();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    /* c2 */ ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz // c1\n"
-     "/* c2 */ ();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c1\n"
-     "    /* c2 */ ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */ ();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */ ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c1 */\n"
-     "/* c2 */\n"
-     "();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    /* c2 */\n"
-     "    ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz // c1\n"
-     "/* c2 */\n"
-     "();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c1\n"
-     "    /* c2 */\n"
-     "    ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c1 */\n"
-     "// c2\n"
-     "();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    // c2\n"
-     "    ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz // c1\n"
-     "// c2\n"
-     "();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c1\n"
-     "    // c2\n"
-     "    ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     "();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */\n"
-     "    ();\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz // c1\n"
-     "// c2\n"
-     "// c3\n"
-     "();\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c1\n"
-     "    // c2\n"
-     "    // c3\n"
-     "    ();\n"},
-
-    // between identifier and '(', with arg
-
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c */ (arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c */ (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c1 */ /* c2 */ (arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */  /* c2 */ (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c */\n"
-     "(arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c */\n"
-     "    (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c1 */ /* c2 */\n"
-     "(arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */  /* c2 */\n"
-     "    (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz // c\n"
-     "(arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c\n"
-     "    (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c1 */ // c2\n"
-     "(arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */  // c2\n"
-     "    (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c */ (arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c */ (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c1 */ /* c2 */ (arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c1 */  /* c2 */ (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c */\n"
-     "(arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c */\n"
-     "    (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c1 */ /* c2 */\n"
-     "(arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c1 */  /* c2 */\n"
-     "    (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "// c\n"
-     "(arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    // c\n"
-     "    (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c1 */ // c2\n"
-     "(arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c1 */  // c2\n"
-     "    (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     "(arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c1 */\n"
-     "    /* c2 */\n"
-     "    (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "// c1\n"
-     "// c2\n"
-     "(arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    // c1\n"
-     "    // c2\n"
-     "    (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c1 */\n"
-     "/* c2 */ (arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    /* c2 */ (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz // c1\n"
-     "/* c2 */ (arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c1\n"
-     "    /* c2 */ (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */ (arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */ (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c1 */\n"
-     "/* c2 */\n"
-     "(arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    /* c2 */\n"
-     "    (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz // c1\n"
-     "/* c2 */\n"
-     "(arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c1\n"
-     "    /* c2 */\n"
-     "    (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c1 */\n"
-     "// c2\n"
-     "(arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    // c2\n"
-     "    (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz // c1\n"
-     "// c2\n"
-     "(arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c1\n"
-     "    // c2\n"
-     "    (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     "(arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */\n"
-     "    (arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz // c1\n"
-     "// c2\n"
-     "// c3\n"
-     "(arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c1\n"
-     "    // c2\n"
-     "    // c3\n"
-     "    (arg);\n"},
-
-    // after '(', no args
-
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c1 */ /* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c1 */  /* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c1 */ /* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c1 */  /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(// c\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  // c\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c1 */ // c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c1 */  // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "/* c */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "/* c */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "/* c1 */ /* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "/* c1 */  /* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "/* c */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "    /* c */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "/* c1 */ /* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "    /* c1 */  /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "// c\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "    // c\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "/* c1 */ // c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "    /* c1 */  // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "    /* c1 */\n"
-     "    /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "// c1\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "    // c1\n"
-     "    // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c1 */\n"
-     "/* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c1 */\n"
-     "/* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(// c1\n"
-     "/* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  // c1\n"
-     "/* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c1 */\n"
-     "    /* c2 */\n"
-     "/* c3 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c1 */\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c1 */\n"
-     "    /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(// c1\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  // c1\n"
-     "    /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c1 */\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c1 */\n"
-     "    // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(// c1\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  // c1\n"
-     "    // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  // c1\n"
-     "    // c2\n"
-     "    // c3\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */ /* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */  /* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */ /* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */  /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */ // c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */  // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */ /* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */  /* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */ /* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c1 */  /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "// c\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    // c\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */ // c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c1 */  // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c1 */\n"
-     "    /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "// c1\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    // c1\n"
-     "    // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "/* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "/* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c1\n"
-     "/* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c1\n"
-     "/* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    /* c2 */\n"
-     "/* c3 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c1\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c1\n"
-     "    /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c1\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c1\n"
-     "    // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c1\n"
-     "    // c2\n"
-     "    // c3\n"
-     ");\n"},
-
-    // after '(', with arg
-
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c */arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c */ arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c1 */ /* c2 */arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c1 */  /* c2 */ arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c */\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c */\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c1 */ /* c2 */\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c1 */  /* c2 */\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(// c\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  // c\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c1 */ // c2\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c1 */  // c2\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "/* c */arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "    /* c */ arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "/* c1 */ /* c2 */arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "    /* c1 */  /* c2 */ arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "/* c */\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "    /* c */\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "/* c1 */ /* c2 */\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "    /* c1 */  /* c2 */\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "// c\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "    // c\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "/* c1 */ // c2\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "    /* c1 */  // c2\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "    /* c1 */\n"
-     "    /* c2 */\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "// c1\n"
-     "// c2\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(\n"
-     "    // c1\n"
-     "    // c2\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c1 */\n"
-     "/* c2 */arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c1 */\n"
-     "    /* c2 */ arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(// c1\n"
-     "/* c2 */arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  // c1\n"
-     "    /* c2 */ arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */ arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c1 */\n"
-     "/* c2 */\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c1 */\n"
-     "    /* c2 */\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(// c1\n"
-     "/* c2 */\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  // c1\n"
-     "    /* c2 */\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c1 */\n"
-     "// c2\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c1 */\n"
-     "    // c2\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(// c1\n"
-     "// c2\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  // c1\n"
-     "    // c2\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(// c1\n"
-     "// c2\n"
-     "// c3\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(  // c1\n"
-     "    // c2\n"
-     "    // c3\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c */arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c */ arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */ /* c2 */arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */  /* c2 */ arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c */\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c */\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */ /* c2 */\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */  /* c2 */\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */ // c2\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */  // c2\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c */arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c */ arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */ /* c2 */arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c1 */  /* c2 */ arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c */\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c */\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */ /* c2 */\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c1 */  /* c2 */\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "// c\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    // c\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */ // c2\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c1 */  // c2\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c1 */\n"
-     "    /* c2 */\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "// c1\n"
-     "// c2\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    // c1\n"
-     "    // c2\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "/* c2 */arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    /* c2 */ arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c1\n"
-     "/* c2 */arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c1\n"
-     "    /* c2 */ arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */ arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "/* c2 */\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    /* c2 */\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c1\n"
-     "/* c2 */\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c1\n"
-     "    /* c2 */\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "// c2\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    // c2\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c1\n"
-     "// c2\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c1\n"
-     "    // c2\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */\n"
-     "    arg);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c1\n"
-     "// c2\n"
-     "// c3\n"
-     "arg);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c1\n"
-     "    // c2\n"
-     "    // c3\n"
-     "    arg);\n"},
-
-    // after single arg
-
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg/* c */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg  /* c */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg/* c1 */ /* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg  /* c1 */  /* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg/* c */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg  /* c */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg/* c1 */ /* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg  /* c1 */  /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg// c\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg  // c\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg/* c1 */ // c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg  /* c1 */  // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg\n"
-     "/* c */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg\n"
-     "/* c */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg\n"
-     "/* c1 */ /* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg\n"
-     "/* c1 */  /* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg\n"
-     "/* c */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg\n"
-     "           /* c */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg\n"
-     "/* c1 */ /* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg\n"
-     "           /* c1 */  /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg\n"
-     "// c\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg\n"
-     "           // c\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg\n"
-     "/* c1 */ // c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg\n"
-     "           /* c1 */  // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg\n"
-     "           /* c1 */\n"
-     "           /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg\n"
-     "// c1\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg\n"
-     "           // c1\n"
-     "           // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg/* c1 */\n"
-     "/* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg  /* c1 */\n"
-     "/* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg// c1\n"
-     "/* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg  // c1\n"
-     "/* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg  /* c1 */\n"
-     "           /* c2 */\n"
-     "/* c3 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg/* c1 */\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg  /* c1 */\n"
-     "           /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg// c1\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg  // c1\n"
-     "           /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg/* c1 */\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg  /* c1 */\n"
-     "           // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg// c1\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg  // c1\n"
-     "           // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg  /* c1 */\n"
-     "           /* c2 */\n"
-     "           /* c3 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg  // c1\n"
-     "           // c2\n"
-     "           // c3\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg/* c */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg  /* c */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg/* c1 */ /* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg  /* c1 */  /* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg/* c */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg  /* c */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg/* c1 */ /* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg  /* c1 */  /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg// c\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg  // c\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg/* c1 */ // c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg  /* c1 */  // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg\n"
-     "/* c */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg\n"
-     "/* c */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg\n"
-     "/* c1 */ /* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg\n"
-     "/* c1 */  /* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg\n"
-     "/* c */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg\n"
-     "           /* c */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg\n"
-     "/* c1 */ /* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg\n"
-     "           /* c1 */  /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg\n"
-     "// c\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg\n"
-     "           // c\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg\n"
-     "/* c1 */ // c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg\n"
-     "           /* c1 */  // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg\n"
-     "           /* c1 */\n"
-     "           /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg\n"
-     "// c1\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg\n"
-     "           // c1\n"
-     "           // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg/* c1 */\n"
-     "/* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg  /* c1 */\n"
-     "/* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg// c1\n"
-     "/* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg  // c1\n"
-     "/* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg  /* c1 */\n"
-     "           /* c2 */\n"
-     "/* c3 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg/* c1 */\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg  /* c1 */\n"
-     "           /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg// c1\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg  // c1\n"
-     "           /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg/* c1 */\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg  /* c1 */\n"
-     "           // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg// c1\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg  // c1\n"
-     "           // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg  /* c1 */\n"
-     "           /* c2 */\n"
-     "           /* c3 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg  // c1\n"
-     "           // c2\n"
-     "           // c3\n"
-     ");\n"},
-
-    // before colon
-
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1/* c */, arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1  /* c */, arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1/* c1 */ /* c2 */, arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1  /* c1 */  /* c2 */,\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1/* c */\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1  /* c */\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1/* c1 */ /* c2 */\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1  /* c1 */  /* c2 */\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1// c\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1  // c\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1/* c1 */ // c2\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1  /* c1 */  // c2\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1\n"
-     "/* c */, arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1\n"
-     "           /* c */, arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1\n"
-     "/* c1 */ /* c2 */, arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1\n"
-     "           /* c1 */  /* c2 */, arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1\n"
-     "/* c */\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1\n"
-     "           /* c */\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1\n"
-     "/* c1 */ /* c2 */\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1\n"
-     "           /* c1 */  /* c2 */\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1\n"
-     "// c\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1\n"
-     "           // c\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1\n"
-     "/* c1 */ // c2\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1\n"
-     "           /* c1 */  // c2\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1\n"
-     "           /* c1 */\n"
-     "           /* c2 */\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1\n"
-     "// c1\n"
-     "// c2\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1\n"
-     "           // c1\n"
-     "           // c2\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1/* c1 */\n"
-     "/* c2 */, arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1  /* c1 */\n"
-     "           /* c2 */, arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1// c1\n"
-     "/* c2 */, arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1  // c1\n"
-     "           /* c2 */, arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */, arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1  /* c1 */\n"
-     "           /* c2 */\n"
-     "           /* c3 */, arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1/* c1 */\n"
-     "/* c2 */\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1  /* c1 */\n"
-     "           /* c2 */\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1// c1\n"
-     "/* c2 */\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1  // c1\n"
-     "           /* c2 */\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1/* c1 */\n"
-     "// c2\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1  /* c1 */\n"
-     "           // c2\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1// c1\n"
-     "// c2\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1  // c1\n"
-     "           // c2\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1  /* c1 */\n"
-     "           /* c2 */\n"
-     "           /* c3 */\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1  // c1\n"
-     "           // c2\n"
-     "           // c3\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1/* c */, arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1  /* c */, arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1/* c1 */ /* c2 */, arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1  /* c1 */  /* c2 */,\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1/* c */\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1  /* c */\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1/* c1 */ /* c2 */\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1  /* c1 */  /* c2 */\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1// c\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1  // c\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1/* c1 */ // c2\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1  /* c1 */  // c2\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1\n"
-     "/* c */, arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1\n"
-     "           /* c */, arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1\n"
-     "/* c1 */ /* c2 */, arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1\n"
-     "           /* c1 */  /* c2 */, arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1\n"
-     "/* c */\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1\n"
-     "           /* c */\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1\n"
-     "/* c1 */ /* c2 */\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1\n"
-     "           /* c1 */  /* c2 */\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1\n"
-     "// c\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1\n"
-     "           // c\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1\n"
-     "/* c1 */ // c2\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1\n"
-     "           /* c1 */  // c2\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1\n"
-     "           /* c1 */\n"
-     "           /* c2 */\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1\n"
-     "// c1\n"
-     "// c2\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1\n"
-     "           // c1\n"
-     "           // c2\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1/* c1 */\n"
-     "/* c2 */, arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1  /* c1 */\n"
-     "           /* c2 */, arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1// c1\n"
-     "/* c2 */, arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1  // c1\n"
-     "           /* c2 */, arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */, arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1  /* c1 */\n"
-     "           /* c2 */\n"
-     "           /* c3 */, arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1/* c1 */\n"
-     "/* c2 */\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1  /* c1 */\n"
-     "           /* c2 */\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1// c1\n"
-     "/* c2 */\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1  // c1\n"
-     "           /* c2 */\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1/* c1 */\n"
-     "// c2\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1  /* c1 */\n"
-     "           // c2\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1// c1\n"
-     "// c2\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1  // c1\n"
-     "           // c2\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1  /* c1 */\n"
-     "           /* c2 */\n"
-     "           /* c3 */\n"
-     "           , arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ", arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1  // c1\n"
-     "           // c2\n"
-     "           // c3\n"
-     "           , arg2);\n"},
-
-    // after colon
-
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,/* c */arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,  /* c */ arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,/* c1 */ /* c2 */arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,  /* c1 */  /* c2 */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,/* c */\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,  /* c */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,/* c1 */ /* c2 */\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,  /* c1 */  /* c2 */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,// c\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,  // c\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,/* c1 */ // c2\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,  /* c1 */  // c2\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "/* c */arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "           /* c */ arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "/* c1 */ /* c2 */arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "           /* c1 */  /* c2 */ arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "/* c */\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "           /* c */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "/* c1 */ /* c2 */\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "           /* c1 */  /* c2 */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "// c\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "           // c\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "/* c1 */ // c2\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "           /* c1 */  // c2\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "           /* c1 */\n"
-     "           /* c2 */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "// c1\n"
-     "// c2\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "           // c1\n"
-     "           // c2\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,/* c1 */\n"
-     "/* c2 */arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,  /* c1 */\n"
-     "           /* c2 */ arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,// c1\n"
-     "/* c2 */arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,  // c1\n"
-     "           /* c2 */ arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,  /* c1 */\n"
-     "           /* c2 */\n"
-     "           /* c3 */ arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,/* c1 */\n"
-     "/* c2 */\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,  /* c1 */\n"
-     "           /* c2 */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,// c1\n"
-     "/* c2 */\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,  // c1\n"
-     "           /* c2 */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,/* c1 */\n"
-     "// c2\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,  /* c1 */\n"
-     "           // c2\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,// c1\n"
-     "// c2\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,  // c1\n"
-     "           // c2\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,  /* c1 */\n"
-     "           /* c2 */\n"
-     "           /* c3 */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,// c1\n"
-     "// c2\n"
-     "// c3\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,  // c1\n"
-     "           // c2\n"
-     "           // c3\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,/* c */arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,  /* c */ arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,/* c1 */ /* c2 */arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,  /* c1 */  /* c2 */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,/* c */\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,  /* c */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,/* c1 */ /* c2 */\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,  /* c1 */  /* c2 */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,// c\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,  // c\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,/* c1 */ // c2\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,  /* c1 */  // c2\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "/* c */arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "           /* c */ arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "/* c1 */ /* c2 */arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "           /* c1 */  /* c2 */ arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "/* c */\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "           /* c */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "/* c1 */ /* c2 */\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "           /* c1 */  /* c2 */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "// c\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "           // c\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "/* c1 */ // c2\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "           /* c1 */  // c2\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "           /* c1 */\n"
-     "           /* c2 */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "// c1\n"
-     "// c2\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "           // c1\n"
-     "           // c2\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,/* c1 */\n"
-     "/* c2 */arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,  /* c1 */\n"
-     "           /* c2 */ arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,// c1\n"
-     "/* c2 */arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,  // c1\n"
-     "           /* c2 */ arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,  /* c1 */\n"
-     "           /* c2 */\n"
-     "           /* c3 */ arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,/* c1 */\n"
-     "/* c2 */\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,  /* c1 */\n"
-     "           /* c2 */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,// c1\n"
-     "/* c2 */\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,  // c1\n"
-     "           /* c2 */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,/* c1 */\n"
-     "// c2\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,  /* c1 */\n"
-     "           // c2\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,// c1\n"
-     "// c2\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,  // c1\n"
-     "           // c2\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,  /* c1 */\n"
-     "           /* c2 */\n"
-     "           /* c3 */\n"
-     "           arg2);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,// c1\n"
-     "// c2\n"
-     "// c3\n"
-     "arg2);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,  // c1\n"
-     "           // c2\n"
-     "           // c3\n"
-     "           arg2);\n"},
-
-    // after last arg
-
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,/* c */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,  /* c */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,/* c1 */ /* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "           arg2,  /* c1 */  /* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,/* c */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,  /* c */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,/* c1 */ /* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1,\n"
-     "           arg2,  /* c1 */  /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,// c\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,  // c\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,/* c1 */ // c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,  /* c1 */  // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,\n"
-     "/* c */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,\n"
-     "/* c */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,\n"
-     "/* c1 */ /* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,\n"
-     "/* c1 */  /* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,\n"
-     "/* c */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,\n"
-     "           /* c */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,\n"
-     "/* c1 */ /* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,\n"
-     "           /* c1 */  /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,\n"
-     "// c\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,\n"
-     "           // c\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,\n"
-     "/* c1 */ // c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,\n"
-     "           /* c1 */  // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,\n"
-     "           /* c1 */\n"
-     "           /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,\n"
-     "// c1\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,\n"
-     "           // c1\n"
-     "           // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,/* c1 */\n"
-     "/* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,  /* c1 */\n"
-     "/* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,// c1\n"
-     "/* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,  // c1\n"
-     "/* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,  /* c1 */\n"
-     "           /* c2 */\n"
-     "/* c3 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,/* c1 */\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,  /* c1 */\n"
-     "           /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,// c1\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,  // c1\n"
-     "           /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,/* c1 */\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,  /* c1 */\n"
-     "           // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,// c1\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,  // c1\n"
-     "           // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,  /* c1 */\n"
-     "           /* c2 */\n"
-     "           /* c3 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg1, arg2,  // c1\n"
-     "           // c2\n"
-     "           // c3\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,/* c */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,  /* c */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,/* c1 */ /* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "           arg2,  /* c1 */  /* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,/* c */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,  /* c */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,/* c1 */ /* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1,\n"
-     "           arg2,  /* c1 */  /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,// c\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,  // c\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,/* c1 */ // c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,  /* c1 */  // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,\n"
-     "/* c */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,\n"
-     "/* c */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,\n"
-     "/* c1 */ /* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,\n"
-     "/* c1 */  /* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,\n"
-     "/* c */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,\n"
-     "           /* c */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,\n"
-     "/* c1 */ /* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,\n"
-     "           /* c1 */  /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,\n"
-     "// c\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,\n"
-     "           // c\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,\n"
-     "/* c1 */ // c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,\n"
-     "           /* c1 */  // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,\n"
-     "           /* c1 */\n"
-     "           /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,\n"
-     "// c1\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,\n"
-     "           // c1\n"
-     "           // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,/* c1 */\n"
-     "/* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,  /* c1 */\n"
-     "/* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,// c1\n"
-     "/* c2 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,  // c1\n"
-     "/* c2 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */);\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,  /* c1 */\n"
-     "           /* c2 */\n"
-     "/* c3 */);\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,/* c1 */\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,  /* c1 */\n"
-     "           /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,// c1\n"
-     "/* c2 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,  // c1\n"
-     "           /* c2 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,/* c1 */\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,  /* c1 */\n"
-     "           // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,// c1\n"
-     "// c2\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,  // c1\n"
-     "           // c2\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,  /* c1 */\n"
-     "           /* c2 */\n"
-     "           /* c3 */\n"
-     ");\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ");\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg1, arg2,  // c1\n"
-     "           // c2\n"
-     "           // c3\n"
-     ");\n"},
-
-    // after ')', no args
-
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()/* c */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()  /* c */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()/* c1 */ /* c2 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()  /* c1 */  /* c2 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()/* c */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()  /* c */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()/* c1 */ /* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()  /* c1 */  /* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()// c\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()  // c\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()/* c1 */ // c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()  /* c1 */  // c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()\n"
-     "/* c */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()\n"
-     "/* c */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()\n"
-     "/* c1 */ /* c2 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()\n"
-     "/* c1 */  /* c2 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()\n"
-     "/* c */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()\n"
-     "/* c */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()\n"
-     "/* c1 */ /* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()\n"
-     "/* c1 */  /* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()\n"
-     "// c\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()\n"
-     "// c\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()\n"
-     "/* c1 */ // c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()\n"
-     "/* c1 */  // c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()\n"
-     "// c1\n"
-     "// c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()\n"
-     "// c1\n"
-     "// c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()/* c1 */\n"
-     "/* c2 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()  /* c1 */\n"
-     "/* c2 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()// c1\n"
-     "/* c2 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()  // c1\n"
-     "/* c2 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()/* c1 */\n"
-     "/* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()  /* c1 */\n"
-     "/* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()// c1\n"
-     "/* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()  // c1\n"
-     "/* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()/* c1 */\n"
-     "// c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()  /* c1 */\n"
-     "// c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()// c1\n"
-     "// c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()  // c1\n"
-     "// c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz()  // c1\n"
-     "// c2\n"
-     "// c3\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()/* c */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()  /* c */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()/* c1 */ /* c2 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()  /* c1 */  /* c2 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()/* c */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()  /* c */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()/* c1 */ /* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()  /* c1 */  /* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()// c\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()  // c\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()/* c1 */ // c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()  /* c1 */  // c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()\n"
-     "/* c */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()\n"
-     "/* c */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()\n"
-     "/* c1 */ /* c2 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()\n"
-     "/* c1 */  /* c2 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()\n"
-     "/* c */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()\n"
-     "/* c */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()\n"
-     "/* c1 */ /* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()\n"
-     "/* c1 */  /* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()\n"
-     "// c\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()\n"
-     "// c\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()\n"
-     "/* c1 */ // c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()\n"
-     "/* c1 */  // c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()\n"
-     "// c1\n"
-     "// c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()\n"
-     "// c1\n"
-     "// c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()/* c1 */\n"
-     "/* c2 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()  /* c1 */\n"
-     "/* c2 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()// c1\n"
-     "/* c2 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()  // c1\n"
-     "/* c2 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()/* c1 */\n"
-     "/* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()  /* c1 */\n"
-     "/* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()// c1\n"
-     "/* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()  // c1\n"
-     "/* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()/* c1 */\n"
-     "// c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()  /* c1 */\n"
-     "// c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()// c1\n"
-     "// c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()  // c1\n"
-     "// c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ()  // c1\n"
-     "// c2\n"
-     "// c3\n"
-     ";\n"},
-
-    // after ')', with arg
-
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)/* c */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)  /* c */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)/* c1 */ /* c2 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)  /* c1 */  /* c2 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)/* c */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)  /* c */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)/* c1 */ /* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)  /* c1 */  /* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)// c\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)  // c\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)/* c1 */ // c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)  /* c1 */  // c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)\n"
-     "/* c */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)\n"
-     "/* c */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)\n"
-     "/* c1 */ /* c2 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)\n"
-     "/* c1 */  /* c2 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)\n"
-     "/* c */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)\n"
-     "/* c */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)\n"
-     "/* c1 */ /* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)\n"
-     "/* c1 */  /* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)\n"
-     "// c\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)  // c\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)\n"
-     "/* c1 */ // c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)\n"
-     "/* c1 */  // c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)\n"
-     "// c1\n"
-     "// c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)\n"
-     "// c1\n"
-     "// c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)/* c1 */\n"
-     "/* c2 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)  /* c1 */\n"
-     "/* c2 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)// c1\n"
-     "/* c2 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)  // c1\n"
-     "/* c2 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)/* c1 */\n"
-     "/* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)  /* c1 */\n"
-     "/* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)// c1\n"
-     "/* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)  // c1\n"
-     "/* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)/* c1 */\n"
-     "// c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)  /* c1 */\n"
-     "// c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)// c1\n"
-     "// c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)  // c1\n"
-     "// c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg)  // c1\n"
-     "// c2\n"
-     "// c3\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)/* c */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)  /* c */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)/* c1 */ /* c2 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)  /* c1 */  /* c2 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)/* c */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)  /* c */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)/* c1 */ /* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)  /* c1 */  /* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)// c\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)  // c\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)/* c1 */ // c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)  /* c1 */  // c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)\n"
-     "/* c */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)\n"
-     "/* c */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)\n"
-     "/* c1 */ /* c2 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)\n"
-     "/* c1 */  /* c2 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)\n"
-     "/* c */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)\n"
-     "/* c */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)\n"
-     "/* c1 */ /* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)\n"
-     "/* c1 */  /* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)\n"
-     "// c\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)\n"
-     "// c\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)\n"
-     "/* c1 */ // c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)\n"
-     "/* c1 */  // c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)\n"
-     "// c1\n"
-     "// c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)\n"
-     "// c1\n"
-     "// c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)/* c1 */\n"
-     "/* c2 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)  /* c1 */\n"
-     "/* c2 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)// c1\n"
-     "/* c2 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)  // c1\n"
-     "/* c2 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */;\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */;\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)/* c1 */\n"
-     "/* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)  /* c1 */\n"
-     "/* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)// c1\n"
-     "/* c2 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)  // c1\n"
-     "/* c2 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)/* c1 */\n"
-     "// c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)  /* c1 */\n"
-     "// c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)// c1\n"
-     "// c2\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)  // c1\n"
-     "// c2\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ";\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ";\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg)  // c1\n"
-     "// c2\n"
-     "// c3\n"
-     ";\n"},
-
-    // after ';', no args
-
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();  /* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();  /* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();  /* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();  /* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();// c\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();  // c\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();/* c1 */ // c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();  /* c1 */  // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();\n"
-     "/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();\n"
-     "/* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();\n"
-     "/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();\n"
-     "/* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();\n"
-     "/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();\n"
-     "/* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();\n"
-     "/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();\n"
-     "/* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();\n"
-     "// c\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();\n"
-     "// c\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();\n"
-     "/* c1 */ // c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();\n"
-     "/* c1 */  // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();\n"
-     "/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();\n"
-     "/* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();\n"
-     "// c1\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();\n"
-     "// c1\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();  /* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();// c1\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();  // c1\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();  /* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();// c1 c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();  // c1 c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();/* c1 */\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();  /* c1 */\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();// c1\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();  // c1\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();// c1\n"
-     "// c2\n"
-     "// c3\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz();  // c1\n"
-     "// c2\n"
-     "// c3\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();  /* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();  /* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();  /* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();  /* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();// c\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();  // c\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();/* c1 */ // c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();  /* c1 */  // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();\n"
-     "/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();\n"
-     "/* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();\n"
-     "/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();\n"
-     "/* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();\n"
-     "/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();\n"
-     "/* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();\n"
-     "/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();\n"
-     "/* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();\n"
-     "// c\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();\n"
-     "// c\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();\n"
-     "/* c1 */ // c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();\n"
-     "/* c1 */  // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();\n"
-     "/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();\n"
-     "/* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();\n"
-     "// c1\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();\n"
-     "// c1\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();  /* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();// c1\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();  // c1\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();  /* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();// c1\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();  // c1\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();/* c1 */\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();  /* c1 */\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();// c1\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();  // c1\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();// c1\n"
-     "// c2\n"
-     "// c3\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ();  // c1\n"
-     "// c2\n"
-     "// c3\n"},
-
-    // after ';', with arg
-
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);  /* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);  /* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);  /* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);  /* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);// c\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);  // c\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);/* c1 */ // c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);  /* c1 */  // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);\n"
-     "/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);\n"
-     "/* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);\n"
-     "/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);\n"
-     "/* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);\n"
-     "/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);\n"
-     "/* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);\n"
-     "/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);\n"
-     "/* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);\n"
-     "// c\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);\n"
-     "// c\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);\n"
-     "/* c1 */ // c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);\n"
-     "/* c1 */  // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);\n"
-     "/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);\n"
-     "/* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);\n"
-     "// c1\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);\n"
-     "// c1\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);  /* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);// c1\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);  // c1\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);  /* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);// c1 c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);  // c1 c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);/* c1 */\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);  /* c1 */\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);// c1\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);  // c1\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);// c1\n"
-     "// c2\n"
-     "// c3\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz(arg);  // c1\n"
-     "// c2\n"
-     "// c3\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);  /* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);  /* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);  /* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);  /* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);// c\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);  // c\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);/* c1 */ // c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);  /* c1 */  // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);\n"
-     "/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);\n"
-     "/* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);\n"
-     "/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);\n"
-     "/* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);\n"
-     "/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);\n"
-     "/* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);\n"
-     "/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);\n"
-     "/* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);\n"
-     "// c\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);\n"
-     "// c\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);\n"
-     "/* c1 */ // c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);\n"
-     "/* c1 */  // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);\n"
-     "/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);\n"
-     "/* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);\n"
-     "// c1\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);\n"
-     "// c1\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);  /* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);// c1\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);  // c1\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);  /* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);// c1\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);  // c1\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);/* c1 */\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);  /* c1 */\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);// c1\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);  // c1\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);// c1\n"
-     "// c2\n"
-     "// c3\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(arg);  // c1\n"
-     "// c2\n"
-     "// c3\n"},
-
-    // everywhere, no args
-
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c */(/* c */)/* c */;/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c */\n"
-     "    (  /* c */)  /* c */;  /* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c1 */ /* c2 */(/* c1 */ /* c2 */)/* c1 */ /* c2 */;/* c1 */ "
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */  /* c2 */\n"
-     "    (  /* c1 */  /* c2 */)  /* c1 */  /* c2 */;  /* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c */\n"
-     "(/* c */\n"
-     ")/* c */\n"
-     ";/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c */\n"
-     "    (  /* c */\n"
-     "    )  /* c */\n"
-     ";  /* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c1 */ /* c2 */\n"
-     "(/* c1 */ /* c2 */\n"
-     ")/* c1 */ /* c2 */\n"
-     ";/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */  /* c2 */\n"
-     "    (  /* c1 */  /* c2 */\n"
-     "    )  /* c1 */  /* c2 */\n"
-     ";  /* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz// c\n"
-     "(// c\n"
-     ")// c\n"
-     ";// c\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c\n"
-     "    (  // c\n"
-     "    )  // c\n"
-     ";  // c\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c1 */ // c2\n"
-     "(/* c1 */ // c2\n"
-     ")/* c1 */ // c2\n"
-     ";/* c1 */ // c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */  // c2\n"
-     "    (  /* c1 */  // c2\n"
-     "    )  /* c1 */  // c2\n"
-     ";  /* c1 */  // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c */(\n"
-     "/* c */)\n"
-     "/* c */;\n"
-     "/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c */ (\n"
-     "    /* c */)\n"
-     "/* c */;\n"
-     "/* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c1 */ /* c2 */(\n"
-     "/* c1 */ /* c2 */)\n"
-     "/* c1 */ /* c2 */;\n"
-     "/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c1 */  /* c2 */ (\n"
-     "    /* c1 */  /* c2 */)\n"
-     "/* c1 */  /* c2 */;\n"
-     "/* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c */\n"
-     "(\n"
-     "/* c */\n"
-     ")\n"
-     "/* c */\n"
-     ";\n"
-     "/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c */\n"
-     "    (\n"
-     "        /* c */\n"
-     "    )\n"
-     "/* c */\n"
-     ";\n"
-     "/* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c1 */ /* c2 */\n"
-     "(\n"
-     "/* c1 */ /* c2 */\n"
-     ")\n"
-     "/* c1 */ /* c2 */\n"
-     ";\n"
-     "/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c1 */  /* c2 */\n"
-     "    (\n"
-     "        /* c1 */  /* c2 */\n"
-     "    )\n"
-     "/* c1 */  /* c2 */\n"
-     ";\n"
-     "/* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "// c\n"
-     "(\n"
-     "// c\n"
-     ")\n"
-     "// c\n"
-     ";\n"
-     "// c\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    // c\n"
-     "    (\n"
-     "        // c\n"
-     "    )\n"
-     "// c\n"
-     ";\n"
-     "// c\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c1 */ // c2\n"
-     "(\n"
-     "/* c1 */ // c2\n"
-     ")\n"
-     "/* c1 */ // c2\n"
-     ";\n"
-     "/* c1 */ // c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c1 */  // c2\n"
-     "    (\n"
-     "        /* c1 */  // c2\n"
-     "    )\n"
-     "/* c1 */  // c2\n"
-     ";\n"
-     "/* c1 */  // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     "(\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ")\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ";\n"
-     "/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c1 */\n"
-     "    /* c2 */\n"
-     "    (\n"
-     "        /* c1 */\n"
-     "        /* c2 */\n"
-     "    )\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ";\n"
-     "/* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "// c1\n"
-     "// c2\n"
-     "(\n"
-     "// c1\n"
-     "// c2\n"
-     ")\n"
-     "// c1\n"
-     "// c2\n"
-     ";\n"
-     "// c1\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    // c1\n"
-     "    // c2\n"
-     "    (\n"
-     "        // c1\n"
-     "        // c2\n"
-     "    )\n"
-     "// c1\n"
-     "// c2\n"
-     ";\n"
-     "// c1\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c1 */\n"
-     "/* c2 */(/* c1 */\n"
-     "/* c2 */)/* c1 */\n"
-     "/* c2 */;/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    /* c2 */ (  /* c1 */\n"
-     "    /* c2 */)  /* c1 */\n"
-     "/* c2 */;  /* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz// c1\n"
-     "/* c2 */(// c1\n"
-     "/* c2 */)// c1\n"
-     "/* c2 */;// c1\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c1\n"
-     "    /* c2 */ (  // c1\n"
-     "    /* c2 */)  // c1\n"
-     "/* c2 */;  // c1\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */(/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */)/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */;/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */ (  /* c1 */\n"
-     "        /* c2 */\n"
-     "    /* c3 */)  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */;  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c1 */\n"
-     "/* c2 */\n"
-     "(/* c1 */\n"
-     "/* c2 */\n"
-     ")/* c1 */\n"
-     "/* c2 */\n"
-     ";/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    /* c2 */\n"
-     "    (  /* c1 */\n"
-     "        /* c2 */\n"
-     "    )  /* c1 */\n"
-     "/* c2 */\n"
-     ";  /* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz// c1\n"
-     "/* c2 */\n"
-     "(// c1\n"
-     "/* c2 */\n"
-     ")// c1\n"
-     "/* c2 */\n"
-     ";// c1\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c1\n"
-     "    /* c2 */\n"
-     "    (  // c1\n"
-     "        /* c2 */\n"
-     "    )  // c1\n"
-     "/* c2 */\n"
-     ";  // c1\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c1 */\n"
-     "// c2\n"
-     "(/* c1 */\n"
-     "// c2\n"
-     ")/* c1 */\n"
-     "// c2\n"
-     ";/* c1 */\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    // c2\n"
-     "    (  /* c1 */\n"
-     "        // c2\n"
-     "    )  /* c1 */\n"
-     "// c2\n"
-     ";  /* c1 */\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz// c1\n"
-     "// c2\n"
-     "(// c1\n"
-     "// c2\n"
-     ")// c1\n"
-     "// c2\n"
-     ";// c1\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c1\n"
-     "    // c2\n"
-     "    (  // c1\n"
-     "       // c2\n"
-     "    )  // c1\n"
-     "       // c2\n"
-     ";  // c1\n"
-     "   // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     "(/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ")/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ";/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */\n"
-     "    (  /* c1 */\n"
-     "        /* c2 */\n"
-     "        /* c3 */\n"
-     "    )  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ";  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz// c1\n"
-     "// c2\n"
-     "// c3\n"
-     "(// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ")// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ";// c1\n"
-     "// c2\n"
-     "// c3\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c1\n"
-     "    // c2\n"
-     "    // c3\n"
-     "    (  // c1\n"
-     "       // c2\n"
-     "       // c3\n"
-     "    )  // c1\n"
-     "       // c2\n"
-     "       // c3\n"
-     ";  // c1\n"
-     "   // c2\n"
-     "   // c3\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c */)/* c */;/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c */)  /* c */;  /* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */ /* c2 */)/* c1 */ /* c2 */;/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */  /* c2 */)  /* c1 */  /* c2 */;  /* c1 */  /* c2 "
-     "*/\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c */\n"
-     ")/* c */\n"
-     ";/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c */\n"
-     ")  /* c */\n"
-     ";  /* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */ /* c2 */\n"
-     ")/* c1 */ /* c2 */\n"
-     ";/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */  /* c2 */\n"
-     ")  /* c1 */  /* c2 */\n"
-     ";  /* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c\n"
-     ")// c\n"
-     ";// c\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c\n"
-     ")  // c\n"
-     ";  // c\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */ // c2\n"
-     ")/* c1 */ // c2\n"
-     ";/* c1 */ // c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */  // c2\n"
-     ")  /* c1 */  // c2\n"
-     ";  /* c1 */  // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c */)\n"
-     "/* c */;\n"
-     "/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c */)\n"
-     "/* c */;\n"
-     "/* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */ /* c2 */)\n"
-     "/* c1 */ /* c2 */;\n"
-     "/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */  /* c2 */)\n"
-     "/* c1 */  /* c2 */;\n"
-     "/* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c */\n"
-     ")\n"
-     "/* c */\n"
-     ";\n"
-     "/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c */\n"
-     ")\n"
-     "/* c */\n"
-     ";\n"
-     "/* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */ /* c2 */\n"
-     ")\n"
-     "/* c1 */ /* c2 */\n"
-     ";\n"
-     "/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c1 */  /* c2 */\n"
-     ")\n"
-     "/* c1 */  /* c2 */\n"
-     ";\n"
-     "/* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "// c\n"
-     ")\n"
-     "// c\n"
-     ";\n"
-     "// c\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    // c\n"
-     ")\n"
-     "// c\n"
-     ";\n"
-     "// c\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */ // c2\n"
-     ")\n"
-     "/* c1 */ // c2\n"
-     ";\n"
-     "/* c1 */ // c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c1 */  // c2\n"
-     ")\n"
-     "/* c1 */  // c2\n"
-     ";\n"
-     "/* c1 */  // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ")\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ";\n"
-     "/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c1 */\n"
-     "    /* c2 */\n"
-     ")\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ";\n"
-     "/* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "// c1\n"
-     "// c2\n"
-     ")\n"
-     "// c1\n"
-     "// c2\n"
-     ";\n"
-     "// c1\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    // c1\n"
-     "    // c2\n"
-     ")\n"
-     "// c1\n"
-     "// c2\n"
-     ";\n"
-     "// c1\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "/* c2 */)/* c1 */\n"
-     "/* c2 */;/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "/* c2 */)  /* c1 */\n"
-     "/* c2 */;  /* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c1\n"
-     "/* c2 */)// c1\n"
-     "/* c2 */;// c1\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c1\n"
-     "/* c2 */)  // c1\n"
-     "/* c2 */;  // c1\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */)/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */;/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    /* c2 */\n"
-     "/* c3 */)  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */;  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "/* c2 */\n"
-     ")/* c1 */\n"
-     "/* c2 */\n"
-     ";/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    /* c2 */\n"
-     ")  /* c1 */\n"
-     "/* c2 */\n"
-     ";  /* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c1\n"
-     "/* c2 */\n"
-     ")// c1\n"
-     "/* c2 */\n"
-     ";// c1\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c1\n"
-     "    /* c2 */\n"
-     ")  // c1\n"
-     "/* c2 */\n"
-     ";  // c1\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "// c2\n"
-     ")/* c1 */\n"
-     "// c2\n"
-     ";/* c1 */\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    // c2\n"
-     ")  /* c1 */\n"
-     "// c2\n"
-     ";  /* c1 */\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c1\n"
-     "// c2\n"
-     ")// c1\n"
-     "// c2\n"
-     ";// c1\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c1\n"
-     "    // c2\n"
-     ")  // c1\n"
-     "   // c2\n"
-     ";  // c1\n"
-     "   // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ")/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ";/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */\n"
-     ")  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ";  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ")// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ";// c1\n"
-     "// c2\n"
-     "// c3\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c1\n"
-     "    // c2\n"
-     "    // c3\n"
-     ")  // c1\n"
-     "   // c2\n"
-     "   // c3\n"
-     ";  // c1\n"
-     "   // c2\n"
-     "   // c3\n"},
-
-    // everywhere, with args
-
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c */(/* c */arg1/* c */,/* c */arg2/* c */)/* c */;/* c "
-     "*/\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c */ (  /* c */\n"
-     "    arg1  /* c */,  /* c */\n"
-     "    arg2  /* c */)  /* c */;  /* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c1 */ /* c2 */(/* c1 */ /* c2 */arg1/* c1 */ /* c2 */,/* c1 "
-     "*/ /* c2 */arg2/* c1 */ /* c2 */)/* c1 */ /* c2 */;/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */  /* c2 */ (  /* c1 */  /* c2 */\n"
-     "    arg1  /* c1 */  /* c2 */,  /* c1 */  /* c2 */\n"
-     "    arg2  /* c1 */  /* c2 */)  /* c1 */  /* c2 */;  /* c1 */  /* c2 "
-     "*/\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c */\n"
-     "(/* c */\n"
-     "arg1/* c */\n"
-     ",/* c */\n"
-     "arg2/* c */\n"
-     ")/* c */\n"
-     ";/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c */\n"
-     "    (  /* c */\n"
-     "        arg1  /* c */\n"
-     "        ,  /* c */\n"
-     "        arg2  /* c */\n"
-     "    )  /* c */\n"
-     ";  /* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c1 */ /* c2 */\n"
-     "(/* c1 */ /* c2 */\n"
-     "arg1/* c1 */ /* c2 */\n"
-     ",/* c1 */ /* c2 */\n"
-     "arg2/* c1 */ /* c2 */\n"
-     ")/* c1 */ /* c2 */\n"
-     ";/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */  /* c2 */\n"
-     "    (  /* c1 */  /* c2 */\n"
-     "        arg1  /* c1 */  /* c2 */\n"
-     "        ,  /* c1 */  /* c2 */\n"
-     "        arg2  /* c1 */  /* c2 */\n"
-     "    )  /* c1 */  /* c2 */\n"
-     ";  /* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz// c\n"
-     "(// c\n"
-     "arg1// c\n"
-     ",// c\n"
-     "arg2// c\n"
-     ")// c\n"
-     ";// c\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c\n"
-     "    (  // c\n"
-     "        arg1  // c\n"
-     "        ,  // c\n"
-     "        arg2  // c\n"
-     "    )  // c\n"
-     ";  // c\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c1 */ // c2\n"
-     "(/* c1 */ // c2\n"
-     "arg1/* c1 */ // c2\n"
-     ",/* c1 */ // c2\n"
-     "arg2/* c1 */ // c2\n"
-     ")/* c1 */ // c2\n"
-     ";/* c1 */ // c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */  // c2\n"
-     "    (  /* c1 */  // c2\n"
-     "        arg1  /* c1 */  // c2\n"
-     "        ,  /* c1 */  // c2\n"
-     "        arg2  /* c1 */  // c2\n"
-     "    )  /* c1 */  // c2\n"
-     ";  /* c1 */  // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c */(\n"
-     "/* c */arg1\n"
-     "/* c */,\n"
-     "/* c */arg2\n"
-     "/* c */)\n"
-     "/* c */;\n"
-     "/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c */ (\n"
-     "        /* c */ arg1\n"
-     "        /* c */,\n"
-     "        /* c */ arg2\n"
-     "    /* c */)\n"
-     "/* c */;\n"
-     "/* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c1 */ /* c2 */(\n"
-     "/* c1 */ /* c2 */arg1\n"
-     "/* c1 */ /* c2 */,\n"
-     "/* c1 */ /* c2 */arg2\n"
-     "/* c1 */ /* c2 */)\n"
-     "/* c1 */ /* c2 */;\n"
-     "/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c1 */  /* c2 */ (\n"
-     "        /* c1 */  /* c2 */ arg1\n"
-     "        /* c1 */  /* c2 */,\n"
-     "        /* c1 */  /* c2 */ arg2\n"
-     "    /* c1 */  /* c2 */)\n"
-     "/* c1 */  /* c2 */;\n"
-     "/* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c */\n"
-     "(\n"
-     "/* c */\n"
-     "arg1\n"
-     "/* c */\n"
-     ",\n"
-     "/* c */\n"
-     "arg2\n"
-     "/* c */\n"
-     ")\n"
-     "/* c */\n"
-     ";\n"
-     "/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c */\n"
-     "    (\n"
-     "        /* c */\n"
-     "        arg1\n"
-     "        /* c */\n"
-     "        ,\n"
-     "        /* c */\n"
-     "        arg2\n"
-     "        /* c */\n"
-     "    )\n"
-     "/* c */\n"
-     ";\n"
-     "/* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c1 */ /* c2 */\n"
-     "(\n"
-     "/* c1 */ /* c2 */\n"
-     "arg1\n"
-     "/* c1 */ /* c2 */\n"
-     ",\n"
-     "/* c1 */ /* c2 */\n"
-     "arg2\n"
-     "/* c1 */ /* c2 */\n"
-     ")\n"
-     "/* c1 */ /* c2 */\n"
-     ";\n"
-     "/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c1 */  /* c2 */\n"
-     "    (\n"
-     "        /* c1 */  /* c2 */\n"
-     "        arg1\n"
-     "        /* c1 */  /* c2 */\n"
-     "        ,\n"
-     "        /* c1 */  /* c2 */\n"
-     "        arg2\n"
-     "        /* c1 */  /* c2 */\n"
-     "    )\n"
-     "/* c1 */  /* c2 */\n"
-     ";\n"
-     "/* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "// c\n"
-     "(\n"
-     "// c\n"
-     "arg1\n"
-     "// c\n"
-     ",\n"
-     "// c\n"
-     "arg2\n"
-     "// c\n"
-     ")\n"
-     "// c\n"
-     ";\n"
-     "// c\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    // c\n"
-     "    (\n"
-     "        // c\n"
-     "        arg1\n"
-     "        // c\n"
-     "        ,\n"
-     "        // c\n"
-     "        arg2\n"
-     "        // c\n"
-     "    )\n"
-     "// c\n"
-     ";\n"
-     "// c\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c1 */ // c2\n"
-     "(\n"
-     "/* c1 */ // c2\n"
-     "arg1\n"
-     "/* c1 */ // c2\n"
-     ",\n"
-     "/* c1 */ // c2\n"
-     "arg2\n"
-     "/* c1 */ // c2\n"
-     ")\n"
-     "/* c1 */ // c2\n"
-     ";\n"
-     "/* c1 */ // c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c1 */  // c2\n"
-     "    (\n"
-     "        /* c1 */  // c2\n"
-     "        arg1\n"
-     "        /* c1 */  // c2\n"
-     "        ,\n"
-     "        /* c1 */  // c2\n"
-     "        arg2\n"
-     "        /* c1 */  // c2\n"
-     "    )\n"
-     "/* c1 */  // c2\n"
-     ";\n"
-     "/* c1 */  // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     "(\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     "arg1\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ",\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     "arg2\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ")\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ";\n"
-     "/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    /* c1 */\n"
-     "    /* c2 */\n"
-     "    (\n"
-     "        /* c1 */\n"
-     "        /* c2 */\n"
-     "        arg1\n"
-     "        /* c1 */\n"
-     "        /* c2 */\n"
-     "        ,\n"
-     "        /* c1 */\n"
-     "        /* c2 */\n"
-     "        arg2\n"
-     "        /* c1 */\n"
-     "        /* c2 */\n"
-     "    )\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ";\n"
-     "/* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "// c1\n"
-     "// c2\n"
-     "(\n"
-     "// c1\n"
-     "// c2\n"
-     "arg1\n"
-     "// c1\n"
-     "// c2\n"
-     ",\n"
-     "// c1\n"
-     "// c2\n"
-     "arg2\n"
-     "// c1\n"
-     "// c2\n"
-     ")\n"
-     "// c1\n"
-     "// c2\n"
-     ";\n"
-     "// c1\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz\n"
-     "    // c1\n"
-     "    // c2\n"
-     "    (\n"
-     "        // c1\n"
-     "        // c2\n"
-     "        arg1\n"
-     "        // c1\n"
-     "        // c2\n"
-     "        ,\n"
-     "        // c1\n"
-     "        // c2\n"
-     "        arg2\n"
-     "        // c1\n"
-     "        // c2\n"
-     "    )\n"
-     "// c1\n"
-     "// c2\n"
-     ";\n"
-     "// c1\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c1 */\n"
-     "/* c2 */(/* c1 */\n"
-     "/* c2 */arg1/* c1 */\n"
-     "/* c2 */,/* c1 */\n"
-     "/* c2 */arg2/* c1 */\n"
-     "/* c2 */)/* c1 */\n"
-     "/* c2 */;/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    /* c2 */ (  /* c1 */\n"
-     "        /* c2 */ arg1  /* c1 */\n"
-     "        /* c2 */,  /* c1 */\n"
-     "        /* c2 */ arg2  /* c1 */\n"
-     "    /* c2 */)  /* c1 */\n"
-     "/* c2 */;  /* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz// c1\n"
-     "/* c2 */(// c1\n"
-     "/* c2 */arg1// c1\n"
-     "/* c2 */,// c1\n"
-     "/* c2 */arg2// c1\n"
-     "/* c2 */)// c1\n"
-     "/* c2 */;// c1\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c1\n"
-     "    /* c2 */ (  // c1\n"
-     "        /* c2 */ arg1  // c1\n"
-     "        /* c2 */,  // c1\n"
-     "        /* c2 */ arg2  // c1\n"
-     "    /* c2 */)  // c1\n"
-     "/* c2 */;  // c1\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */(/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */arg1/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */,/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */arg2/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */)/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */;/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */ (  /* c1 */\n"
-     "        /* c2 */\n"
-     "        /* c3 */ arg1  /* c1 */\n"
-     "        /* c2 */\n"
-     "        /* c3 */,  /* c1 */\n"
-     "        /* c2 */\n"
-     "        /* c3 */ arg2  /* c1 */\n"
-     "        /* c2 */\n"
-     "    /* c3 */)  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */;  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c1 */\n"
-     "/* c2 */\n"
-     "(/* c1 */\n"
-     "/* c2 */\n"
-     "arg1/* c1 */\n"
-     "/* c2 */\n"
-     ",/* c1 */\n"
-     "/* c2 */\n"
-     "arg2/* c1 */\n"
-     "/* c2 */\n"
-     ")/* c1 */\n"
-     "/* c2 */\n"
-     ";/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    /* c2 */\n"
-     "    (  /* c1 */\n"
-     "        /* c2 */\n"
-     "        arg1  /* c1 */\n"
-     "        /* c2 */\n"
-     "        ,  /* c1 */\n"
-     "        /* c2 */\n"
-     "        arg2  /* c1 */\n"
-     "        /* c2 */\n"
-     "    )  /* c1 */\n"
-     "/* c2 */\n"
-     ";  /* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz// c1\n"
-     "/* c2 */\n"
-     "(// c1\n"
-     "/* c2 */\n"
-     "arg1// c1\n"
-     "/* c2 */\n"
-     ",// c1\n"
-     "/* c2 */\n"
-     "arg2// c1\n"
-     "/* c2 */\n"
-     ")// c1\n"
-     "/* c2 */\n"
-     ";// c1\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c1\n"
-     "    /* c2 */\n"
-     "    (  // c1\n"
-     "        /* c2 */\n"
-     "        arg1  // c1\n"
-     "        /* c2 */\n"
-     "        ,  // c1\n"
-     "        /* c2 */\n"
-     "        arg2  // c1\n"
-     "        /* c2 */\n"
-     "    )  // c1\n"
-     "/* c2 */\n"
-     ";  // c1\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c1 */\n"
-     "// c2\n"
-     "(/* c1 */\n"
-     "// c2\n"
-     "arg1/* c1 */\n"
-     "// c2\n"
-     ",/* c1 */\n"
-     "// c2\n"
-     "arg2/* c1 */\n"
-     "// c2\n"
-     ")/* c1 */\n"
-     "// c2\n"
-     ";/* c1 */\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    // c2\n"
-     "    (  /* c1 */\n"
-     "        // c2\n"
-     "        arg1  /* c1 */\n"
-     "        // c2\n"
-     "        ,  /* c1 */\n"
-     "        // c2\n"
-     "        arg2  /* c1 */\n"
-     "        // c2\n"
-     "    )  /* c1 */\n"
-     "// c2\n"
-     ";  /* c1 */\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz// c1\n"
-     "// c2\n"
-     "(// c1\n"
-     "// c2\n"
-     "arg1// c1\n"
-     "// c2\n"
-     ",// c1\n"
-     "// c2\n"
-     "arg2// c1\n"
-     "// c2\n"
-     ")// c1\n"
-     "// c2\n"
-     ";// c1\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c1\n"
-     "    // c2\n"
-     "    (  // c1\n"
-     "       // c2\n"
-     "        arg1  // c1\n"
-     "        // c2\n"
-     "        ,  // c1\n"
-     "           // c2\n"
-     "        arg2  // c1\n"
-     "        // c2\n"
-     "    )  // c1\n"
-     "       // c2\n"
-     ";  // c1\n"
-     "   // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     "(/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     "arg1/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ",/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     "arg2/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ")/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ";/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */\n"
-     "    (  /* c1 */\n"
-     "        /* c2 */\n"
-     "        /* c3 */\n"
-     "        arg1  /* c1 */\n"
-     "        /* c2 */\n"
-     "        /* c3 */\n"
-     "        ,  /* c1 */\n"
-     "        /* c2 */\n"
-     "        /* c3 */\n"
-     "        arg2  /* c1 */\n"
-     "        /* c2 */\n"
-     "        /* c3 */\n"
-     "    )  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ";  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz// c1\n"
-     "// c2\n"
-     "// c3\n"
-     "(// c1\n"
-     "// c2\n"
-     "// c3\n"
-     "arg1// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ",// c1\n"
-     "// c2\n"
-     "// c3\n"
-     "arg2// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ")// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ";// c1\n"
-     "// c2\n"
-     "// c3\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "$foobarbaz  // c1\n"
-     "    // c2\n"
-     "    // c3\n"
-     "    (  // c1\n"
-     "       // c2\n"
-     "       // c3\n"
-     "        arg1  // c1\n"
-     "        // c2\n"
-     "        // c3\n"
-     "        ,  // c1\n"
-     "           // c2\n"
-     "           // c3\n"
-     "        arg2  // c1\n"
-     "        // c2\n"
-     "        // c3\n"
-     "    )  // c1\n"
-     "       // c2\n"
-     "       // c3\n"
-     ";  // c1\n"
-     "   // c2\n"
-     "   // c3\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c */arg1/* c */,/* c */arg2/* c */)/* c */;/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c */\n"
-     "    arg1  /* c */,  /* c */\n"
-     "    arg2  /* c */)  /* c */;  /* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */ /* c2 */arg1/* c1 */ /* c2 */,/* c1 */ /* c2 "
-     "*/arg2/* c1 */ /* c2 */)/* c1 */ /* c2 */;/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */  /* c2 */\n"
-     "    arg1  /* c1 */  /* c2 */,  /* c1 */  /* c2 */\n"
-     "    arg2  /* c1 */  /* c2 */)  /* c1 */  /* c2 */;  /* c1 */  /* c2 "
-     "*/\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c */\n"
-     "arg1/* c */\n"
-     ",/* c */\n"
-     "arg2/* c */\n"
-     ")/* c */\n"
-     ";/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c */\n"
-     "    arg1  /* c */\n"
-     "    ,  /* c */\n"
-     "    arg2  /* c */\n"
-     ")  /* c */\n"
-     ";  /* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */ /* c2 */\n"
-     "arg1/* c1 */ /* c2 */\n"
-     ",/* c1 */ /* c2 */\n"
-     "arg2/* c1 */ /* c2 */\n"
-     ")/* c1 */ /* c2 */\n"
-     ";/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */  /* c2 */\n"
-     "    arg1  /* c1 */  /* c2 */\n"
-     "    ,  /* c1 */  /* c2 */\n"
-     "    arg2  /* c1 */  /* c2 */\n"
-     ")  /* c1 */  /* c2 */\n"
-     ";  /* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c\n"
-     "arg1// c\n"
-     ",// c\n"
-     "arg2// c\n"
-     ")// c\n"
-     ";// c\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c\n"
-     "    arg1  // c\n"
-     "    ,  // c\n"
-     "    arg2  // c\n"
-     ")  // c\n"
-     ";  // c\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */ // c2\n"
-     "arg1/* c1 */ // c2\n"
-     ",/* c1 */ // c2\n"
-     "arg2/* c1 */ // c2\n"
-     ")/* c1 */ // c2\n"
-     ";/* c1 */ // c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */  // c2\n"
-     "    arg1  /* c1 */  // c2\n"
-     "    ,  /* c1 */  // c2\n"
-     "    arg2  /* c1 */  // c2\n"
-     ")  /* c1 */  // c2\n"
-     ";  /* c1 */  // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c */arg1\n"
-     "/* c */,\n"
-     "/* c */arg2\n"
-     "/* c */)\n"
-     "/* c */;\n"
-     "/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c */ arg1\n"
-     "    /* c */,\n"
-     "    /* c */ arg2\n"
-     "/* c */)\n"
-     "/* c */;\n"
-     "/* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */ /* c2 */arg1\n"
-     "/* c1 */ /* c2 */,\n"
-     "/* c1 */ /* c2 */arg2\n"
-     "/* c1 */ /* c2 */)\n"
-     "/* c1 */ /* c2 */;\n"
-     "/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c1 */  /* c2 */ arg1\n"
-     "    /* c1 */  /* c2 */,\n"
-     "    /* c1 */  /* c2 */ arg2\n"
-     "/* c1 */  /* c2 */)\n"
-     "/* c1 */  /* c2 */;\n"
-     "/* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c */\n"
-     "arg1\n"
-     "/* c */\n"
-     ",\n"
-     "/* c */\n"
-     "arg2\n"
-     "/* c */\n"
-     ")\n"
-     "/* c */\n"
-     ";\n"
-     "/* c */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c */\n"
-     "    arg1\n"
-     "    /* c */\n"
-     "    ,\n"
-     "    /* c */\n"
-     "    arg2\n"
-     "    /* c */\n"
-     ")\n"
-     "/* c */\n"
-     ";\n"
-     "/* c */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */ /* c2 */\n"
-     "arg1\n"
-     "/* c1 */ /* c2 */\n"
-     ",\n"
-     "/* c1 */ /* c2 */\n"
-     "arg2\n"
-     "/* c1 */ /* c2 */\n"
-     ")\n"
-     "/* c1 */ /* c2 */\n"
-     ";\n"
-     "/* c1 */ /* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c1 */  /* c2 */\n"
-     "    arg1\n"
-     "    /* c1 */  /* c2 */\n"
-     "    ,\n"
-     "    /* c1 */  /* c2 */\n"
-     "    arg2\n"
-     "    /* c1 */  /* c2 */\n"
-     ")\n"
-     "/* c1 */  /* c2 */\n"
-     ";\n"
-     "/* c1 */  /* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "// c\n"
-     "arg1\n"
-     "// c\n"
-     ",\n"
-     "// c\n"
-     "arg2\n"
-     "// c\n"
-     ")\n"
-     "// c\n"
-     ";\n"
-     "// c\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    // c\n"
-     "    arg1\n"
-     "    // c\n"
-     "    ,\n"
-     "    // c\n"
-     "    arg2\n"
-     "    // c\n"
-     ")\n"
-     "// c\n"
-     ";\n"
-     "// c\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */ // c2\n"
-     "arg1\n"
-     "/* c1 */ // c2\n"
-     ",\n"
-     "/* c1 */ // c2\n"
-     "arg2\n"
-     "/* c1 */ // c2\n"
-     ")\n"
-     "/* c1 */ // c2\n"
-     ";\n"
-     "/* c1 */ // c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c1 */  // c2\n"
-     "    arg1\n"
-     "    /* c1 */  // c2\n"
-     "    ,\n"
-     "    /* c1 */  // c2\n"
-     "    arg2\n"
-     "    /* c1 */  // c2\n"
-     ")\n"
-     "/* c1 */  // c2\n"
-     ";\n"
-     "/* c1 */  // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     "arg1\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ",\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     "arg2\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ")\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ";\n"
-     "/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    /* c1 */\n"
-     "    /* c2 */\n"
-     "    arg1\n"
-     "    /* c1 */\n"
-     "    /* c2 */\n"
-     "    ,\n"
-     "    /* c1 */\n"
-     "    /* c2 */\n"
-     "    arg2\n"
-     "    /* c1 */\n"
-     "    /* c2 */\n"
-     ")\n"
-     "/* c1 */\n"
-     "/* c2 */\n"
-     ";\n"
-     "/* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "// c1\n"
-     "// c2\n"
-     "arg1\n"
-     "// c1\n"
-     "// c2\n"
-     ",\n"
-     "// c1\n"
-     "// c2\n"
-     "arg2\n"
-     "// c1\n"
-     "// c2\n"
-     ")\n"
-     "// c1\n"
-     "// c2\n"
-     ";\n"
-     "// c1\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(\n"
-     "    // c1\n"
-     "    // c2\n"
-     "    arg1\n"
-     "    // c1\n"
-     "    // c2\n"
-     "    ,\n"
-     "    // c1\n"
-     "    // c2\n"
-     "    arg2\n"
-     "    // c1\n"
-     "    // c2\n"
-     ")\n"
-     "// c1\n"
-     "// c2\n"
-     ";\n"
-     "// c1\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "/* c2 */arg1/* c1 */\n"
-     "/* c2 */,/* c1 */\n"
-     "/* c2 */arg2/* c1 */\n"
-     "/* c2 */)/* c1 */\n"
-     "/* c2 */;/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    /* c2 */ arg1  /* c1 */\n"
-     "    /* c2 */,  /* c1 */\n"
-     "    /* c2 */ arg2  /* c1 */\n"
-     "/* c2 */)  /* c1 */\n"
-     "/* c2 */;  /* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c1\n"
-     "/* c2 */arg1// c1\n"
-     "/* c2 */,// c1\n"
-     "/* c2 */arg2// c1\n"
-     "/* c2 */)// c1\n"
-     "/* c2 */;// c1\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c1\n"
-     "    /* c2 */ arg1  // c1\n"
-     "    /* c2 */,  // c1\n"
-     "    /* c2 */ arg2  // c1\n"
-     "/* c2 */)  // c1\n"
-     "/* c2 */;  // c1\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */arg1/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */,/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */arg2/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */)/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */;/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */ arg1  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */,  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */ arg2  /* c1 */\n"
-     "    /* c2 */\n"
-     "/* c3 */)  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */;  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "/* c2 */\n"
-     "arg1/* c1 */\n"
-     "/* c2 */\n"
-     ",/* c1 */\n"
-     "/* c2 */\n"
-     "arg2/* c1 */\n"
-     "/* c2 */\n"
-     ")/* c1 */\n"
-     "/* c2 */\n"
-     ";/* c1 */\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    /* c2 */\n"
-     "    arg1  /* c1 */\n"
-     "    /* c2 */\n"
-     "    ,  /* c1 */\n"
-     "    /* c2 */\n"
-     "    arg2  /* c1 */\n"
-     "    /* c2 */\n"
-     ")  /* c1 */\n"
-     "/* c2 */\n"
-     ";  /* c1 */\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c1\n"
-     "/* c2 */\n"
-     "arg1// c1\n"
-     "/* c2 */\n"
-     ",// c1\n"
-     "/* c2 */\n"
-     "arg2// c1\n"
-     "/* c2 */\n"
-     ")// c1\n"
-     "/* c2 */\n"
-     ";// c1\n"
-     "/* c2 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c1\n"
-     "    /* c2 */\n"
-     "    arg1  // c1\n"
-     "    /* c2 */\n"
-     "    ,  // c1\n"
-     "    /* c2 */\n"
-     "    arg2  // c1\n"
-     "    /* c2 */\n"
-     ")  // c1\n"
-     "/* c2 */\n"
-     ";  // c1\n"
-     "/* c2 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "// c2\n"
-     "arg1/* c1 */\n"
-     "// c2\n"
-     ",/* c1 */\n"
-     "// c2\n"
-     "arg2/* c1 */\n"
-     "// c2\n"
-     ")/* c1 */\n"
-     "// c2\n"
-     ";/* c1 */\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    // c2\n"
-     "    arg1  /* c1 */\n"
-     "    // c2\n"
-     "    ,  /* c1 */\n"
-     "    // c2\n"
-     "    arg2  /* c1 */\n"
-     "    // c2\n"
-     ")  /* c1 */\n"
-     "// c2\n"
-     ";  /* c1 */\n"
-     "// c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c1\n"
-     "// c2\n"
-     "arg1// c1\n"
-     "// c2\n"
-     ",// c1\n"
-     "// c2\n"
-     "arg2// c1\n"
-     "// c2\n"
-     ")// c1\n"
-     "// c2\n"
-     ";// c1\n"
-     "// c2\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c1\n"
-     "    // c2\n"
-     "    arg1  // c1\n"
-     "    // c2\n"
-     "    ,  // c1\n"
-     "       // c2\n"
-     "    arg2  // c1\n"
-     "    // c2\n"
-     ")  // c1\n"
-     "   // c2\n"
-     ";  // c1\n"
-     "   // c2\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     "arg1/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ",/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     "arg2/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ")/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ";/* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */\n"
-     "    arg1  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */\n"
-     "    ,  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */\n"
-     "    arg2  /* c1 */\n"
-     "    /* c2 */\n"
-     "    /* c3 */\n"
-     ")  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"
-     ";  /* c1 */\n"
-     "/* c2 */\n"
-     "/* c3 */\n"},
-    {"// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(// c1\n"
-     "// c2\n"
-     "// c3\n"
-     "arg1// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ",// c1\n"
-     "// c2\n"
-     "// c3\n"
-     "arg2// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ")// c1\n"
-     "// c2\n"
-     "// c3\n"
-     ";// c1\n"
-     "// c2\n"
-     "// c3\n",
-     "// verilog_syntax: parse-as-module-body\n"
-     "`FOOBARBAZ(  // c1\n"
-     "    // c2\n"
-     "    // c3\n"
-     "    arg1  // c1\n"
-     "    // c2\n"
-     "    // c3\n"
-     "    ,  // c1\n"
-     "       // c2\n"
-     "       // c3\n"
-     "    arg2  // c1\n"
-     "    // c2\n"
-     "    // c3\n"
-     ")  // c1\n"
-     "   // c2\n"
-     "   // c3\n"
-     ";  // c1\n"
-     "   // c2\n"
-     "   // c3\n"},
-    {"module indent();\n"
-     "   reg     a;\n"
-     "   reg [32:0] b;\n"
-     "   wire    c;\n"
-     "   wire    d = e ? kFoo : kBar;\n"
-     "endmodule\n",
-     "module indent ();\n"
-     "  reg         a;\n"
-     "  reg  [32:0] b;\n"
-     "  wire        c;\n"
-     "  wire        d = e ? kFoo : kBar;\n"
-     "endmodule\n"},
-
-    {"class C; T1 b; logic [$] a; T1 [$] c; endclass\n",
-     "class C;\n"
-     "  T1        b;\n"
-     "  logic [$] a;\n"
-     "  T1    [$] c;\n"
-     "endclass\n"},
-    {"class C;\n"
-     "  T1 b; //test\n"
-     "  logic [$] a; //test\n"
-     "  T1    [$] c; //test\n"
-     "endclass\n",
-     "class C;\n"
-     "  T1        b;  //test\n"
-     "  logic [$] a;  //test\n"
-     "  T1    [$] c;  //test\n"
-     "endclass\n"},
-    {"class C;\n"
-     "  T1\n"
-     "  b;\n"
-     "  logic\n"
-     "  [$]\n"
-     "  a;\n"
-     "  T1\n"
-     "  [$]\n"
-     "  c;\n"
-     "endclass\n",
-     "class C;\n"
-     "  T1        b;\n"
-     "  logic [$] a;\n"
-     "  T1    [$] c;\n"
-     "endclass\n"},
-    {"class C;\n"
-     "  logic/*t*/ [0 : 1] /*t*/\n"
-     "  a;/*t*/\n"
-     "  T1/*t*/[0 : 1]/*t*/\n"
-     "  c;/*t*/\n"
-     "endclass\n",
-     "class C;\n"
-     "  logic/*t*/ [0 : 1]  /*t*/ a;  /*t*/\n"
-     "  T1/*t*/    [0 : 1]  /*t*/ c;  /*t*/\n"
-     "endclass\n"},
-    {"always @(*/*t*/) begin\n"
-     "end\n",
-     "always @(*  /*t*/) begin\n"
-     "end\n"},
-    {"always @(/*t*/*) begin\n"
-     "end\n",
-     "always @(  /*t*/ *) begin\n"
-     "end\n"},
-    {"always @(/*t*/*/*t*/) begin\n"
-     "end\n",
-     "always @(  /*t*/ *  /*t*/) begin\n"
-     "end\n"},
-    {"always @(*) begin\n"
-     "end\n",
-     "always @(*) begin\n"
-     "end\n"},
-    {"always @(* ) begin\n"
-     "end\n",
-     "always @(*) begin\n"
-     "end\n"},
-    {"always @( *) begin\n"
-     "end\n",
-     "always @(*) begin\n"
-     "end\n"},
-    {"always @( * ) begin\n"
-     "end\n",
-     "always @(*) begin\n"
-     "end\n"},
-    {"always @(  /*t*/  *   /*t*/    ) begin\n"
-     "end\n",
-     "always @(  /*t*/ *  /*t*/) begin\n"
-     "end\n"},
-    {
-        // Don't touch verilog_format:off region #1538
-        R"(
-module testcode;
-  // verilog_format: off
-  assign a = b
-           & c;
-  // verilog_format: on
-      assign e = d;
-endmodule
-)",
-        R"(
-module testcode;
-  // verilog_format: off
-  assign a = b
-           & c;
-  // verilog_format: on
-  assign e = d;
-endmodule
-)",
-
-    },
-
-    // -----------------------------------------------------------------
 };
 
-// Tests that formatter produces expected results, end-to-end.
-TEST(FormatterEndToEndTest, VerilogFormatTest) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  for (const auto &test_case : kFormatterTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, AutoInferAlignment) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {"", ""},
-      {"\n", "\n"},
-      {"class  cc ;\n"
-       "endclass:cc\n",
-       "class cc;\n"
-       "endclass : cc\n"},
-
-      // module port declarations
-      {"module pd(\n"
-       "input wire foo,\n"
-       "output reg bar\n"
-       ");\n"
-       "endmodule:pd\n",
-       "module pd (\n"
-       "    input  wire foo,\n"  // flush-left vs. align are similar enough,
-       "    output reg  bar\n"   // so automatic policy will align.
-       ");\n"
-       "endmodule : pd\n"},
-      {"module pd(\n"
-       "input  foo_pkg::baz_t foo,\n"
-       "output reg  bar\n"
-       ");\n"
-       "endmodule:pd\n",
-       "module pd (\n"
-       "    input foo_pkg::baz_t foo,\n"  // alignment would add too many spaces
-       "    output reg bar\n"             // so infer intent to flush-left.
-       ");\n"
-       "endmodule : pd\n"},
-      {"module pd(\n"
-       "input  foo_pkg::baz_t foo,\n"
-       "output     reg  bar\n"  // user injects 4 excess spaces here ...
-       ");\n"
-       "endmodule:pd\n",
-       "module pd (\n"
-       "    input  foo_pkg::baz_t foo,\n"
-       "    output reg            bar\n"  // ... and triggers alignment.
-       ");\n"
-       "endmodule : pd\n"},
-      {"module pd(\n"
-       "`ifdef FAA\n"  // inside preprocessing conditional
-       "input  baaaz_t foo,\n"
-       "output reg      bar\n"  // user injects 4 excess spaces here ...
-       "`endif\n"
-       ");\n"
-       "endmodule:pd\n",
-       "module pd (\n"
-       "`ifdef FAA\n"
-       "    input  baaaz_t foo,\n"
-       "    output reg     bar\n"  // ... and triggers alignment.
-       "`endif\n"
-       ");\n"
-       "endmodule : pd\n"},
-      {"module pd(\n"
-       "`ifdef FAA\n"  // inside preprocessing conditional
-       "input  baaaz_t foo,\n"
-       "`else\n"
-       "output reg      bar\n"  // user injects 4 excess spaces here ...
-       "`endif\n"
-       ");\n"
-       "endmodule:pd\n",
-       "module pd (\n"
-       "`ifdef FAA\n"
-       "    input  baaaz_t foo,\n"  // aligned
-       "`else\n"                    // aligned across preprocessing directives
-       "    output reg     bar\n"   // ... and triggers alignment.
-       "`endif\n"
-       ");\n"
-       "endmodule : pd\n"},
-      {"module pd(\n"
-       "input logic [31:0] bus,\n"
-       "input logic [7:0] bus2,\n"
-       "`ifdef FAA\n"  // inside preprocessing conditional
-       "input  baaaz_t foo,\n"
-       "`else\n"
-       "output reg      bar,\n"  // user injects 4 excess spaces here ...
-       "`endif\n"
-       "output out_t zout1,\n"
-       "output out_t zout2\n"
-       ");\n"
-       "endmodule:pd\n",
-       "module pd (\n"
-       "    input  logic   [31:0] bus,\n"  // treated as one large group
-       "    input  logic   [ 7:0] bus2,\n"
-       "`ifdef FAA\n"
-       "    input  baaaz_t        foo,\n"  // aligned
-       "`else\n"  // aligned across preprocessing directives
-       "    output reg            bar,\n"  // ... and triggers alignment.
-       "`endif\n"
-       "    output out_t          zout1,\n"
-       "    output out_t          zout2\n"
-       ");\n"
-       "endmodule : pd\n"},
-      {"module pd(\n"
-       "input logic [7:0] bus2,\n"
-       "`ifndef FAA\n"  // inside preprocessing conditional
-       "input logic [31:0] bus,\n"
-       "input  baaaz_t foo,\n"
-       "`elsif BLA\n"
-       "output reg      bar,\n"  // user injects 4 excess spaces here ...
-       "output out_t zout1,\n"
-       "`endif\n"
-       "output out_t zout2\n"
-       ");\n"
-       "endmodule:pd\n",
-       "module pd (\n"
-       "    input  logic   [ 7:0] bus2,\n"
-       "`ifndef FAA\n"
-       "    input  logic   [31:0] bus,\n"  // treated as one large group
-       "    input  baaaz_t        foo,\n"  // aligned
-       "`elsif BLA\n"  // aligned across preprocessing directives
-       "    output reg            bar,\n"  // ... and triggers alignment.
-       "    output out_t          zout1,\n"
-       "`endif\n"
-       "    output out_t          zout2\n"
-       ");\n"
-       "endmodule : pd\n"},
-      {// data declaration and net declaration in ports
-       "module m(\n"
-       "logic [x:y]a    ,\n"    // packed dimensions, induce alignment
-       "wire [pp:qq] [e:f]b\n"  // packed dimensions, 2D
-       ") ;\n"
-       "endmodule\n",
-       "module m (\n"
-       "    logic [  x:y]      a,\n"
-       "    wire  [pp:qq][e:f] b\n"
-       ");\n"
-       "endmodule\n"},
-      {// used-defined data declarations in ports
-       "module m(\n"
-       "a::bb [x:y]a    ,\n"       // packed dimensions, induce alignment
-       "c#(d,e) [pp:qq] [e:f]b\n"  // packed dimensions, 2D
-       ") ;\n"
-       "endmodule\n",
-       "module m (\n"
-       "    a::bb    [  x:y]      a,\n"
-       "    c#(d, e) [pp:qq][e:f] b\n"
-       ");\n"
-       "endmodule\n"},
-
-      // named parameter arguments
-      {"module  mm ;\n"
-       "foo #(\n"
-       ".a(a),\n"
-       ".bb(bb)\n"
-       ")bar( );\n"
-       "endmodule:mm\n",
-       "module mm;\n"
-       "  foo #(\n"
-       "      .a (a),\n"  // align doesn't add too many spaces, so align
-       "      .bb(bb)\n"
-       "  ) bar ();\n"
-       "endmodule : mm\n"},
-      {"module  mm ;\n"
-       "foo #(\n"
-       ".a(a),\n"
-       ".bbcccc(bb)\n"
-       ")bar( );\n"
-       "endmodule:mm\n",
-       "module mm;\n"
-       "  foo #(\n"
-       "      .a(a),\n"  // align would add too many spaces, so flush-left
-       "      .bbcccc(bb)\n"
-       "  ) bar ();\n"
-       "endmodule : mm\n"},
-      {"module  mm ;\n"
-       "foo #(\n"
-       ".a(a    ),\n"  // user manually triggers alignment with excess spaces
-       ".bbcccc(bb)\n"
-       ")bar( );\n"
-       "endmodule:mm\n",
-       "module mm;\n"
-       "  foo #(\n"
-       "      .a     (a),\n"  // induced alignment
-       "      .bbcccc(bb)\n"
-       "  ) bar ();\n"
-       "endmodule : mm\n"},
-      {"module  mm ;\n"
-       "foo #(\n"
-       "//c1\n"        // with comments (indented but not aligned)
-       ".a(a    ),\n"  // user manually triggers alignment with excess spaces
-       "//c2\n"
-       ".bbcccc(bb)\n"
-       "//c3\n"
-       ")bar( );\n"
-       "endmodule:mm\n",
-       "module mm;\n"
-       "  foo #(\n"
-       "      //c1\n"
-       "      .a     (a),\n"  // induced alignment
-       "      //c2\n"
-       "      .bbcccc(bb)\n"
-       "      //c3\n"
-       "  ) bar ();\n"
-       "endmodule : mm\n"},
-      {"module  mm ;\n"
-       "foo #(\n"
-       ".a( (1     +2)),\n"  // excess spaces, testing extra parentheses
-       ".bbcccc((c*d)+(e*f))\n"
-       ")bar( );\n"
-       "endmodule:mm\n",
-       "module mm;\n"
-       "  foo #(\n"
-       "      .a     ((1 + 2)),\n"  // induced alignment
-       "      .bbcccc((c * d) + (e * f))\n"
-       "  ) bar ();\n"
-       "endmodule : mm\n"},
-
-      // named port connections
-      {"module  mm ;\n"
-       "foo bar(\n"
-       ".a(a),\n"
-       ".bb(bb)\n"
-       ");\n"
-       "endmodule:mm\n",
-       "module mm;\n"
-       "  foo bar (\n"
-       "      .a (a),\n"  // align doesn't add too many spaces, so align
-       "      .bb(bb)\n"
-       "  );\n"
-       "endmodule : mm\n"},
-      {"module  mm ;\n"
-       "foo bar(\n"
-       ".a(a),\n"
-       ".bbbbbb(bb)\n"
-       ");\n"
-       "endmodule:mm\n",
-       "module mm;\n"
-       "  foo bar (\n"
-       "      .a(a),\n"  // align would add too many spaces, so flush-left
-       "      .bbbbbb(bb)\n"
-       "  );\n"
-       "endmodule : mm\n"},
-      {"module  mm ;\n"
-       "foo bar(\n"
-       ".a    (a),\n"  // user manually triggers alignment with excess spaces
-       ".bbbbbb(bb)\n"
-       ");\n"
-       "endmodule:mm\n",
-       "module mm;\n"
-       "  foo bar (\n"
-       "      .a     (a),\n"  // alignment fixed
-       "      .bbbbbb(bb)\n"
-       "  );\n"
-       "endmodule : mm\n"},
-
-      // net variable declarations
-      {"module nn;\n"
-       "wire wwwww;\n"
-       "logic lll;\n"
-       "endmodule : nn\n",
-       "module nn;\n"
-       "  wire  wwwww;\n"  // alignment adds few spaces, so align
-       "  logic lll;\n"
-       "endmodule : nn\n"},
-      {"module nn;\n"
-       "wire wwwww;\n"
-       "foo_pkg::baz_t lll;\n"
-       "endmodule : nn\n",
-       "module nn;\n"
-       "  wire wwwww;\n"  // alignment adds too many spaces, so flush-left
-       "  foo_pkg::baz_t lll;\n"
-       "endmodule : nn\n"},
-      {"module nn;\n"
-       "wire     wwwww;\n"  // user injects spaces to trigger alignment
-       "foo_pkg::baz_t lll;\n"
-       "endmodule : nn\n",
-       "module nn;\n"
-       "  wire           wwwww;\n"  // ... and gets alignment
-       "  foo_pkg::baz_t lll;\n"
-       "endmodule : nn\n"},
-      {// data/net declarations as generate items (conditional)
-       "module nn;\n"
-       "if (cc)begin:fff\n"
-       "wire wwwww;\n"
-       "logic lll;\n"
-       "end:fff\n"
-       "endmodule : nn\n",
-       "module nn;\n"
-       "  if (cc) begin : fff\n"
-       "    wire  wwwww;\n"  // alignment adds few spaces, so align
-       "    logic lll;\n"
-       "  end : fff\n"
-       "endmodule : nn\n"},
-
-      // continuous assignments
-      {"module m_assign;\n"
-       "assign foo = 1'b1;\n"  // alignment adds few spaces, so align
-       "assign baar = 1'b0;\n"
-       "endmodule\n",
-       "module m_assign;\n"
-       "  assign foo  = 1'b1;\n"  // aligned
-       "  assign baar = 1'b0;\n"
-       "endmodule\n"},
-      {"module m_assign;\n"
-       "assign foo  =  1'b1;\n"  // alignment adds too many spaces, so
-                                 // flush-left
-       "assign baaaaaar = 1'b0;\n"
-       "endmodule\n",
-       "module m_assign;\n"
-       "  assign foo = 1'b1;\n"  // flush-left
-       "  assign baaaaaar = 1'b0;\n"
-       "endmodule\n"},
-      {"module m_assign;\n"
-       "assign foo  =     1'b1;\n"  // induce alignment with excess spaces
-       "assign baaaaaar = 1'b0;\n"
-       "endmodule\n",
-       "module m_assign;\n"
-       "  assign foo      = 1'b1;\n"  // aligned
-       "  assign baaaaaar = 1'b0;\n"
-       "endmodule\n"},
-      {// currently, does not assign across ifdefs
-       "module m_assign;\n"
-       "`ifdef FOO\n"
-       "assign foo  =     1'b1;\n"  // induce alignment with excess spaces
-       "assign baaaaaar = 1'b0;\n"
-       "`else\n"
-       "assign zooo = 2'b11;\n"
-       "assign yoo = 2'b00;\n"
-       "`endif\n"
-       "endmodule\n",
-       "module m_assign;\n"
-       "`ifdef FOO\n"
-       "  assign foo      = 1'b1;\n"  // aligned
-       "  assign baaaaaar = 1'b0;\n"
-       "`else\n"                   // aligned separately above/below
-       "  assign zooo = 2'b11;\n"  // aligned
-       "  assign yoo  = 2'b00;\n"  // aligned
-       "`endif\n"
-       "endmodule\n"},
-      {// mixed net declaration and continuous assignment, both groups aligned
-       "module m_assign;\n"
-       "wire     wwwww;\n"  // induce alignment
-       "foo_pkg::baz_t lll;\n"
-       "assign foo  =     1'b1;\n"  // induce alignment
-       "assign baaaaaar = 1'b0;\n"
-       "endmodule\n",
-       "module m_assign;\n"
-       "  wire           wwwww;\n"  // aligned
-       "  foo_pkg::baz_t lll;\n"
-       "  assign foo      = 1'b1;\n"  // aligned
-       "  assign baaaaaar = 1'b0;\n"
-       "endmodule\n"},
-      {// continuous assignments as generate items (conditional)
-       "module m_assign;\n"
-       "if (xy) begin\n"
-       "assign foo  =  1'b0;\n"  // align: adds few spaces
-       "assign baaar = 1'b1;\n"
-       "end else begin\n"
-       "assign goo  =      1'b1;\n"  // induce alignment with excess spaces
-       "assign zaaaaaar = 1'b0;\n"
-       "end\n"
-       "endmodule\n",
-       "module m_assign;\n"
-       "  if (xy) begin\n"
-       "    assign foo   = 1'b0;\n"  // aligned
-       "    assign baaar = 1'b1;\n"
-       "  end else begin\n"
-       "    assign goo      = 1'b1;\n"  // induce alignment with excess spaces
-       "    assign zaaaaaar = 1'b0;\n"
-       "  end\n"
-       "endmodule\n"},
-      {// continuous assignments as generate items (loop)
-       "module m_assign;\n"
-       "for(genvar i=0; i<k; ++i ) begin\n"
-       "assign foo  =  1'b0;\n"  // align: adds few spaces
-       "assign baaar = 1'b1;\n"
-       "end\n"
-       "endmodule\n",
-       "module m_assign;\n"
-       "  for (genvar i = 0; i < k; ++i) begin\n"
-       "    assign foo   = 1'b0;\n"  // aligned
-       "    assign baaar = 1'b1;\n"
-       "  end\n"
-       "endmodule\n"},
-      {// continuous assignments as generate items (case)
-       "module m_assign;\n"
-       "case (c)\n"
-       "jk:begin\n"
-       "assign foo  =  1'b0;\n"  // align: adds few spaces
-       "assign baaar = 1'b1;\n"
-       "end\n"
-       "endcase\n"
-       "endmodule\n",
-       "module m_assign;\n"
-       "  case (c)\n"
-       "    jk: begin\n"
-       "      assign foo   = 1'b0;\n"  // aligned
-       "      assign baaar = 1'b1;\n"
-       "    end\n"
-       "  endcase\n"
-       "endmodule\n"},
-      {// continuous assignment with comment
-       "module m;\n"
-       "// comment1\n"
-       "assign aaaaa = (bbbbb != ccccc) &\n"
-       "// comment2\n"
-       "(ddddd | (eeeee & ffffff));\n"
-       "endmodule\n",
-       "module m;\n"
-       "  // comment1\n"
-       "  assign aaaaa = (bbbbb != ccccc) &\n"
-       "      // comment2\n"
-       "      (ddddd | (eeeee & ffffff));\n"
-       "endmodule\n"},
-
-      // net/variable assignments: blocking and nonblocking
-      {"module  ma ;\n"
-       "initial  begin\n"
-       "aa = b;\n"
-       "c = 1'b0;\n"
-       "end\n"
-       "endmodule\n",
-       "module ma;\n"
-       "  initial begin\n"
-       "    aa = b;\n"
-       "    c  = 1'b0;\n"  // only one space to align
-       "  end\n"
-       "endmodule\n"},
-      {"function void  fa ;\n"
-       "c = 1'b0;\n"
-       "aa = b;\n"
-       "endfunction\n",
-       "function void fa;\n"
-       "  c  = 1'b0;\n"  // only one space to align
-       "  aa = b;\n"
-       "endfunction\n"},
-      {"task  ta ; \n"
-       "aa =  b;\n"
-       "c = 1'b0;\n"
-       "endtask\n",
-       "task ta;\n"
-       "  aa = b;\n"
-       "  c  = 1'b0;\n"  // only one space to align
-       "endtask\n"},
-      {"module  ma ;\n"
-       "always@( posedge clk) begin\n"
-       "aaa <= b;\n"
-       "c <= 1'b0;\n"
-       "end\n"
-       "endmodule\n",
-       "module ma;\n"
-       "  always @(posedge clk) begin\n"
-       "    aaa <= b;\n"
-       "    c   <= 1'b0;\n"  // only two spaces to align
-       "  end\n"
-       "endmodule\n"},
-      {"function int  fa ;\n"
-       "c <= 1'b0;\n"
-       "aa <= b;\n"
-       "return 0 ;\n"
-       "endfunction\n",
-       "function int fa;\n"
-       "  c  <= 1'b0;\n"  // only one space to align
-       "  aa <= b;\n"
-       "  return 0;\n"
-       "endfunction\n"},
-      {"task  ta ; \n"
-       "$display (\"hello\" );\n"
-       "aa <=  b;\n"
-       "c <= 1'b0;\n"
-       "endtask\n",
-       "task ta;\n"
-       "  $display(\"hello\");\n"
-       "  aa <= b;\n"
-       "  c  <= 1'b0;\n"  // only one space to align
-       "endtask\n"},
-      {// mixed blocking and nonblocking assignments
-       "module  ma ;\n"
-       "always@( posedge clk) begin\n"
-       "aaaaa  = b;\n"
-       "ccc  = 1'b0;\n"
-       "aaa <= b;\n"
-       "c <= 1'b0;\n"
-       "end\n"
-       "endmodule\n",
-       "module ma;\n"
-       "  always @(posedge clk) begin\n"
-       "    aaaaa = b;\n"
-       "    ccc   = 1'b0;\n"  // only two spaces to align
-       "    aaa <= b;\n"
-       "    c   <= 1'b0;\n"  // only two spaces to align (separate group)
-       "  end\n"
-       "endmodule\n"},
-      {"task  ta ; \n"
-       "aa <=  b;\n"
-       "c <= 1'b0;\n"
-       "$display (\"hello\" );\n"  // separates above/below alignment groups
-       "zzaa <=  b;\n"
-       "zzc <= 1'b0;\n"
-       "endtask\n",
-       "task ta;\n"
-       "  aa <= b;\n"
-       "  c  <= 1'b0;\n"  // only one space to align
-       "  $display(\"hello\");\n"
-       "  zzaa <= b;\n"
-       "  zzc  <= 1'b0;\n"  // only one space to align
-       "endtask\n"},
-      {"task  ta ; \n"
-       "$display (\"hello\" );\n"
-       "aaaaa <=  b;\n"
-       "c <= 1'b0;\n"  // need too many spaces to align
-       "endtask\n",
-       "task ta;\n"
-       "  $display(\"hello\");\n"
-       "  aaaaa <= b;\n"
-       "  c <= 1'b0;\n"  // so keep flush-left
-       "endtask\n"},
-      {"function void  fa ; \n"
-       "$display (\"hello\" );\n"
-       "aaaaa =  b;\n"
-       "c = 1'b0;\n"  // need too many spaces to align
-       "endfunction\n",
-       "function void fa;\n"
-       "  $display(\"hello\");\n"
-       "  aaaaa = b;\n"
-       "  c = 1'b0;\n"  // so keep flush-left
-       "endfunction\n"},
-      {"module  ma ;\n"
-       "always@( posedge clk) begin\n"
-       "aaaxx <= b;\n"
-       "c <= 1'b0;\n"  // need too many spaces to align
-       "end\n"
-       "endmodule\n",
-       "module ma;\n"
-       "  always @(posedge clk) begin\n"
-       "    aaaxx <= b;\n"
-       "    c <= 1'b0;\n"  // so keep flush-left
-       "  end\n"
-       "endmodule\n"},
-      {"module  ma ;\n"
-       "always@( posedge clk) begin\n"
-       "aaaxx <= b    ;\n"  // inject 4 spaces to induce alignment
-       "c <= 1'b0;\n"
-       "end\n"
-       "endmodule\n",
-       "module ma;\n"
-       "  always @(posedge clk) begin\n"
-       "    aaaxx <= b;\n"
-       "    c     <= 1'b0;\n"  // induced alignment
-       "  end\n"
-       "endmodule\n"},
-      {"module  ma ;\n"
-       "always@( posedge clk) begin\n"
-       "aaaxx <= b    ;\n"  // inject 4 spaces to induce alignment
-       "//comment\n"
-       "c <= 1'b0;\n"
-       "end\n"
-       "endmodule\n",
-       "module ma;\n"
-       "  always @(posedge clk) begin\n"
-       "    aaaxx <= b;\n"
-       "    //comment\n"       // ignored within alignment group
-       "    c     <= 1'b0;\n"  // induced alignment
-       "  end\n"
-       "endmodule\n"},
-
-      // local variable declarations as statements
-      {"task tt ;\n"
-       "int foo;\n"  // only 2 spaces needed to align
-       "bar_t baz;\n"
-       "endtask\n",
-       "task tt;\n"
-       "  int   foo;\n"  // aligned
-       "  bar_t baz;\n"
-       "endtask\n"},
-      {"function ff ;\n"
-       "bar_t baz;\n"
-       "int foo;\n"  // only 2 spaces needed to align
-       "endfunction\n",
-       "function ff;\n"
-       "  bar_t baz;\n"
-       "  int   foo;\n"  // aligned
-       "endfunction\n"},
-      {"task tt ;\n"
-       "int  foo;\n"  // too many spaces needed to align
-       "baaaar_t baz;\n"
-       "endtask\n",
-       "task tt;\n"
-       "  int foo;\n"  // so flush-left
-       "  baaaar_t baz;\n"
-       "endtask\n"},
-      {"function ff ;\n"
-       "baaaar_t baz;\n"
-       "int  foo;\n"  // too many spaces needed to align
-       "endfunction\n",
-       "function ff;\n"
-       "  baaaar_t baz;\n"
-       "  int foo;\n"  // so flush-left
-       "endfunction\n"},
-      {"task tt ;\n"
-       "int        foo;\n"  // injected spaces to induce alignment
-       "baaaar_t baz;\n"
-       "endtask\n",
-       "task tt;\n"
-       "  int      foo;\n"  // aligned
-       "  baaaar_t baz;\n"
-       "endtask\n"},
-      {"function ff ;\n"
-       "baaaar_t baz    ;\n"  // injected spaces to induce alignment
-       "int  foo;\n"
-       "endfunction\n",
-       "function ff;\n"
-       "  baaaar_t baz;\n"
-       "  int      foo;\n"  // so aligned
-       "endfunction\n"},
-
-      // formal parameters
-      {"module pp #(\n"
-       "int W,\n"
-       "type T\n"
-       ") ();\n"
-       "endmodule : pp\n",
-       "module pp #(\n"
-       "    int  W,\n"  // alignment adds few spaces, so do it
-       "    type T\n"
-       ") ();\n"
-       "endmodule : pp\n"},
-      {"module pp #(\n"
-       "int W,\n"
-       "int[xx:yy] T\n"
-       ") ();\n"
-       "endmodule : pp\n",
-       "module pp #(\n"
-       "    int W,\n"  // alignment adds many spaces, so flush-left
-       "    int [xx:yy] T\n"
-       ") ();\n"
-       "endmodule : pp\n"},
-      {"module pp #(\n"
-       "int W,\n"
-       "int[xx:yy]     T\n"  // user injected spaces intentionally
-       ") ();\n"
-       "endmodule : pp\n",
-       "module pp #(\n"
-       "    int         W,\n"  // ... trigger alignment
-       "    int [xx:yy] T\n"
-       ") ();\n"
-       "endmodule : pp\n"},
-
-      // class member variables
-      {"class  cc ;\n"
-       "int my_int;\n"
-       "bar_t my_bar;\n"
-       "endclass:cc\n",
-       "class cc;\n"
-       "  int   my_int;\n"  // align doesn't add too many spaces, so align
-       "  bar_t my_bar;\n"
-       "endclass : cc\n"},
-      {"class  cc ;\n"
-       "int   my_int;\n"
-       "foo_pkg::bar_t my_bar;\n"
-       "endclass:cc\n",
-       "class cc;\n"
-       "  int my_int;\n"  // align would add too many spaces, so flush-left
-       "  foo_pkg::bar_t my_bar;\n"
-       "endclass : cc\n"},
-      {"class  cc ;\n"
-       "int     my_int;\n"  // intentional excessive spaces, trigger alignment
-       "foo_pkg::bar_t my_bar;\n"
-       "endclass:cc\n",
-       "class cc;\n"
-       "  int            my_int;\n"
-       "  foo_pkg::bar_t my_bar;\n"
-       "endclass : cc\n"},
-      {"class  cc ;\n"
-       "int    my_int;\n"  // unable to infer user's intent, so preserve
-       "foo_pkg::bar_t  my_bar;\n"
-       "endclass:cc\n",
-       "class cc;\n"
-       "  int    my_int;\n"  // ... but still indent
-       "  foo_pkg::bar_t  my_bar;\n"
-       "endclass : cc\n"},
-
-      // case item test cases
-      {// small difference between flush-left and align, so align
-       "function f; case (x)kZZZZ  :if( b )break; default :return 2;"
-       "endcase endfunction\n",
-       "function f;\n"
-       "  case (x)\n"
-       "    kZZZZ:   if (b) break;\n"  // aligned, only adds 2 spaces
-       "    default: return 2;\n"
-       "  endcase\n"
-       "endfunction\n"},
-      {// small error relative to flush-left, so flush-left
-       "function f; case (x)kZ  :if( b )break; default :return 2;"
-       "endcase endfunction\n",
-       "function f;\n"
-       "  case (x)\n"
-       "    kZ: if (b) break;\n"  // flush-left
-       "    default: return 2;\n"
-       "  endcase\n"
-       "endfunction\n"},
-      {// intentional spacing error (delta=4) induces alignment
-       "function f; case (x)kZ  :if( b )break; default    :return 2;"
-       "endcase endfunction\n",
-       "function f;\n"
-       "  case (x)\n"
-       "    kZ:      if (b) break;\n"
-       "    default: return 2;\n"
-       "  endcase\n"
-       "endfunction\n"},
-      {// induced alignment, with ignored comments
-       "function f; case (x)kZ  :if( b )break; \n//c1\n kXX: g = f; "
-       "\n//c2\ndefault    :return 2;"
-       "endcase endfunction\n",
-       "function f;\n"
-       "  case (x)\n"
-       "    kZ:      if (b) break;\n"
-       "    //c1\n"
-       "    kXX:     g = f;\n"
-       "    //c2\n"
-       "    default: return 2;\n"
-       "  endcase\n"
-       "endfunction\n"},
-      {// induced alignment, ignore multiline case item in the middle
-       "function f; case (x)"
-       "kZ  :if( b )break; "
-       "kYY    :return 2;"          // excess spaces induce alignment
-       "    kXXXXXXXXX: begin end"  // multi-line, ignored
-       "    kWWWWW: cc = 23;\n"
-       "    kVVV: cd = 24;\n"
-       "endcase endfunction\n",
-       "function f;\n"
-       "  case (x)\n"
-       "    kZ:     if (b) break;\n"
-       "    kYY:    return 2;\n"
-       "    kXXXXXXXXX: begin\n"  // separates above/below groups
-       "    end\n"
-       "    kWWWWW: cc = 23;\n"
-       "    kVVV:   cd = 24;\n"  // aligned
-       "  endcase\n"
-       "endfunction\n"},
-      {// induced alignment, ignore multiline case item in the middle
-       "function f; case (x)"
-       "kZ  :if( b )break; "
-       "kYY    :return 2;"               // excess spaces induce alignment
-       "    kXXXXXXXXX: if(w)begin end"  // multi-line, ignored
-       "    kWWWWW: cc = 23;\n"
-       "    kVVV: cd = 24;\n"
-       "endcase endfunction\n",
-       "function f;\n"
-       "  case (x)\n"
-       "    kZ:     if (b) break;\n"
-       "    kYY:    return 2;\n"
-       "    kXXXXXXXXX:\n"   // TODO(fangism): allow this to merge with if()
-                             // else indent the following two lines
-       "    if (w) begin\n"  // separates above/below groups
-       "    end\n"
-       "    kWWWWW: cc = 23;\n"
-       "    kVVV:   cd = 24;\n"  // aligned
-       "  endcase\n"
-       "endfunction\n"},
-      {// induced alignment, ignore multiline case item in the middle
-       "task t; case (x)"
-       "kZ  :if( b )break; "
-       "kYY    :return 2;"           // excess spaces induce alignment
-       "    kXXXXXXXXX: fork  join"  // multi-line, ignored
-       "    kWWWWW: cc = 23;\n"
-       "    kVVV: cd = 24;\n"
-       "endcase endtask\n",
-       "task t;\n"
-       "  case (x)\n"
-       "    kZ:     if (b) break;\n"
-       "    kYY:    return 2;\n"
-       "    kXXXXXXXXX:\n"  // TODO(fangism): allow this to merge with fork
-                            // else indent the following two lines
-       "    fork\n"         // separates above/below groups
-       "    join\n"
-       "    kWWWWW: cc = 23;\n"
-       "    kVVV:   cd = 24;\n"  // aligned
-       "  endcase\n"
-       "endtask\n"},
-      {// case-inside: small difference between flush-left and align, so align
-       "function f; case (x)inside [0:3]  :yy=zzz; [4:11] :yy=zz;"
-       "endcase endfunction\n",
-       "function f;\n"
-       "  case (x) inside\n"
-       "    [0 : 3]:  yy = zzz;\n"  // aligned, only adds 1 spaces
-       "    [4 : 11]: yy = zz;\n"
-       "  endcase\n"
-       "endfunction\n"},
-      {// case-inside: align with comments
-       "function f; case (x)inside \n//c1\n[0:3]  :yy=zzz;\n//c2\n"
-       " [4:11] :yy=zz;\n//c3\n"
-       "endcase endfunction\n",
-       "function f;\n"
-       "  case (x) inside\n"
-       "    //c1\n"
-       "    [0 : 3]:  yy = zzz;\n"  // aligned, only adds 1 spaces
-       "    //c2\n"
-       "    [4 : 11]: yy = zz;\n"
-       "    //c3\n"
-       "  endcase\n"
-       "endfunction\n"},
-      {// case-inside: flush left
-       "function f; case (x)inside [0:3]  :yy=zzz; [4:999999] :yy=zz;"
-       "endcase endfunction\n",
-       "function f;\n"
-       "  case (x) inside\n"
-       "    [0 : 3]: yy = zzz;\n"  // flush-left
-       "    [4 : 999999]: yy = zz;\n"
-       "  endcase\n"
-       "endfunction\n"},
-      {// case-inside: induce alignment
-       "function f; case (x)inside [0:3    ]  :yy=zzz; [4:999999] :yy=zz;"
-       "endcase endfunction\n",
-       "function f;\n"
-       "  case (x) inside\n"
-       "    [0 : 3]:      yy = zzz;\n"  // aligned
-       "    [4 : 999999]: yy = zz;\n"
-       "  endcase\n"
-       "endfunction\n"},
-      {// case-generate: align would add few spaces, so align
-       "module mc ; case (x)kZ  : gg h(); kXYY :j kk();"
-       "endcase endmodule\n",
-       "module mc;\n"
-       "  case (x)\n"
-       "    kZ:   gg h ();\n"  // align
-       "    kXYY: j kk ();\n"
-       "  endcase\n"
-       "endmodule\n"},
-      {// case-generate + comment: align would add few spaces, so align
-       "module mc ; case (x)kZ  : gg h(); \n//c1\n kXYY :j kk();"
-       "endcase endmodule\n",
-       "module mc;\n"
-       "  case (x)\n"
-       "    kZ:   gg h ();\n"  // align
-       "    //c1\n"
-       "    kXYY: j kk ();\n"
-       "  endcase\n"
-       "endmodule\n"},
-      {// case-generate: align would add too many space, so flush-left
-       "module mc ; case (x)kZ  : gg h(); kXYYYY :j kk();"
-       "endcase endmodule\n",
-       "module mc;\n"
-       "  case (x)\n"
-       "    kZ: gg h ();\n"  // flush-left
-       "    kXYYYY: j kk ();\n"
-       "  endcase\n"
-       "endmodule\n"},
-      {// case-generate: inject spaces to induce alignment
-       "module mc ; case (x)kZ  : gg h(); kXYYYY :     j kk();"
-       "endcase endmodule\n",
-       "module mc;\n"
-       "  case (x)\n"
-       "    kZ:     gg h ();\n"  // align
-       "    kXYYYY: j kk ();\n"
-       "  endcase\n"
-       "endmodule\n"},
-      {// randcase: align (small difference from flush-left)
-       "task trc  ;randcase 10: x = 1; 1: x = 3; endcase endtask",
-       "task trc;\n"
-       "  randcase\n"
-       "    10: x = 1;\n"
-       "    1:  x = 3;\n"  // aligned
-       "  endcase\n"
-       "endtask\n"},
-      {// randcase: inferred flush-left
-       "task trc  ;randcase 10000: x = 1; 1: x = 3; endcase endtask",
-       "task trc;\n"
-       "  randcase\n"
-       "    10000: x = 1;\n"
-       "    1: x = 3;\n"
-       "  endcase\n"
-       "endtask\n"},
-      {// randcase: induce alignment
-       "task trc  ;randcase 10000: x = 1    ; 1: x = 3; endcase endtask",
-       "task trc;\n"
-       "  randcase\n"
-       "    10000: x = 1;\n"
-       "    1:     x = 3;\n"  // aligned
-       "  endcase\n"
-       "endtask\n"},
-
-      // distributions
-      {"class foo;\n"
-       "constraint c { "
-       "timer_enable dist {\n"
-       "8'hfe :=  9 , \n"
-       "12'hfff  := 1 }; "
-       "} endclass\n",
-       "class foo;\n"
-       "  constraint c {\n"
-       "    timer_enable dist {\n"
-       "      8'hfe   := 9,\n"  // only two spaces needed to align
-       "      12'hfff := 1\n"   // so align
-       "    };\n"
-       "  }\n"
-       "endclass\n"},
-      {"class foo;\n"
-       "constraint c { "
-       "timer_enable dist {\n"
-       "[ 8'h0 : 8'hfe ] :/  9 , \n"
-       "8'hff  :/ 1 }; "  // takes many spaces to align this, so...
-       "} endclass\n",
-       "class foo;\n"
-       "  constraint c {\n"
-       "    timer_enable dist {\n"
-       "      [8'h0 : 8'hfe] :/ 9,\n"
-       "      8'hff :/ 1\n"  // flush-left
-       "    };\n"
-       "  }\n"
-       "endclass\n"},
-      {"class foo;\n"
-       "constraint c { "
-       "timer_enable dist {\n"
-       "[ 8'h0 : 8'hfe ] :/  9 , \n"
-       "8'hff  :/     1 }; "  // inject excess spaces to trigger alignment
-       "} endclass\n",
-       "class foo;\n"
-       "  constraint c {\n"
-       "    timer_enable dist {\n"
-       "      [8'h0 : 8'hfe] :/ 9,\n"
-       "      8'hff          :/ 1\n"  // aligned
-       "    };\n"
-       "  }\n"
-       "endclass\n"},
-      {"class foo;\n"
-       "constraint c { "
-       "timer_enable dist {\n"
-       "//comment1\n"
-       "[ 8'h0 : 8'hfe ] :/  9 , \n"
-       "//comment2\n"
-       "8'hff  :/     1 \n"
-       "//comment3\n"
-       "}; "  // inject excess spaces to trigger alignment
-       "} endclass\n",
-       "class foo;\n"
-       "  constraint c {\n"
-       "    timer_enable dist {\n"
-       "      //comment1\n"
-       "      [8'h0 : 8'hfe] :/ 9,\n"
-       "      //comment2\n"           // align across comment
-       "      8'hff          :/ 1\n"  // aligned
-       "      //comment3\n"
-       "    };\n"
-       "  }\n"
-       "endclass\n"},
-      {"module foo ();\n"
-       "  always @(posedge bar) begin\n"
-       "    if (1==1) begin\n"
-       "      ham();\n"
-       "    end else if (2==2) begin\n"
-       "      jam();\n"
-       "    end else begin\n"
-       "      spam();\n"
-       "    end\n"
-       "  end\n"
-       "endmodule\n",
-       "module foo ();\n"
-       "  always @(posedge bar) begin\n"
-       "    if (1 == 1) begin\n"
-       "      ham();\n"
-       "    end else if (2 == 2) begin\n"
-       "      jam();\n"
-       "    end else begin\n"
-       "      spam();\n"
-       "    end\n"
-       "  end\n"
-       "endmodule\n"},
-  };
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  // Override some settings to test auto-inferred alignment.
-  style.ApplyToAllAlignmentPolicies(AlignmentPolicy::kInferUserIntent);
-
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}  // NOLINT(readability/fn_size)
-
-static constexpr FormatterTestCase kFormatterWideTestCases[] = {
-    // specify blocks
-    {"module  specify_tests ;\n"
-     "specify\n"  // empty list
-     "endspecify\n"
-     "endmodule",
-     "module specify_tests;\n"
-     "  specify\n"
-     "  endspecify\n"
-     "endmodule\n"},
-    {"module  specify_tests ;\n"
-     "specify\n"
-     "$recrem (posedge R, posedge C,\n"
-     "t1, t2);\n"
-     "endspecify\n"
-     "endmodule",
-     "module specify_tests;\n"
-     "  specify\n"
-     "    $recrem(posedge R, posedge C, t1, t2);\n"
-     "  endspecify\n"
-     "endmodule\n"},
-    {"module  specify_tests ;\n"
-     "specify\n"
-     "// TODO: add this\n"
-     "endspecify \n"
-     "endmodule",
-     "module specify_tests;\n"
-     "  specify\n"
-     "    // TODO: add this\n"
-     "  endspecify\n"
-     "endmodule\n"},
-    {"module  specify_tests ;\n"
-     "specify  \n"
-     "  //c1\n"
-     "$setup (  posedge A, posedge B,\n"
-     "t1);//c2\n"
-     " //c3\n"
-     "$hold (  posedge B , posedge A,t2);    //c4\n"
-     "\t//c5\n"
-     "endspecify\n"
-     "endmodule",
-     "module specify_tests;\n"
-     "  specify\n"
-     "    //c1\n"
-     "    $setup(posedge A, posedge B, t1);  //c2\n"
-     "    //c3\n"
-     "    $hold(posedge B, posedge A, t2);  //c4\n"
-     "    //c5\n"
-     "  endspecify\n"
-     "endmodule\n"},
-    {"module  specify_tests ;\n"
-     "specify  \n"
-     "$setup (  posedge A, posedge B,\n"
-     "t1);\n"
-     "$hold (  posedge B , posedge A,t2);\n"
-     "endspecify\n"
-     "endmodule",
-     "module specify_tests;\n"
-     "  specify\n"
-     "    $setup(posedge A, posedge B, t1);\n"
-     "    $hold(posedge B, posedge A, t2);\n"
-     "  endspecify\n"
-     "endmodule\n"},
-    {"module  specify_tests ;\n"
-     "specify  \n"
-     "  `ifdef CCC\n"
-     "$setup (  posedge A, posedge B,\n"
-     "t1);\n"
-     " `else\n"
-     "$hold (  posedge B , posedge A,t2);   \n"
-     "\t`endif\n"
-     "endspecify\n"
-     "endmodule",
-     "module specify_tests;\n"
-     "  specify\n"
-     "`ifdef CCC\n"
-     "    $setup(posedge A, posedge B, t1);\n"
-     "`else\n"
-     "    $hold(posedge B, posedge A, t2);\n"
-     "`endif\n"
-     "  endspecify\n"
-     "endmodule\n"},
-};
-
-// These tests just need a larger column limit to fit on one line.
-TEST(FormatterEndToEndTest, VerilogFormatWideTest) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 60;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  for (const auto &test_case : kFormatterWideTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, DisableModulePortDeclarations) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {"", ""},
-      {"\n", "\n"},
-      {"\n\n", "\n\n"},
-      {"module  m  ;\t\n"
-       "  endmodule\n",
-       "module m;\n"
-       "endmodule\n"},
-      {"module  m(   ) ;\n"
-       "  endmodule\n",
-       "module m ();\n"  // empty ports formatted compactly
-       "endmodule\n"},
-      {// for a single port, the alignment handler doesn't even consider it a
-       // group so it falls back to standard flush-left behavior.
-       "module  m   ( input     clk  )\t;\n"
-       "  endmodule\n",
-       "module m (\n"
-       "    input clk\n"
-       ");\n"
-       "endmodule\n"},
-      {// example with two ports
-       "module  m   (\n"
-       "input  clk,\n"
-       "output bar\n"
-       ")\t;\n"
-       "  endmodule\n",
-       "module m (\n"
-       "    input  clk,\n"  // indented, but internal pre-existing spacing
-                            // preserved
-       "    output bar\n"
-       ");\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.port_declarations_alignment = verible::AlignmentPolicy::kPreserve;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, DisableModuleInstantiations) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {"", ""},
-      {"\n", "\n"},
-      {"\n\n", "\n\n"},
-      {"module  m  ;\t\n"
-       "  endmodule\n",
-       "module m;\n"
-       "endmodule\n"},
-      {"module  m  ;\t\n"
-       "foo bar();"
-       "  endmodule\n",
-       "module m;\n"
-       "  foo bar ();\n"  // indentation still takes effect
-       "endmodule\n"},
-      {"module  m  ;\t\n"
-       "logic   xyz;"
-       "wire\tabc;"
-       "  endmodule\n",
-       "module m;\n"
-       "  logic xyz;\n"  // indentation still takes effect
-       "  wire  abc;\n"  // aligned too
-       "endmodule\n"},
-      {"  function f  ;\t\n"
-       " endfunction\n",
-       "function f;\n"
-       "endfunction\n"},
-      {"  function f  ;\t"
-       "foo  bar,baz; "
-       " endfunction\n",
-       "function f;\n"
-       "  foo bar, baz;\n"
-       "endfunction\n"},
-      {"  task  t  ;\t"
-       "foo  bar,baz; "
-       " endtask\n",
-       "task t;\n"
-       "  foo bar, baz;\n"
-       "endtask\n"},
-      {"module  m  ;\t\n"
-       "foo  bar(   .baz(baz)   );"
-       "  endmodule\n",
-       "module m;\n"
-       "  foo bar (.baz(baz));\n"  // indentation still takes effect
-       "endmodule\n"},
-      {"module  m  ;\t\n"
-       "foo  bar(\n"
-       "        .baz  (baz  ),\n"  // example of user-manual alignment
-       "        .blaaa(blaaa)\n"
-       ");"
-       "  endmodule\n",
-       "module m;\n"
-       "  foo bar (\n"           // indentation still takes effect
-       "      .baz  (baz  ),\n"  // named port connections preserved
-       "      .blaaa(blaaa)\n"   // named port connections preserved
-       "  );\n"                  // this indentation is fixed
-       "endmodule\n"},
-      {"module  m  ;\t\n"
-       "foo  #(   .baz(baz)   ) bar();"  // named parameters
-       "  endmodule\n",
-       "module m;\n"
-       "  foo #(.baz(baz)) bar ();\n"  // indentation still takes effect
-       "endmodule\n"},
-      {"module  m  ;\t\n"
-       "foo  #(\n"
-       "        .baz  (baz  ),\n"  // example of user-manual alignment
-       "        .blaaa(blaaa)\n"
-       ")  bar( );"
-       "  endmodule\n",
-       "module m;\n"
-       "  foo #(\n"              // indentation still takes effect
-       "      .baz  (baz  ),\n"  // named parameter arguments preserved
-       "      .blaaa(blaaa)\n"   // named parameter arguments preserved
-       "  ) bar ();\n"           // this indentation is fixed
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  // Testing preservation of spaces
-  style.named_parameter_alignment = AlignmentPolicy::kPreserve;
-  style.named_port_alignment = AlignmentPolicy::kPreserve;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, DisableTryWrapLongLines) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {"", ""},
-      {"\n", "\n"},
-      {"\n\n", "\n\n"},
-      {"module  m  ;\t\n"
-       "  endmodule\n",
-       "module m;\n"
-       "endmodule\n"},
-      {"module  m(   ) ;\n"
-       "  endmodule\n",
-       "module m ();\n"
-       "endmodule\n"},
-      {"module  m(   ) ;\n"
-       "initial assign a = b;\n"
-       "  endmodule\n",
-       "module m ();\n"
-       "  initial assign a = b;\n"
-       "endmodule\n"},
-      {"module  m(   ) ;\n"
-       "initial assign a = {never +gonna +give +you +up,\n"
-       "never + gonna +Let +you +down};\n"
-       "  endmodule\n",
-       "module m ();\n"
-       "  initial\n"
-       "    assign a = {\n"
-       "      never + gonna + give + you + up,\n"
-       "      never + gonna + Let + you + down\n"
-       "    };\n"
-       "endmodule\n"},
-      {"module  m(   ) ;\n"
-       "initial assign a = {never +gonna +give +you +up+\n"  // over 40 columns,
-                                                             // give up
-       "never + gonna +Let +you +down};\n"
-       "  endmodule\n",
-       "module m ();\n"
-       "  initial\n"
-       "    assign a = {\n"
-       "      never +gonna +give +you +up+\n"  // indented properly, but
-       "never + gonna +Let +you +down\n"       // preserved original
-       "    };\n"
-       "endmodule\n"},
-      {// The if-header is a single leaf partition, and does not fit,
-       // so its original spacing should be preserved.
-       // We deliberately insert weird spacing to show that it is preserved.
-       "function f;\n"
-       "if ((xxx.aaaa >= bbbbbbbbbbbbbbb) &&\n"
-       "      ((ccc.ddd  +  eee.ffffff * g) <=\n"
-       "       (hhhhhhhhhhhhhhh+iiiiiiiiiiiiiiiiiiii))) begin\n"
-       "end\n"
-       "endfunction\n",
-       "function f;\n"
-       "  if ((xxx.aaaa >= bbbbbbbbbbbbbbb) &&\n"  // indentation fixed
-       "      ((ccc.ddd  +  eee.ffffff * g) <=\n"
-       "       (hhhhhhhhhhhhhhh+iiiiiiiiiiiiiiiiiiii))) begin\n"
-       "  end\n"  // indentation fixed
-       "endfunction\n"},
-
-      // Make sure indentation still works with wrapping disabled,
-      // and leaf partitions fit on one line.
-      {"function void f();\n"
-       "for (int i = N; i > 0; i--) begin\n"
-       "end\n"
-       "endfunction\n",
-       "function void f();\n"
-       "  for (int i = N; i > 0; i--) begin\n"
-       "  end\n"
-       "endfunction\n"},
-      {"function void f();"
-       "if(i > 0 ) begin end "
-       "endfunction",
-       "function void f();\n"
-       "  if (i > 0) begin\n"
-       "  end\n"
-       "endfunction\n"},
-      {"function void f();"  // newlines absent from input
-       "for (int i=N; i>0; i--) begin end "
-       "endfunction",
-       "function void f();\n"
-       "  for (int i = N; i > 0; i--) begin\n"  // spacing corrected
-       "  end\n"
-       "endfunction\n"},
-      {"module m( );\n"
-       "  always_ff  @  (  posedge  (  clk  )  ) begin\n"
-       "out  <=  rst_clk  ?  0 : in  ;\n"
-       "end\n"
-       "endmodule : simple\n",
-       "module m ();\n"
-       "  always_ff @(posedge (clk)) begin\n"
-       "    out <= rst_clk ? 0 : in;\n"
-       "  end\n"
-       "endmodule : simple\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.try_wrap_long_lines = false;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, ModulePortDeclarationsIndentNotWrap) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {"", ""},
-      {"\n", "\n"},
-      {"\n\n", "\n\n"},
-      {"module  m  ;\t\n"
-       "  endmodule\n",
-       "module m;\n"
-       "endmodule\n"},
-      {"module  m(   ) ;\n"
-       "  endmodule\n",
-       "module m ();\n"  // empty ports formatted compactly
-       "endmodule\n"},
-      {// single port example
-       "module  m   ( input     clk  )\t;\n"
-       "  endmodule\n",
-       "module m (\n"
-       "  input clk\n"  // 2 spaces
-       ");\n"
-       "endmodule\n"},
-      {// example with two ports
-       "module  m   (\n"
-       "input  clk,\n"
-       "output bar\n"
-       ")\t;\n"
-       "  endmodule\n",
-       "module m (\n"
-       "  input  clk,\n"  // indented 2 spaces, and aligned
-       "  output bar\n"
-       ");\n"
-       "endmodule\n"},
-      {// interface example
-       "interface  handshake   (\n"
-       "wire req,\n"
-       "wire ack\n"
-       ")\t;\n"
-       "  endinterface\n",
-       "interface handshake (\n"
-       "  wire req,\n"  // indented 2 spaces
-       "  wire ack\n"
-       ");\n"
-       "endinterface\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  // Indent 2 spaces instead of wrapping 4 spaces.
-  style.port_declarations_indentation = IndentationStyle::kIndent;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, NamedPortConnectionsIndentNotWrap) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {"", ""},
-      {"\n", "\n"},
-      {"\n\n", "\n\n"},
-      {"module  m  ;\t\n"
-       "  endmodule\n",
-       "module m;\n"
-       "endmodule\n"},
-      {"module  m(   ) ;\n"
-       "  endmodule\n",
-       "module m ();\n"  // empty ports formatted compactly
-       "endmodule\n"},
-      {// single port example
-       "module  m ;\n"
-       "foo bar( .clk( clk ) )\t;\n"
-       "  endmodule\n",
-       "module m;\n"
-       "  foo bar (.clk(clk));\n"
-       "endmodule\n"},
-      {// two port example
-       "module  m ;\n"
-       "foo bar( .clk2( clk ),.data (data) )\t;\n"
-       "  endmodule\n",
-       "module m;\n"
-       "  foo bar (\n"
-       "    .clk2(clk),\n"  // indent only +2 spaces
-       "    .data(data)\n"
-       "  );\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  // Indent 2 spaces instead of wrapping 4 spaces.
-  style.named_port_indentation = IndentationStyle::kIndent;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, WrapEndElseStatements) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {"module foo ();\n"
-       "  always @(posedge bar) begin\n"
-       "    if (1==1) begin\n"
-       "      ham();\n"
-       "    end else if (2==2) begin\n"
-       "      jam();\n"
-       "    end else begin\n"
-       "      spam();\n"
-       "    end\n"
-       "  end\n"
-       "endmodule\n",
-       "module foo ();\n"
-       "  always @(posedge bar) begin\n"
-       "    if (1 == 1) begin\n"
-       "      ham();\n"
-       "    end\n"
-       "    else if (2 == 2) begin\n"
-       "      jam();\n"
-       "    end\n"
-       "    else begin\n"
-       "      spam();\n"
-       "    end\n"
-       "  end\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.wrap_end_else_clauses = true;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, FormalParametersIndentNotWrap) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {"", ""},
-      {"\n", "\n"},
-      {"\n\n", "\n\n"},
-      {"module  m  ;\t\n"
-       "  endmodule\n",
-       "module m;\n"
-       "endmodule\n"},
-      {"module  m #(   ) ;\n"  // empty parameters
-       "  endmodule\n",
-       "module m #();\n"
-       "endmodule\n"},
-      {// single parameter example
-       "module  m   #( int W = 2)\t;\n"
-       "  endmodule\n",
-       "module m #(\n"
-       "  int W = 2\n"  // indented 2 spaces
-       ");\n"
-       "endmodule\n"},
-      {// module with two parameters
-       "module  m   #(\n"
-       "int W = 2,\n"
-       "int L = 4\n"
-       ")\t;\n"
-       "  endmodule\n",
-       "module m #(\n"
-       "  int W = 2,\n"  // indented 2 spaces
-       "  int L = 4\n"
-       ");\n"
-       "endmodule\n"},
-      {// interface with two parameters
-       "interface  m   #(\n"
-       "int W = 2,\n"
-       "int L = 4\n"
-       ")\t;\n"
-       "  endinterface\n",
-       "interface m #(\n"
-       "  int W = 2,\n"  // indented 2 spaces
-       "  int L = 4\n"
-       ");\n"
-       "endinterface\n"},
-      {// class with two parameters
-       "class  c   #(\n"
-       "int W = 2,\n"
-       "int L = 4\n"
-       ")\t;\n"
-       "  endclass\n",
-       "class c #(\n"
-       "  int W = 2,\n"  // indented 2 spaces
-       "  int L = 4\n"
-       ");\n"
-       "endclass\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  // Indent 2 spaces instead of wrapping 4 spaces.
-  style.formal_parameters_indentation = IndentationStyle::kIndent;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, NamedParametersIndentNotWrap) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {"", ""},
-      {"\n", "\n"},
-      {"\n\n", "\n\n"},
-      {"module  m  ;\t\n"
-       "  endmodule\n",
-       "module m;\n"
-       "endmodule\n"},
-      {"module  m #(   ) ;\n"  // empty parameters
-       "  endmodule\n",
-       "module m #();\n"
-       "endmodule\n"},
-      {"module  m  ;\t\n"
-       " foo #()bar();\n"
-       "  endmodule\n",
-       "module m;\n"
-       "  foo #() bar ();\n"
-       "endmodule\n"},
-      {// one named parameter
-       "module  m ;\n"
-       "foo #(.W(1)) bar();\n"
-       "  endmodule\n",
-       "module m;\n"
-       "  foo #(.W(1)) bar ();\n"
-       "endmodule\n"},
-      {// two named parameters
-       "module  m ;\n"
-       "foo #(.W(1), .L(2)) bar();\n"
-       "  endmodule\n",
-       "module m;\n"
-       "  foo #(\n"
-       "    .W(1),\n"  // indent +2 spaces only
-       "    .L(2)\n"
-       "  ) bar ();\n"
-       "endmodule\n"},
-      {// class data member with two parameters
-       "class  c  ;\n"
-       " foo_pkg::bar_t#(\n"
-       ".W(2),.L(4)"
-       ") baz;\n"
-       "  endclass\n",
-       "class c;\n"
-       "  foo_pkg::bar_t #(\n"
-       "    .W(2),\n"  // indent +2 spaces only
-       "    .L(4)\n"
-       "  ) baz;\n"
-       "endclass\n"},
-      {// typedef with two parameters
-       "typedef \n"
-       " foo_pkg::bar_t  #("
-       ".W(2),.L(4)"
-       ") baz;\n",
-       "typedef foo_pkg::bar_t#(\n"
-       "  .W(2),\n"  // indent +2 spaces only
-       "  .L(4)\n"
-       ") baz;\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  // Indent 2 spaces instead of wrapping 4 spaces.
-  style.named_parameter_indentation = IndentationStyle::kIndent;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-struct SelectLinesTestCase {
-  std::string_view input;
-  LineNumberSet lines;  // explicit set of lines to enable formatting
-  std::string_view expected;
-};
-
-// Tests that formatter honors selected line numbers.
-TEST(FormatterEndToEndTest, SelectLines) {
-  const SelectLinesTestCase kTestCases[] = {
-      {"", {}, ""},
-      {"", {{1, 2}}, ""},
-      {// expect all three lines for format
-       "  parameter    int foo_line1 =     0 ;\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n",
-       {},
-       "parameter int foo_line1 = 0;\n"
-       "parameter int foo_line2 = 0;\n"
-       "parameter int foo_line3 = 0;\n"},
-      {// expect only one line to format
-       "  parameter    int foo_line1 =     0 ;\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n",
-       {{1, 2}},
-       "parameter int foo_line1 = 0;\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n"},
-      {// expect only one line to format
-       "  parameter    int foo_line1 =     0 ;\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n",
-       {{2, 3}},
-       "  parameter    int foo_line1 =     0 ;\n"
-       "parameter int foo_line2 = 0;\n"
-       "  parameter    int foo_line3 =     0 ;\n"},
-      {// expect only one line to format
-       "  parameter    int foo_line1 =     0 ;\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n",
-       {{3, 4}},
-       "  parameter    int foo_line1 =     0 ;\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "parameter int foo_line3 = 0;\n"},
-      {// expect to format two lines
-       "  parameter    int foo_line1 =     0 ;\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n",
-       {{1, 3}},
-       "parameter int foo_line1 = 0;\n"
-       "parameter int foo_line2 = 0;\n"
-       "  parameter    int foo_line3 =     0 ;\n"},
-      {// expect to format two lines
-       "  parameter    int foo_line1 =     0 ;\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n",
-       {{2, 4}},
-       "  parameter    int foo_line1 =     0 ;\n"
-       "parameter int foo_line2 = 0;\n"
-       "parameter int foo_line3 = 0;\n"},
-      {// expect to format two lines
-       "  parameter    int foo_line1 =     0 ;\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n",
-       {{1, 2}, {3, 4}},
-       "parameter int foo_line1 = 0;\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "parameter int foo_line3 = 0;\n"},
-      {// expect to format all lines
-       "  parameter    int foo_line1 =     0 ;\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n",
-       {{1, 4}},
-       "parameter int foo_line1 = 0;\n"
-       "parameter int foo_line2 = 0;\n"
-       "parameter int foo_line3 = 0;\n"},
-      {// expect to format no lines (line numbers out of bounds)
-       "  parameter    int foo_line1 =     0 ;\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n",
-       {{4, 6}},
-       "  parameter    int foo_line1 =     0 ;\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n"},
-      {// expect to format all lines
-       "// verilog_format: on\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n"
-       "  parameter    int foo_line4 =     0 ;\n",
-       {},
-       "// verilog_format: on\n"
-       "parameter int foo_line2 = 0;\n"
-       "parameter int foo_line3 = 0;\n"
-       "parameter int foo_line4 = 0;\n"},
-      {// expect to format no lines
-       "// verilog_format: off\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n"
-       "  parameter    int foo_line4 =     0 ;\n",
-       {},
-       "// verilog_format: off\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n"
-       "  parameter    int foo_line4 =     0 ;\n"},
-      {// expect to format some lines
-       "// verilog_format: on\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n"
-       "  parameter    int foo_line4 =     0 ;\n",
-       {{3, 5}},
-       "// verilog_format: on\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "parameter int foo_line3 = 0;\n"  // disable lines 3,4
-       "parameter int foo_line4 = 0;\n"},
-      {// enable all lines, but respect format-off
-       "  parameter    int foo_line1 =     0 ;\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "// verilog_format: off\n"
-       "  parameter    int foo_line4 =     0 ;\n",
-       {{1, 5}},
-       "parameter int foo_line1 = 0;\n"
-       "parameter int foo_line2 = 0;\n"
-       "// verilog_format: off\n"
-       "  parameter    int foo_line4 =     0 ;\n"},
-      {// enable all lines, but respect format-off
-       "  parameter    int foo_line1 =     0 ;\n"
-       "// verilog_format: off\n"
-       "  parameter    int foo_line3 =     0 ;\n"
-       "// verilog_format: on\n"
-       "  parameter    int foo_line5 =     0 ;\n",
-       {{1, 6}},
-       "parameter int foo_line1 = 0;\n"
-       "// verilog_format: off\n"
-       "  parameter    int foo_line3 =     0 ;\n"
-       "// verilog_format: on\n"
-       "parameter int foo_line5 = 0;\n"},
-      {// enable all lines, but respect format-off
-       "// verilog_format: off\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n"
-       "// verilog_format: on\n"
-       "  parameter    int foo_line5 =     0 ;\n",
-       {{1, 6}},
-       "// verilog_format: off\n"
-       "  parameter    int foo_line2 =     0 ;\n"
-       "  parameter    int foo_line3 =     0 ;\n"
-       "// verilog_format: on\n"
-       "parameter int foo_line5 = 0;\n"},
-      {"module m;\n"
-       "  if (foo) begin:l1\n"
-       "    if (foo) begin:l2\n"
-       "      always_comb\n"  // normally this line and next would fit together
-       "        d<=#1ps   x_lat\t;\n"  // only format this line, 5
-       "    end : l2\n"
-       "  end : l1\n"
-       "endmodule\n",
-       {{5, 6}},
-       "module m;\n"
-       "  if (foo) begin:l1\n"
-       "    if (foo) begin:l2\n"
-       "      always_comb\n"  // incremental mode prevents joining next line
-       "        d <= #1ps x_lat;\n"  // only this line changed
-       "    end : l2\n"
-       "  end : l1\n"
-       "endmodule\n"},
-
-      // Next three test cases: one whole-file, two incremental
-      {"module m(\n"
-       "  input wire f,\n"
-       "  input  foo::bar  ggg\n"
-       ");\n"
-       "endmodule:m\n",
-       {},  // format all lines
-       "module m (\n"
-       "    input wire     f,\n"
-       "    input foo::bar ggg\n"
-       ");\n"
-       "endmodule : m\n"},
-      {"module m(\n"
-       "  input wire f,\n"
-       "  input  foo::bar  ggg\n"  // "new line", formatted incrementally
-       ");\n"
-       "endmodule:m\n",
-       {{3, 4}},  // format incrementally
-       "module m(\n"
-       "  input wire f,\n"
-       "    input  foo::bar  ggg\n"  // "new line" remains untouched
-       ");\n"
-       "endmodule:m\n"},
-      {"module m(\n"
-       "  input  wire   f,\n"  // "new line", formatted incrementally
-       "  input  foo::bar  ggg\n"
-       ");\n"
-       "endmodule:m\n",
-       {{2, 3}},  // format incrementally
-       "module m(\n"
-       "    input  wire   f,\n"  // "new line" indented, but other spaces kept
-       "  input  foo::bar  ggg\n"
-       ");\n"
-       "endmodule:m\n"},
-  };
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status = FormatVerilog(test_case.input, "<filename>", style,
-                                      stream, test_case.lines);
-    EXPECT_OK(status) << status.message() << '\n'
-                      << "Lines: " << test_case.lines;
-    EXPECT_EQ(stream.str(), test_case.expected)
-        << "code:\n"
-        << test_case.input << "\nlines: " << test_case.lines;
-  }
-}
-
-// These tests verify the mode where horizontal spacing is discarded while
-// vertical spacing is preserved.
-TEST(FormatterEndToEndTest, PreserveVSpacesOnly) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      // {input, expected},
-      // No tokens cases: still preserve vertical spacing, but not horizontal
-      {"", ""},
-      {"    ", ""},
-      {"\n", "\n"},
-      {"\n\n", "\n\n"},
-      {"  \n", "\n"},
-      {"\n  ", "\n"},
-      {"  \n  ", "\n"},
-      {"  \n  \t\t\n\t  ", "\n\n"},
-
-      // The remaining cases have at least one non-whitespace token.
-
-      // single comment
-      {"//\n", "//\n"},
-      {"//  \n", "//  \n"},  // trailing spaces inside comment untouched
-      {"\n//\n", "\n//\n"},
-      {"\n\n//\n", "\n\n//\n"},
-      {"\n//\n\n", "\n//\n\n"},
-      {"      //\n", "//\n"},  // spaces before comment discarded
-      {"   \n   //\n", "\n//\n"},
-      {"   \n   //\n  \n  ", "\n//\n\n"},  // trailing spaces discarded
-
-      // multi-comment
-      {"//\n//\n", "//\n//\n"},
-      {"\n//\n\n//\n\n", "\n//\n\n//\n\n"},
-      {"\n//\n\n//\n", "\n//\n\n//\n"},  // blank line between comments
-
-      // Module cases with token partition boundary (before 'endmodule').
-      {"module foo;endmodule\n", "module foo;\nendmodule\n"},
-      {"module foo;\nendmodule\n", "module foo;\nendmodule\n"},
-      {"module foo;\n\nendmodule\n", "module foo;\n\nendmodule\n"},
-      {"\nmodule foo;endmodule\n", "\nmodule foo;\nendmodule\n"},
-      {"\nmodule foo     ;    endmodule\n", "\nmodule foo;\nendmodule\n"},
-      {"\nmodule\nfoo\n;endmodule\n", "\nmodule foo;\nendmodule\n"},
-      {"\nmodule foo;endmodule\n\n\n", "\nmodule foo;\nendmodule\n\n\n"},
-      {"\n\n\nmodule foo;endmodule\n", "\n\n\nmodule foo;\nendmodule\n"},
-      {"\nmodule\nfoo\n;\n\n\nendmodule\n", "\nmodule foo;\n\n\nendmodule\n"},
-
-      // Module cases with one indented item, various original vertical spacing
-      {"module foo;wire w;endmodule\n", "module foo;\n  wire w;\nendmodule\n"},
-      {"  module   foo  ;wire    w  ;endmodule  \n  ",
-       "module foo;\n  wire w;\nendmodule\n"},
-      {"\nmodule\nfoo\n;\nwire\nw\n;endmodule\n\n",
-       "\nmodule foo;\n  wire w;\nendmodule\n\n"},
-      {"\n\nmodule\nfoo\n;\n\n\nwire\nw\n;\n\nendmodule\n\n",
-       "\n\nmodule foo;\n\n\n  wire w;\n\nendmodule\n\n"},
-
-      // The following cases show that some horizontal whitespace is discarded,
-      // while vertical spacing is preserved on partition boundaries.
-      {"     module  foo\t   \t;    endmodule   \n",
-       "module foo;\nendmodule\n"},
-      {"\t\n     module  foo\t\t;    endmodule   \n",
-       "\nmodule foo;\nendmodule\n"},
-
-      // Module with comments intermingled.
-      {
-          "//1\nmodule foo;//2\nwire w;//3\n//4\nendmodule\n",
-          "//1\nmodule foo;  //2\n  wire w;  //3\n  //4\nendmodule\n"
-          // TODO(fangism): whether or not //4 should be indented is
-          // questionable (in similar cases below too).
-      },
-      {// now with extra blank lines
-       "//1\n\nmodule foo;//2\n\nwire w;//3\n\n//4\n\nendmodule\n\n",
-       "//1\n\nmodule foo;  //2\n\n  wire w;  //3\n\n  //4\n\nendmodule\n\n"},
-
-      {
-          // module with comments-only in some empty blocks, properly indented
-          "  // humble module\n"
-          "  module foo (// non-port comment\n"
-          "// port comment 1\n"
-          "// port comment 2\n"
-          ");// header trailing comment\n"
-          "// item comment 1\n"
-          "// item comment 2\n"
-          "endmodule\n",
-          "// humble module\n"
-          "module foo (  // non-port comment\n"
-          "    // port comment 1\n"
-          "    // port comment 2\n"
-          ");  // header trailing comment\n"
-          "  // item comment 1\n"
-          "  // item comment 2\n"
-          "endmodule\n",
-      },
-
-      {
-          // module with comments around non-empty blocks
-          "  // humble module\n"
-          "  module foo (// non-port comment\n"
-          "// port comment 1\n"
-          "input   logic   f  \n"
-          "// port comment 2\n"
-          ");// header trailing comment\n"
-          "// item comment 1\n"
-          "wire w ; \n"
-          "// item comment 2\n"
-          "endmodule\n",
-          "// humble module\n"
-          "module foo (  // non-port comment\n"
-          "    // port comment 1\n"
-          "    input logic f\n"
-          "    // port comment 2\n"
-          ");  // header trailing comment\n"
-          "  // item comment 1\n"
-          "  wire w;\n"
-          "  // item comment 2\n"
-          "endmodule\n",
-      },
-  };
-  FormatStyle style;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-static constexpr FormatterTestCase kFormatterTestCasesElseStatements[] = {
-    {"module m;"
-     "task static t; if (r == t) a.b(c); else d.e(f); endtask;"
-     "endmodule",
-     "module m;\n"
-     "  task static t;\n"
-     "    if (r == t) a.b(c);\n"
-     "    else d.e(f);\n"
-     "  endtask\n"
-     "  ;\n"  // possibly unintended stray ';'
-     "endmodule\n"},
-    {"module m;"
-     "task static t; if (r == t) begin a.b(c); end else begin d.e(f); end "
-     "endtask;"
-     "endmodule",
-     "module m;\n"
-     "  task static t;\n"
-     "    if (r == t) begin\n"
-     "      a.b(c);\n"
-     "    end else begin\n"
-     "      d.e(f);\n"
-     "    end\n"
-     "  endtask\n"
-     "  ;\n"  // stray ';'
-     "endmodule\n"},
-    {"module m;initial begin if(a==b)"
-     "c.d(e);else\n"
-     "f.g(h);end endmodule",
-     "module m;\n"
-     "  initial begin\n"
-     "    if (a == b) c.d(e);\n"
-     "    else f.g(h);\n"
-     "  end\n"
-     "endmodule\n"},
-    {"   module m;  always_comb    begin     \n"
-     "        if      ( a   ) b =  16'hdead    ; \n"
-     "  else if (   c     )  d= 16 'hbeef  ;   \n"
-     "     else        if (e) f=16'hca_fe ;     \n"
-     "end   \n endmodule\n",
-     "module m;\n"
-     "  always_comb begin\n"
-     "    if (a) b = 16'hdead;\n"
-     "    else if (c) d = 16'hbeef;\n"
-     "    else if (e) f = 16'hca_fe;\n"
-     "  end\n"
-     "endmodule\n"},
-    {"module foo();\n"
-     "always_comb begin\n"
-     "value = function_name(.long_parameter(8'hA), .parameter_three(foobar));\n"
-     "end\n"
-     "endmodule : foo\n",
-     "module foo ();\n"
-     "  always_comb begin\n"
-     "    value = function_name(\n"
-     "      .long_parameter(8'hA),\n"
-     "      .parameter_three(foobar)\n"
-     "    );\n"
-     "  end\n"
-     "endmodule : foo\n"},
-    {"module foo();\n"
-     "always_comb begin\n"
-     "value = function_name(.a(1), .b(2));\n"
-     "end\n"
-     "endmodule : foo\n",
-     "module foo ();\n"
-     "  always_comb begin\n"
-     "    value = function_name(.a(1), .b(2));\n"
-     "  end\n"
-     "endmodule : foo\n"},
-    {"module foo ();\n"
-     "always_comb begin\n"
-     "value = function_name(8'hA, foobar, signal_1234); end\n"
-     "always_comb begin\n"
-     "value = function_name(8'hA, foobar); end\n"
-     "endmodule : foo\n",
-     "module foo ();\n"
-     "  always_comb begin\n"
-     "    value = function_name(8'hA, foobar,\n"
-     "                          signal_1234);\n"
-     "  end\n"
-     "  always_comb begin\n"
-     "    value = function_name(8'hA, foobar);\n"
-     "  end\n"
-     "endmodule : foo\n"},
-    {"module foo ();\n"
-     "always_comb begin\n"
-     "value = function_name(8'hA, foobar, signal_1234);\n"
-     "value = function_name(8'hA, foobar, signal_1234); end\n"
-     "endmodule : foo\n",
-     "module foo ();\n"
-     "  always_comb begin\n"
-     "    value = function_name(8'hA, foobar,\n"
-     "                          signal_1234);\n"
-     "    value = function_name(8'hA, foobar,\n"
-     "                          signal_1234);\n"
-     "  end\n"
-     "endmodule : foo\n"},
-    {"always_comb begin\n"
-     "value = "
-     "f(long_parameter_exceeding_col_limit, foo, bar); end\n",
-     "always_comb begin\n"
-     "  value = f(\n"
-     "    long_parameter_exceeding_col_limit,\n"
-     "    foo,\n"
-     "    bar\n"
-     "  );\n"
-     "end\n"},
-    {"module foo();\n"
-     "always_comb begin\n"
-     "value = function_name(8'hA, .parameter_three(foobar));\n"
-     "end\n"
-     "endmodule : foo\n",
-     "module foo ();\n"
-     "  always_comb begin\n"
-     "    value = function_name(\n"
-     "      8'hA,\n"
-     "      .parameter_three(foobar)\n"
-     "    );\n"
-     "  end\n"
-     "endmodule : foo\n"},
-    {"module foo ();\n"
-     "always_comb begin\n"
-     "value = function_name(8'hA, 8'hB, 8'hC, .parameter_four(foo), "
-     ".par_five(bar));\n"
-     "end\n"
-     "endmodule : foo\n",
-     "module foo ();\n"
-     "  always_comb begin\n"
-     "    value = function_name(\n"
-     "      8'hA,\n"
-     "      8'hB,\n"
-     "      8'hC,\n"
-     "      .parameter_four(foo),\n"
-     "      .par_five(bar)\n"
-     "    );\n"
-     "  end\n"
-     "endmodule : foo\n"},
-    {"class dv_base_mem; function void configure(); \nbegin\n"
-     "value = func(8'hA, foobar, signal_1234);\n"
-     "value = new(8'hA, foobar, signal_1234); end\n"
-     "endfunction : configure endclass\n",
-     "class dv_base_mem;\n"
-     "  function void configure();\n"
-     "    begin\n"
-     "      value = func(8'hA, foobar,\n"
-     "                   signal_1234);\n"
-     "      value = new(8'hA, foobar,\n"
-     "                  signal_1234);\n"
-     "    end\n"
-     "  endfunction : configure\n"
-     "endclass\n"},
-    {"module m; initial begin\n"
-     "        if     (a||b)        c         = 1'b1;\n"
-     "d =        1'b1; if         (e)\n"
-     "begin f = 1'b0; end else begin\n"
-     "    g = h;\n"
-     "        end \n"
-     " i = 1'b1; "
-     "end endmodule\n",
-     "module m;\n"
-     "  initial begin\n"
-     "    if (a || b) c = 1'b1;\n"
-     "    d = 1'b1;\n"
-     "    if (e) begin\n"
-     "      f = 1'b0;\n"
-     "    end else begin\n"
-     "      g = h;\n"
-     "    end\n"
-     "    i = 1'b1;\n"
-     "  end\n"
-     "endmodule\n"},
-    {"module m; initial begin\n"
-     "if (a&&b&&c) begin\n"
-     "         d         = 1'b1;\n"
-     "     if (e) begin\n"
-     "   f = ff;\n"
-     "       end  else   if  (    g  )   begin\n"
-     "     h = hh;\n"
-     "end else if (i) begin\n"
-     "    j   =   (kk == ll) ? mm :\n"
-     "      gg;\n"
-     "   end     else   if    (  qq )  begin\n"
-     "    if      (  xx   ||yy        ) begin    d0 = 1'b0;   d1   =       "
-     "1'b1;\n"
-     "  end else if (oo) begin aa =    bb; cc      = dd;"
-     "         if (zz) zx = xz; else ba = ab;"
-     "    end   else  \n begin      vv   =  tt  ;  \n"
-     "   end   end "
-     "end \n  else if   (uu)\nbegin\n\na=b;if (aa)   b =    c;\n"
-     "\nelse    if    \n (bb) \n\nc        =d    ;\n\n\n\n\n    "
-     "      else         e\n\n   =   h;\n\n"
-     "end \n  else    \n  begin if(x)y=a;else\nbegin\n"
-     "\n\n\na=y; if (a)       b     = c;\n\n\n\nelse\n\n\nd=e;end \n"
-     "end\n"
-     "end endmodule\n",
-     "module m;\n"
-     "  initial begin\n"
-     "    if (a && b && c) begin\n"
-     "      d = 1'b1;\n"
-     "      if (e) begin\n"
-     "        f = ff;\n"
-     "      end else if (g) begin\n"
-     "        h = hh;\n"
-     "      end else if (i) begin\n"
-     "        j = (kk == ll) ? mm : gg;\n"
-     "      end else if (qq) begin\n"
-     "        if (xx || yy) begin\n"
-     "          d0 = 1'b0;\n"
-     "          d1 = 1'b1;\n"
-     "        end else if (oo) begin\n"
-     "          aa = bb;\n"
-     "          cc = dd;\n"
-     "          if (zz) zx = xz;\n"
-     "          else ba = ab;\n"
-     "        end else begin\n"
-     "          vv = tt;\n"
-     "        end\n"
-     "      end\n"
-     "    end else if (uu) begin\n\n"
-     "      a = b;\n"
-     "      if (aa) b = c;\n\n"
-     "      else if (bb) c = d;\n\n\n\n\n"
-     "      else e = h;\n\n"
-     "    end else begin\n"
-     "      if (x) y = a;\n"
-     "      else begin\n\n\n\n"
-     "        a = y;\n"
-     "        if (a) b = c;\n\n\n\n"
-     "        else d = e;\n"
-     "      end\n"
-     "    end\n"
-     "  end\n"
-     "endmodule\n"}};
-
-TEST(FormatterEndToEndTest, FormatElseStatements) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  for (const auto &test_case : kFormatterTestCasesElseStatements) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, ConstraintExpressions) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {"", ""},
-
-      // class members
-      {"class Foo; constraint if_c { if (zzzzzzzzzzzzzzzzzzzzz)"
-       "{ soft xxxxxxxxxxxxxxxxxxxxxx == yyyyyyyyyyyyyyyyyyy; } } endclass",
-       "class Foo;\n"
-       "  constraint if_c {\n"
-       "    if (zzzzzzzzzzzzzzzzzzzzz) {\n"
-       "      soft xxxxxxxxxxxxxxxxxxxxxx == yyyyyyyyyyyyyyyyyyy;\n"
-       "    }\n"
-       "  }\n"
-       "endclass\n"},
-
-      // constraints with if-constraint expressions
-      {"constraint xx { if (a) b; }\n", "constraint xx {if (a) b;}\n"},
-
-      {"constraint xx { if (a) {b;} }\n",
-       "constraint xx {\n"
-       "  if (a) {\n"
-       "    b;\n"
-       "  }\n"
-       "}\n"},
-
-      // multi item constraint
-      {"constraint yy { a == b;c==d;}",
-       "constraint yy {\n"
-       "  a == b;\n"
-       "  c == d;\n"
-       "}\n"},
-
-      // one-line constraints
-      {"constraint only_vec_instr_c {soft only_vec_instr == 0;}",
-       "constraint only_vec_instr_c {soft only_vec_instr == 0;}\n"},
-
-      {"constraint\nnum_trans_c\n\n\n{\n\n\nnum_trans inside{[800:1000]};}",
-       "constraint num_trans_c {num_trans inside {[800 : 1000]};}\n"},
-
-      // if-vs-concatenation expression
-      {"constraint c_operation{  if(fixed_operation_en){"
-       "aes_operation == fixed_operation"
-       ";}}",
-       "constraint c_operation {\n"
-       "  if (fixed_operation_en) {\n"
-       "    aes_operation == fixed_operation;\n"
-       "  }\n"
-       "}\n"},
-
-      {"constraint c_operation{  if(fixed_operation_en){"
-       "aes_operation == fixed_operation"
-       "};}",
-       "constraint c_operation {\n"
-       "  if (fixed_operation_en)\n"
-       "  {aes_operation == fixed_operation};\n"
-       "}\n"},
-
-      // concatenation expression
-      {"constraint c_iv {if (fixed_iv_en) {aes_iv == fixed_iv};}",
-       "constraint c_iv {\n"
-       "  if (fixed_iv_en)\n"
-       "  {aes_iv == fixed_iv};\n"
-       "}\n"},
-
-      // looooong test
-      {"constraint xx {"
-       "if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)"
-       "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=="
-       "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;"
-       "ccccccccccccccccccccccc==dddddddddddddddddddddd;}",
-       "constraint xx {\n"
-       "  if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
-       "  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa == "
-       "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;\n"
-       "  ccccccccccccccccccccccc == dddddddddddddddddddddd;\n"
-       "}\n"},
-  };
-  FormatStyle style;
-  style.column_limit =
-      100;  // smaller column_limit forces expansion of constraint blocks
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.port_declarations_alignment = verible::AlignmentPolicy::kPreserve;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-static constexpr FormatterTestCase kFormatterTestCasesEnumDeclarations[] = {
-    // Inferring user intent: not too many spaces to be added: align.
-    {"typedef enum { kA=1, kAB=2, kABC=3} x;",
-     "typedef enum {\n"
-     "  kA   = 1,\n"
-     "  kAB  = 2,\n"
-     "  kABC = 3\n} x;\n"},
-
-    // Lots of spaces would've to be be added - keep flush
-    {"typedef enum { kA=1, kAB=2, kABCDEFGHIJKLMN=3} x;",
-     "typedef enum {\n"
-     "  kA = 1,\n"
-     "  kAB = 2,\n"
-     "  kABCDEFGHIJKLMN = 3\n} x;\n"},
-
-    // Source spaces indicate alignment wish.
-    {"typedef enum { kA     =1, kAB=2, kABCDEFGHIJKLMN=3} x;",
-     "typedef enum {\n"
-     "  kA              = 1,\n"
-     "  kAB             = 2,\n"
-     "  kABCDEFGHIJKLMN = 3\n} x;\n"},
-
-    // An empty line groups into several sections, to be aligned independently
-    {"typedef enum { kA=1, kAB=2, \n\n kABC=3} x;",
-     "typedef enum {\n"
-     "  kA  = 1,\n"
-     "  kAB = 2,\n"
-     "\n"
-     "  kABC = 3\n} x;\n"},
-
-    // Lines with comments don't interrupt alignment
-    {"typedef enum { kA=1,\n"
-     "// hello world\n"
-     "kAB=2, kABC=3} x;",
-     "typedef enum {\n"
-     "  kA   = 1,\n"
-     "  // hello world\n"
-     "  kAB  = 2,\n"
-     "  kABC = 3\n} x;\n"},
-
-    // Generally, comment locations are preserved, and full line comments
-    // indented to enum name level.
-    {"typedef enum { kA=1,// value kA\n"
-     "// hello world\n"
-     "kAB=2,// value kAB\n"
-     "kABC=3// value kABC\n"
-     "} x;",
-     "typedef enum {\n"
-     "  kA   = 1,  // value kA\n"
-     "  // hello world\n"
-     "  kAB  = 2,  // value kAB\n"
-     "  kABC = 3   // value kABC"
-     "\n} x;\n"},
-
-    {"typedef enum { kA=1,// value kA\n"
-     "kAB=2,\n"
-     "kABC=3// value kABC\n"
-     "} x;",
-     "typedef enum {\n"
-     "  kA   = 1,  // value kA\n"
-     "  kAB  = 2,\n"
-     "  kABC = 3   // value kABC"
-     "\n} x;\n"},
-
-    // Numeric constants are currently flushed left, but maybe todo
-    // align right in the future ?
-    {"typedef enum { kA=1, kAB=10, kABC=100} x;",
-     "typedef enum {\n"
-     "  kA   = 1,\n"
-     "  kAB  = 10,\n"
-     "  kABC = 100\n} x;\n"},
-};
-
-TEST(FormatterEndToEndTest, FormatAlignEnumDeclarations) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.enum_assignment_statement_alignment = AlignmentPolicy::kInferUserIntent;
-  for (const auto &test_case : kFormatterTestCasesEnumDeclarations) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, DiagnosticShowFullTree) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  for (const auto &test_case : kFormatterTestCases) {
-    std::ostringstream stream, debug_stream;
-    ExecutionControl control;
-    control.stream = &debug_stream;
-    control.show_token_partition_tree = true;
-    const auto status = FormatVerilog(test_case.input, "<filename>", style,
-                                      stream, kEnableAllLines, control);
-    EXPECT_EQ(status.code(), StatusCode::kCancelled);
-    EXPECT_TRUE(
-        absl::StartsWith(debug_stream.str(), "Full token partition tree"));
-  }
-}
-
-TEST(FormatterEndToEndTest, DiagnosticLargestPartitions) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  for (const auto &test_case : kFormatterTestCases) {
-    std::ostringstream stream, debug_stream;
-    ExecutionControl control;
-    control.stream = &debug_stream;
-    control.show_largest_token_partitions = 2;
-    const auto status = FormatVerilog(test_case.input, "<filename>", style,
-                                      stream, kEnableAllLines, control);
-    EXPECT_EQ(status.code(), StatusCode::kCancelled);
-    EXPECT_TRUE(absl::StartsWith(debug_stream.str(), "Showing the "))
-        << "got: " << debug_stream.str();
-  }
-}
-
-TEST(FormatterEndToEndTest, DiagnosticEquallyOptimalWrappings) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  for (const auto &test_case : kFormatterTestCases) {
-    std::ostringstream stream, debug_stream;
-    ExecutionControl control;
-    control.stream = &debug_stream;
-    control.show_equally_optimal_wrappings = true;
-    const auto status = FormatVerilog(test_case.input, "<filename>", style,
-                                      stream, kEnableAllLines, control);
-    EXPECT_OK(status) << status.message();
-    if (!debug_stream.str().empty()) {
-      EXPECT_TRUE(absl::StartsWith(debug_stream.str(), "Showing the "))
-          << "got: " << debug_stream.str();
-      // Cannot guarantee among unit tests that there will be >1 solution.
-    }
-  }
-}
-
-// Test that hitting search space limit results in correct error status.
-TEST(FormatterEndToEndTest, UnfinishedLineWrapSearching) {
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-
-  const std::string_view code("parameter int x = 1+1;\n");
-
-  std::ostringstream stream, debug_stream;
-  ExecutionControl control;
-  control.max_search_states = 2;  // Cause search to abort early.
-  control.stream = &debug_stream;
-  const auto status = FormatVerilog(code, "<filename>", style, stream,
-                                    kEnableAllLines, control);
-  EXPECT_EQ(status.code(), StatusCode::kResourceExhausted);
-  EXPECT_TRUE(absl::StartsWith(status.message(), "***"));
-}
-
-static constexpr FormatterTestCase kOnelineFormatBaselineTestCases[] = {
-    // Reference - following test cases should not be affected by the switch
-    {// Minimal useful case
-     "covergroup c @ (posedge clk); coverpoint a; endgroup\n",
-     "covergroup c @(posedge clk);\n"
-     "  coverpoint a;\n"
-     "endgroup\n"},
-    {// Multiple coverpoints
-     "covergroup foo @(posedge clk); coverpoint a; coverpoint b; "
-     "coverpoint c; coverpoint d; endgroup\n",
-     "covergroup foo @(posedge clk);\n"
-     "  coverpoint a;\n"
-     "  coverpoint b;\n"
-     "  coverpoint c;\n"
-     "  coverpoint d;\n"
-     "endgroup\n"},
-    {// Multiple bins
-     "covergroup memory @ (posedge ce); address  :coverpoint addr {"
-     "bins low={LOW}; bins high={HIGH};} endgroup\n",
-     "covergroup memory @(posedge ce);\n"
-     "  address: coverpoint addr {\n"
-     "    bins low = {LOW};\n"
-     "    bins high = {HIGH};\n"
-     "  }\n"
-     "endgroup\n"},
-    {// Multiple bins with multiple elements
-     "covergroup memory @ (posedge ce); address  :coverpoint addr {"
-     "bins low={0,127}; bins high={128,255};} endgroup\n",
-     "covergroup memory @(posedge ce);\n"
-     "  address: coverpoint addr {\n"
-     "    bins low = {0, 127};\n"
-     "    bins high = {128, 255};\n"
-     "  }\n"
-     "endgroup\n"},
-};
-
-// Tests that constructs that could be formatted as one-liners are formatted
-// correctly. This is the baseline test with default style, test cases should
-// not be affected by the setting.
-TEST(FormatterEndToEndTest, OnelineFormatBaselineTest) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.expand_coverpoints = false;
-  for (const auto &test_case : kOnelineFormatBaselineTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-  // Test again with the switch, should not affect formatting
-  style.expand_coverpoints = true;
-  for (const auto &test_case : kOnelineFormatBaselineTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Following two test sets are affected by the expand_coverponits switch
-// They should contain corresponding test cases
-static constexpr FormatterTestCase kOnelineFormatReferenceTestCases[] = {
-    {// Coverpoint that could fit on one line
-     "covergroup memory @ (posedge ce); a :coverpoint d {"
-     "bins l={0};} endgroup\n",
-     "covergroup memory @(posedge ce);\n"
-     "  a: coverpoint d {bins l = {0};}\n"
-     "endgroup\n"},
-    {// Fit with a reference
-     "covergroup memory @ (posedge ce); a :coverpoint d {"
-     "bins l={LOW};} endgroup\n",
-     "covergroup memory @(posedge ce);\n"
-     "  a: coverpoint d {bins l = {LOW};}\n"
-     "endgroup\n"},
-    {// Fit with multiple elements
-     "covergroup memory @ (posedge ce); a :coverpoint d {"
-     "bins l={0,8};} endgroup\n",
-     "covergroup memory @(posedge ce);\n"
-     "  a: coverpoint d {bins l = {0, 8};}\n"
-     "endgroup\n"},
-};
-
-static constexpr FormatterTestCase kOnelineFormatExpandTestCases[] = {
-    {// Coverpoint that could fit on one line
-     "covergroup memory @ (posedge ce); a :coverpoint d {"
-     "bins l={0};} endgroup\n",
-     "covergroup memory @(posedge ce);\n"
-     "  a: coverpoint d {\n"
-     "    bins l = {0};\n"
-     "  }\n"
-     "endgroup\n"},
-    {// Fit with a reference
-     "covergroup memory @ (posedge ce); a :coverpoint d {"
-     "bins l={LOW};} endgroup\n",
-     "covergroup memory @(posedge ce);\n"
-     "  a: coverpoint d {\n"
-     "    bins l = {LOW};\n"
-     "  }\n"
-     "endgroup\n"},
-    {// Fit with multiple elements
-     "covergroup memory @ (posedge ce); a :coverpoint d {"
-     "bins l={0,8};} endgroup\n",
-     "covergroup memory @(posedge ce);\n"
-     "  a: coverpoint d {\n"
-     "    bins l = {0, 8};\n"
-     "  }\n"
-     "endgroup\n"},
-};
-
-TEST(FormatterEndToEndTest, OnelineFormatReferenceTest) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.expand_coverpoints = false;
-
-  for (const auto &test_case : kOnelineFormatReferenceTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Tests that constructs that could be formatted as one-liners are expanded
-// correctly. This is the baseline test with default style
-TEST(FormatterEndToEndTest, OnelineFormatExpandTest) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.expand_coverpoints = true;
-
-  for (const auto &test_case : kOnelineFormatExpandTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-struct DimensionsAlignmentTestCase {
-  std::string_view input;
-  std::string_view expected[4];
-};
-
-static constexpr DimensionsAlignmentTestCase
-    kPortDeclarationDimensionsAlignmentTestCases[] = {
-        {"import \"DPI-C\" context function void func(\n"
-         "input bit foo,\n"
-         "input bit [2] foobar,\n"
-         "input bit [24:16] bar,\n"
-         "input bit [2:0][31:0] baz,\n"
-         "input bit [4][24:0][16:0] foobarbaz[],\n"
-         "input bit [FOOBAZ][31:24] qux[16],\n"
-         "input bit [16] quux[8:2][16][32],\n"
-         "output bit [2:0][2:0][2:0] quuz[8][16:12]\n"
-         ");\n",
-         {
-             "import \"DPI-C\" context function void func(\n"
-             "  input  bit                       foo,\n"
-             "  input  bit [     2]              foobar,\n"
-             "  input  bit [ 24:16]              bar,\n"
-             "  input  bit [   2:0][ 31:0]       baz,\n"
-             "  input  bit [     4][ 24:0][16:0] foobarbaz[   ],\n"
-             "  input  bit [FOOBAZ][31:24]       qux      [ 16],\n"
-             "  input  bit [    16]              quux     [8:2][   16][32],\n"
-             "  output bit [   2:0][  2:0][ 2:0] quuz     [  8][16:12]\n"
-             ");\n",
-             "import \"DPI-C\" context function void func(\n"
-             "  input  bit                       foo,\n"
-             "  input  bit [     2]              foobar,\n"
-             "  input  bit [ 24:16]              bar,\n"
-             "  input  bit [   2:0][ 31:0]       baz,\n"
-             "  input  bit [     4][ 24:0][16:0] foobarbaz         [     ],\n"
-             "  input  bit [FOOBAZ][31:24]       qux               [   16],\n"
-             "  input  bit [    16]              quux     [8:2][16][   32],\n"
-             "  output bit [   2:0][  2:0][ 2:0] quuz          [ 8][16:12]\n"
-             ");\n",
-             "import \"DPI-C\" context function void func(\n"
-             "  input  bit                      foo,\n"
-             "  input  bit              [    2] foobar,\n"
-             "  input  bit              [24:16] bar,\n"
-             "  input  bit      [   2:0][ 31:0] baz,\n"
-             "  input  bit [  4][  24:0][ 16:0] foobarbaz[   ],\n"
-             "  input  bit      [FOOBAZ][31:24] qux      [ 16],\n"
-             "  input  bit              [   16] quux     [8:2][   16][32],\n"
-             "  output bit [2:0][   2:0][  2:0] quuz     [  8][16:12]\n"
-             ");\n",
-             "import \"DPI-C\" context function void func(\n"
-             "  input  bit                      foo,\n"
-             "  input  bit              [    2] foobar,\n"
-             "  input  bit              [24:16] bar,\n"
-             "  input  bit      [   2:0][ 31:0] baz,\n"
-             "  input  bit [  4][  24:0][ 16:0] foobarbaz         [     ],\n"
-             "  input  bit      [FOOBAZ][31:24] qux               [   16],\n"
-             "  input  bit              [   16] quux     [8:2][16][   32],\n"
-             "  output bit [2:0][   2:0][  2:0] quuz          [ 8][16:12]\n"
-             ");\n",
-         }},
-        {"module m(\n"
-         "output bit [2:0][2:0][2:0] quuz[8][16:12],\n"
-         "input bit [16] quux[8:2][16][32],\n"
-         "input bit [FOOBAZ][31:24] qux[16],\n"
-         "input bit [4][24:0][16:0] foobaz[],\n"
-         "input bit [2:0][31:0] baz,\n"
-         "input bit [24:16] bar,\n"
-         "input bit [2] foobar,\n"
-         "input bit foo\n"
-         "); endmodule:m\n",
-         {
-             "module m (\n"
-             "    output bit [   2:0][  2:0][ 2:0] quuz  [  8][16:12],\n"
-             "    input  bit [    16]              quux  [8:2][   16][32],\n"
-             "    input  bit [FOOBAZ][31:24]       qux   [ 16],\n"
-             "    input  bit [     4][ 24:0][16:0] foobaz[   ],\n"
-             "    input  bit [   2:0][ 31:0]       baz,\n"
-             "    input  bit [ 24:16]              bar,\n"
-             "    input  bit [     2]              foobar,\n"
-             "    input  bit                       foo\n"
-             ");\n"
-             "endmodule : m\n",
-             "module m (\n"
-             "    output bit [   2:0][  2:0][ 2:0] quuz       [ 8][16:12],\n"
-             "    input  bit [    16]              quux  [8:2][16][   32],\n"
-             "    input  bit [FOOBAZ][31:24]       qux            [   16],\n"
-             "    input  bit [     4][ 24:0][16:0] foobaz         [     ],\n"
-             "    input  bit [   2:0][ 31:0]       baz,\n"
-             "    input  bit [ 24:16]              bar,\n"
-             "    input  bit [     2]              foobar,\n"
-             "    input  bit                       foo\n"
-             ");\n"
-             "endmodule : m\n",
-             "module m (\n"
-             "    output bit [2:0][   2:0][  2:0] quuz  [  8][16:12],\n"
-             "    input  bit              [   16] quux  [8:2][   16][32],\n"
-             "    input  bit      [FOOBAZ][31:24] qux   [ 16],\n"
-             "    input  bit [  4][  24:0][ 16:0] foobaz[   ],\n"
-             "    input  bit      [   2:0][ 31:0] baz,\n"
-             "    input  bit              [24:16] bar,\n"
-             "    input  bit              [    2] foobar,\n"
-             "    input  bit                      foo\n"
-             ");\n"
-             "endmodule : m\n",
-             "module m (\n"
-             "    output bit [2:0][   2:0][  2:0] quuz       [ 8][16:12],\n"
-             "    input  bit              [   16] quux  [8:2][16][   32],\n"
-             "    input  bit      [FOOBAZ][31:24] qux            [   16],\n"
-             "    input  bit [  4][  24:0][ 16:0] foobaz         [     ],\n"
-             "    input  bit      [   2:0][ 31:0] baz,\n"
-             "    input  bit              [24:16] bar,\n"
-             "    input  bit              [    2] foobar,\n"
-             "    input  bit                      foo\n"
-             ");\n"
-             "endmodule : m\n",
-         }},
-};
-
-TEST(FormatterEndToEndTest, PortDeclarationDimensionsAlignmentTest) {
-  FormatStyle style;
-  style.column_limit = 64;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-
-  // All combinations of port_declaration_right_align_{un,}packed_dimensions
-  static const bool right_align_combinations[][2] = {
-      {false, false}, {false, true}, {true, false}, {true, true}};
-
-  for (const auto &test_case : kPortDeclarationDimensionsAlignmentTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    size_t expected_index = 0;
-    for (const auto &right_align : right_align_combinations) {
-      VLOG(1) << "style variant:\n"
-              << "port_declarations_right_align_packed_dimensions: "
-              << right_align[0] << "\n"
-              << "port_declarations_right_align_unpacked_dimensions: "
-              << right_align[1] << "\n";
-      style.port_declarations_right_align_packed_dimensions = right_align[0];
-      style.port_declarations_right_align_unpacked_dimensions = right_align[1];
-
-      std::ostringstream stream;
-
-      const auto status =
-          FormatVerilog(test_case.input, "<filename>", style, stream);
-      // Require these test cases to be valid.
-      EXPECT_OK(status) << status.message();
-      EXPECT_EQ(stream.str(), test_case.expected[expected_index++])
-          << "code:\n"
-          << test_case.input;
-    }
-  }
-}
-
-// TODO(fangism): directed tests using style variations
-
-static constexpr FormatterTestCase kNestedFunctionsTestCases40ColumnsLimit[] = {
-    {"module foo;"
-     "`uvm_info(`gfn, $sformatf(\n"
-     "\"\\n  base_vseq: generate %0d pulse in channel %0d\", cfg.num_pulses, "
-     "i), UVM_DEBUG)\n"
-     "endmodule",
-     "module foo;\n"
-     "  `uvm_info(\n"
-     "      `gfn,\n"
-     "      $sformatf(\n"
-     "          \"\\n  base_vseq: generate %0d pulse in channel %0d\",\n"
-     "          cfg.num_pulses, i), UVM_DEBUG)\n"
-     "endmodule\n"},
-    {"module foo;`uvm_info(`gfn, $sformatf("
-     "\"\\n\\n\\t ----| STARTING AES MAIN SEQUENCE |----\\n %s\","
-     "cfg.convert2string()), UVM_LOW)\n"
-     "endmodule",
-     "module foo;\n"
-     "  `uvm_info(\n"
-     "      `gfn,\n"
-     "      $sformatf(\n"
-     "          \"\\n\\n\\t ----| STARTING AES MAIN SEQUENCE |----\\n %s\",\n"
-     "          cfg.convert2string()),\n"
-     "      UVM_LOW)\n"  // FIXME: Wrapped by SearchLineWraps
-     "endmodule\n"},
-};
-
-TEST(FormatterEndToEndTest, FormatNestedFunctionsTestCases40ColumnsLimit) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-
-  for (const auto &test_case : kNestedFunctionsTestCases40ColumnsLimit) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-static constexpr FormatterTestCase kNestedFunctionsTestCases60ColumnsLimit[] = {
-    {"module foo;"
-     "`uvm_info(`gfn, $sformatf(\n"
-     "\"\\n  base_vseq: generate %0d pulse in channel %0d\", cfg.num_pulses, "
-     "i), UVM_DEBUG)\n"
-     "endmodule",
-     "module foo;\n"
-     "  `uvm_info(\n"
-     "      `gfn,\n"
-     "      $sformatf(\n"
-     "          \"\\n  base_vseq: generate %0d pulse in channel %0d\",\n"
-     "          cfg.num_pulses, i), UVM_DEBUG)\n"
-     "endmodule\n"},
-    {"module foo;`uvm_info(`gfn, $sformatf("
-     "\"\\n\\n\\t ----| STARTING AES MAIN SEQUENCE |----\\n %s\","
-     "cfg.convert2string()), UVM_LOW)\n"
-     "endmodule",
-     "module foo;\n"
-     "  `uvm_info(\n"
-     "      `gfn,\n"
-     "      $sformatf(\n"
-     "          \"\\n\\n\\t ----| STARTING AES MAIN SEQUENCE |----\\n %s\",\n"
-     "          cfg.convert2string()), UVM_LOW)\n"
-     "endmodule\n"},
-};
-
-TEST(FormatterEndToEndTest, FormatNestedFunctionsTestCases60ColumnsLimit) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 60;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-
-  for (const auto &test_case : kNestedFunctionsTestCases60ColumnsLimit) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-static constexpr FormatterTestCase kNestedFunctionsTestCases80ColumnsLimit[] = {
-    {"module foo;"
-     "`uvm_info(`gfn, $sformatf(\n"
-     "\"\\n  base_vseq: generate %0d pulse in channel %0d\", cfg.num_pulses, "
-     "i), UVM_DEBUG)\n"
-     "endmodule",
-     "module foo;\n"
-     "  `uvm_info(`gfn, $sformatf(\"\\n  base_vseq: generate %0d pulse in "
-     "channel %0d\",\n"
-     "                            cfg.num_pulses, i), UVM_DEBUG)\n"
-     "endmodule\n"},
-    {"module foo;`uvm_info(`gfn, $sformatf("
-     "\"\\n\\n\\t ----| STARTING AES MAIN SEQUENCE |----\\n %s\","
-     "cfg.convert2string()), UVM_LOW)\n"
-     "endmodule",
-     "module foo;\n"
-     "  `uvm_info(`gfn, $sformatf(\n"
-     "                      \"\\n\\n\\t ----| STARTING AES MAIN SEQUENCE "
-     "|----\\n %s\",\n"
-     "                      cfg.convert2string()), UVM_LOW)\nendmodule\n"},
-    {"module x;"
-     "`uvm_fatal(`gfn, $sformatf("
-     "\"The data 0x%0h written to the signature address is formatted "
-     "incorrectly.\","
-     "signature_data))\n"
-     "endmodule",
-     "module x;\n"
-     "  `uvm_fatal(\n"
-     "      `gfn,\n"
-     "      $sformatf(\n"
-     "          \"The data 0x%0h written to the signature address is formatted "
-     "incorrectly.\",\n"
-     "          signature_data))\n"
-     "endmodule\n"},
-};
-
-TEST(FormatterEndToEndTest, FormatNestedFunctionsTestCases80ColumnsLimit) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 80;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-
-  for (const auto &test_case : kNestedFunctionsTestCases80ColumnsLimit) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-static constexpr FormatterTestCase kNestedFunctionsTestCases100ColumnsLimit[] =
-    {
-        {"module foo;"
-         "`uvm_info(`gfn, $sformatf(\n"
-         "\"\\n  base_vseq: generate %0d pulse in channel %0d\", "
-         "cfg.num_pulses, i), UVM_DEBUG)\n"
-         "endmodule",
-         "module foo;\n"
-         "  `uvm_info(`gfn, $sformatf(\"\\n  base_vseq: generate %0d pulse in "
-         "channel %0d\", cfg.num_pulses, i),\n"
-         "            UVM_DEBUG)\n"
-         "endmodule\n"},
-        {"module foo;`uvm_info(`gfn, $sformatf("
-         "\"\\n\\n\\t ----| STARTING AES MAIN SEQUENCE |----\\n %s\","
-         "cfg.convert2string()), UVM_LOW)\n"
-         "endmodule",
-         "module foo;\n"
-         "  `uvm_info(`gfn, $sformatf(\"\\n\\n\\t ----| STARTING AES MAIN "
-         "SEQUENCE |----\\n %s\",\n"
-         "                            cfg.convert2string()), UVM_LOW)\n"
-         "endmodule\n"},
-        {"module x;"
-         "`uvm_fatal(`gfn, $sformatf("
-         "\"The data 0x%0h written to the signature address is formatted "
-         "incorrectly.\","
-         "signature_data))\n"
-         "endmodule",
-         "module x;\n"
-         "  `uvm_fatal(`gfn, $sformatf(\n"
-         "                       \"The data 0x%0h written to the signature "
-         "address is formatted incorrectly.\",\n"
-         "                       signature_data))\n"
-         "endmodule\n"},
-        {// nested modules, three-levels
-         "module x; module y; module z;"
-         "`uvm_fatal(`gfn, $sformatf("
-         "\"The data 0x%0h written to the signature address is formatted "
-         "incorrectly.\","
-         "signature_data))\n"
-         "endmodule endmodule endmodule",
-         "module x;\n"
-         "  module y;\n"
-         "    module z;\n"
-         "      `uvm_fatal(`gfn,\n"
-         "                 $sformatf(\n"
-         "                     \"The data 0x%0h written to the signature "
-         "address is formatted incorrectly.\",\n"
-         "                     signature_data))\n"
-         "    endmodule\n"
-         "  endmodule\n"
-         "endmodule\n"},
-};
-
-TEST(FormatterEndToEndTest, FormatNestedFunctionsTestCases100ColumnsLimit) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 100;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-
-  for (const auto &test_case : kNestedFunctionsTestCases100ColumnsLimit) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-static constexpr FormatterTestCase noCompactIndexingAndSelectionsTestCases[]{
-    {"module m1 ();\n"
-     "  assign s1 = msg[1 : 2 + 3];\n"
-     "  assign s2 = {<<8{msg[1 : 2 + 3]}};\n"
-     "endmodule\n",
-     "module m1 ();\n"
-     "  assign s1 = msg[1 : 2 + 3];\n"
-     "  assign s2 = {<< 8{msg[1 : 2 + 3]}};\n"
-     "endmodule\n"}};
-
-TEST(FormatterEndToEndTest, compactIndexingAndSelectionsTestCases) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 100;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.compact_indexing_and_selections = false;
-
-  for (const auto &test_case : noCompactIndexingAndSelectionsTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-static constexpr FormatterTestCase
-    kSpaceBeforeHashInUnqualifiedTypedefTestCases[] = {
-        // unqualified parameterized type keeps a space before '#'
-        {"typedef dv_base_env_cov #(.CFG_T(tl_agent_env_cfg)) "
-         "tl_agent_env_cov;\n",
-         "typedef dv_base_env_cov #(\n"
-         "    .CFG_T(tl_agent_env_cfg)\n"
-         ") tl_agent_env_cov;\n"},
-        // ... and is inserted when absent
-        {"typedef dv_base_env_cov#(.CFG_T(tl_agent_env_cfg)) "
-         "tl_agent_env_cov;\n",
-         "typedef dv_base_env_cov #(\n"
-         "    .CFG_T(tl_agent_env_cfg)\n"
-         ") tl_agent_env_cov;\n"},
-        // single short parameter stays on one line
-        {"typedef my_class #(.P(P)) my_class_t;\n",
-         "typedef my_class #(.P(P)) my_class_t;\n"},
-        // package-qualified types are unaffected (no space before '#')
-        {"typedef foo_pkg::baz_t#(.L(L), .W(W)) bar_t;\n",
-         "typedef foo_pkg::baz_t#(\n"
-         "    .L(L),\n"
-         "    .W(W)\n"
-         ") bar_t;\n"},
-};
-
-TEST(FormatterEndToEndTest, SpaceBeforeHashInUnqualifiedTypedefTestCases) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.class_parameter_space = true;
-
-  for (const auto &test_case : kSpaceBeforeHashInUnqualifiedTypedefTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-static constexpr FormatterTestCase kFunctionCallsWithComments[] = {
-    {// no comments
-     "module foo;\n"
-     "`uvm_info(`gfn, \"xx\",\n"
-     "cfg.num_pulses, i, UVM_DEBUG)\n"
-     "endmodule",
-     "module foo;\n"
-     "  `uvm_info(`gfn, \"xx\", cfg.num_pulses, i, UVM_DEBUG)\n"
-     "endmodule\n"},
-    {// one comment
-     "module foo;\n"
-     "`uvm_info(`gfn, \"xx\",  // yy\n"
-     "cfg.num_pulses, i, UVM_DEBUG)\n"
-     "endmodule",
-     "module foo;\n"
-     "  `uvm_info(`gfn, \"xx\",  // yy\n"
-     "            cfg.num_pulses, i, UVM_DEBUG)\n"
-     "endmodule\n"},
-    {// two comments
-     "module foo;\n"
-     "`uvm_info(`gfn, \"xx\",  "
-     "    cfg.num_pulses, // xx\n"
-     " i, UVM_DEBUG)// uuu\n"
-     "endmodule",
-     "module foo;\n"
-     "  `uvm_info(`gfn, \"xx\", cfg.num_pulses,  // xx\n"
-     "            i, UVM_DEBUG)  // uuu\n"
-     "endmodule\n"},
-
-    {// nested function calls with comments
-     "module foo;"
-     "`uvm_info(`gfn, $sformatf(\"\\n  base_vseq: generate %0d"
-     " pulse in channel %0d\", cfg.num_pulses, // comment\n"
-     " i), UVM_DEBUG)\n"
-     "endmodule",
-     "module foo;\n"
-     "  `uvm_info(`gfn, $sformatf(\"\\n  base_vseq: generate %0d pulse in "
-     "channel %0d\",\n"
-     "                            cfg.num_pulses,  // comment\n"
-     "                            i), UVM_DEBUG)\n"
-     "endmodule\n"},
-};
-
-TEST(FormatterEndToEndTest, FunctionCallsWithComments) {
-  // Use a fixed style.
-  FormatStyle style;
-  style.column_limit = 100;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-
-  for (const auto &test_case : kFunctionCallsWithComments) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    // Require these test cases to be valid.
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Extracts the first non-whitespace token and prepends it with number of
-// of newlines seen in front of it. So "\n \n\n  foo" -> "3foo"
-std::string NLCountAndfirstWord(std::string_view str) {
-  std::string result;
-  int newline_count = 0;
-  std::string_view::const_iterator begin = str.begin();
-  for (/**/; begin < str.end(); ++begin) {
-    if (!isspace(*begin)) break;
-    newline_count += (*begin == '\n');
-  }
-  // Emit number of newlines seen up to first token.
-  result.append(1,
-                static_cast<char>(newline_count + '0'));  // single digit itoa
-  std::string_view::const_iterator end_str = begin;
-  for (/**/; end_str < str.end() && !isspace(*end_str); ++end_str) {
-  }
-  result.append(begin, end_str);
-  return result;
-}
-
-// Similar to NLCountAndfirstWord() but looking at the last token and trailing
-// newlines.
-std::string lastWordAndNLCount(std::string_view str) {
-  std::string result;
-  int newline_count = 0;
-  std::string_view::const_iterator back = str.end() - 1;
-  for (/**/; back >= str.begin(); --back) {
-    if (!isspace(*back)) break;
-    newline_count += (*back == '\n');
-  }
-
-  std::string_view::const_iterator start_str = back;
-  for (/**/; start_str >= str.begin() && !isspace(*start_str); --start_str) {
-  }
-  result.append(&*(start_str + 1), back - start_str);
-  // Emit number of newlines seen following last token.
-  result.append(1,
-                static_cast<char>(newline_count + '0'));  // single digit itoa
-  return result;
-}
-
-// Testing the tester...
-TEST(FormatterTestInternal, TokenExtractorAndLineCounterTestFixtureTest) {
-  std::string_view str = "\n \nhello world \n \n";
-  ASSERT_EQ(NLCountAndfirstWord(str), "2hello");
-  ASSERT_EQ(NLCountAndfirstWord(str.substr(1)), "1hello");
-  ASSERT_EQ(NLCountAndfirstWord(str.substr(3)), "0hello");
-
-  ASSERT_EQ(lastWordAndNLCount(str), "world2");
-  ASSERT_EQ(lastWordAndNLCount(str.substr(0, str.length() - 1)), "world1");
-  ASSERT_EQ(lastWordAndNLCount(str.substr(0, str.length() - 2)), "world1");
-  ASSERT_EQ(lastWordAndNLCount(str.substr(0, str.length() - 3)), "world0");
-
-  str = "aworld \n \n";  // Make sure to not overshoot begin.
-  ASSERT_EQ(lastWordAndNLCount(str.substr(1)), "world2");
-}
-
-TEST(FormatterEndToEndTest, RangeFormattingOnlyEmittingRelevantLines) {
-  // Including some empty lines to make sure the formatting
-  static constexpr std::string_view unformatted =
-      R"(     module foo (// non-port comment
-
-     // some comment
-
-  input  logic  a, input logic  b,input bit [2]
-foobar, input    bit [4] foobaz,
-    input bit [2]    quux
-
-
-        ); endmodule
-)";
-
-  std::vector<std::string_view> lines = absl::StrSplit(unformatted, '\n');
-  const int kLineCount = lines.size();
-
-  FormatStyle style;
-
-  // Go through all possible sub-ranges, format these, and compare that the
-  // output of the range output is contained inside the full format given the
-  // same sub-range.
-  for (int start_line = 0; start_line < kLineCount; ++start_line) {
-    for (int end_line = start_line; end_line < kLineCount; ++end_line) {
-      // Line numbers are 1-index based.
-      const verible::Interval<int> range = {start_line + 1, end_line + 1};
-
-      // Format full text for reference
-      std::ostringstream full_format;
-      absl::Status status =
-          FormatVerilog(unformatted, "<filename>", style, full_format, {range});
-      EXPECT_OK(status) << status.message();
-
-      // To test: range formatted.
-      std::string range_formatted;
-      status = FormatVerilogRange(unformatted, "<filename>", style,
-                                  &range_formatted, range);
-      EXPECT_OK(status) << status.message();
-      if (range.empty()) {  // Nothing to format: expect empty output.
-        EXPECT_TRUE(range_formatted.empty());
-        continue;
-      }
-
-      // Area we cover in the input (include the final newline);
-      const auto source_begin = lines[start_line].begin();
-      const auto source_end = lines[end_line - 1].end() + 1;  // include \n
-      const std::string_view range_unformatted(&*source_begin,
-                                               source_end - source_begin);
-
-      // To compare that we indeed formatted the requested reqgion, we make
-      // sure that the first and last token (simplified: non-whitespace word)
-      // in the input of the range to be formatted is
-      // exactly the first and last token that comes out of the range
-      // formatted snippet.
-      //
-      // While the whitespace might be different at the beginning and end
-      // due to formatting, the number of _newlines_ at the beginning and end
-      // should be the same, so we include the newline count in the comparison.
-
-      EXPECT_EQ(NLCountAndfirstWord(range_unformatted),
-                NLCountAndfirstWord(range_formatted))
-          << "'" << range_unformatted << "' vs. '" << range_formatted << "'";
-
-      // ... same for the last word.
-      EXPECT_EQ(lastWordAndNLCount(range_unformatted),
-                lastWordAndNLCount(range_formatted))
-          << "'" << range_unformatted << "' vs. '" << range_formatted << "'";
-
-      EXPECT_LE(range_formatted.length(), full_format.str().length());
-      EXPECT_THAT(full_format.str(), HasSubstr(range_formatted));
-    }
-  }
-}
-
-// Creates a string_view spanning a whole string literal.
-// Works correctly with strings containing null bytes.
-template <std::size_t N>
-constexpr std::string_view string_view_from_literal(const char (&s)[N]) {
-  return std::string_view(s, N - 1);
-}
-
-// The following regressions have been found by a fuzzer, so the input might
-// look a bit 'funny'. Nevertheless, they expose real bugs in the code.
-
-[[maybe_unused]] void TestForNonCrash(std::string_view input) {
-  using verible::EscapeString;
-  FormatStyle style;
-  std::ostringstream stream;
-  const auto status = FormatVerilog(input, "<filename>", style, stream);
-  // If we are here, we did at least not crash, which is all we desire for
-  // the fuzzer tests.
-  // Other issues that are reported correctly (probably due to strange inputs
-  // generated by the fuzzer) are ok, so we just log them here FYI.
-  if (!status.ok()) {
-    LOG(INFO) << "No crash, but format failed for other reason: "
-              << status.message() << "\nEscaped input: \""
-              << EscapeString(input) << "\"";
-  }
-}
-
-#if 0
-// https://github.com/chipsalliance/verible/issues/1381
-TEST(FormatterEndToEndTest, FuzzingRegression_1381) {
-  TestForNonCrash(string_view_from_literal("P#(\0\0//\0//\0,);"));
-  TestForNonCrash(string_view_from_literal("P#(\0\0//\0,,//\0,"));
-}
-#endif
-
-// https://github.com/chipsalliance/verible/issues/1384
-TEST(FormatterEndToEndTest, FuzzingRegression_UseAfterFree_1384) {
-  TestForNonCrash("`c(`c(//););");
-}
-
-// https://github.com/chipsalliance/verible/issues/1386
-TEST(FormatterEndToEndTest, FuzzingRegressionHierachyInvariant) {
-  // Original sample input from fuzzer
-  TestForNonCrash(string_view_from_literal("`c(`c()\0;);"));
-  // Lexically correct variant (`\0` -> `\n`)
-  TestForNonCrash(string_view_from_literal("`c(`c()\n;);"));
-  // Lexically correct variant (`\0` removed)
-  TestForNonCrash(string_view_from_literal("`c(`c(););"));
-}
-
-// Possibly same ? https://github.com/chipsalliance/verible/issues/1386
-TEST(FormatterEndToEndTest, FuzzingRegression_outofmemory) {
-  TestForNonCrash(string_view_from_literal("`f(1'O`f())\n"));
-}
-
-TEST(FormatterEndToEndTest, AlignmentGroupBoundaryNone) {
-  // Default behavior: separator comments and blank lines do NOT break groups.
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// Separator comment does not break alignment group
-       "module m;\n"
-       "assign foo  = 1'b1;\n"
-       "assign baar = 1'b0;\n"
-       "// ============\n"
-       "assign baaaaz = 1'b1;\n"
-       "assign c      = 1'b0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign foo    = 1'b1;\n"
-       "  assign baar   = 1'b0;\n"
-       "  // ============\n"
-       "  assign baaaaz = 1'b1;\n"
-       "  assign c      = 1'b0;\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.alignment_group_boundary = AlignmentGroupBoundary::kNone;
-  style.assignment_statement_alignment = AlignmentPolicy::kAlign;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, AlignmentGroupBoundarySeparatorComments) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// Separator comment breaks alignment group
-       "module m;\n"
-       "assign foo  = 1'b1;\n"
-       "assign baar = 1'b0;\n"
-       "// ============\n"
-       "assign baaaaz = 1'b1;\n"
-       "assign c      = 1'b0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign foo  = 1'b1;\n"
-       "  assign baar = 1'b0;\n"
-       "  // ============\n"
-       "  assign baaaaz = 1'b1;\n"
-       "  assign c      = 1'b0;\n"
-       "endmodule\n"},
-      {// Dashes separator also breaks
-       "module m;\n"
-       "assign foo  = 1'b1;\n"
-       "assign baar = 1'b0;\n"
-       "// ------------\n"
-       "assign baaaaz = 1'b1;\n"
-       "assign c      = 1'b0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign foo  = 1'b1;\n"
-       "  assign baar = 1'b0;\n"
-       "  // ------------\n"
-       "  assign baaaaz = 1'b1;\n"
-       "  assign c      = 1'b0;\n"
-       "endmodule\n"},
-      {// Captioned divider (text between separator runs) also breaks
-       "module m;\n"
-       "assign foo  = 1'b1;\n"
-       "assign baar = 1'b0;\n"
-       "// ------ section heading ------\n"
-       "assign baaaaz = 1'b1;\n"
-       "assign c      = 1'b0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign foo  = 1'b1;\n"
-       "  assign baar = 1'b0;\n"
-       "  // ------ section heading ------\n"
-       "  assign baaaaz = 1'b1;\n"
-       "  assign c      = 1'b0;\n"
-       "endmodule\n"},
-      {// Leading-only divider run with trailing caption text
-       "module m;\n"
-       "assign foo  = 1'b1;\n"
-       "assign baar = 1'b0;\n"
-       "// ==== Registers\n"
-       "assign baaaaz = 1'b1;\n"
-       "assign c      = 1'b0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign foo  = 1'b1;\n"
-       "  assign baar = 1'b0;\n"
-       "  // ==== Registers\n"
-       "  assign baaaaz = 1'b1;\n"
-       "  assign c      = 1'b0;\n"
-       "endmodule\n"},
-      {// No space after // also works
-       "module m;\n"
-       "assign foo  = 1'b1;\n"
-       "assign baar = 1'b0;\n"
-       "//============\n"
-       "assign baaaaz = 1'b1;\n"
-       "assign c      = 1'b0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign foo  = 1'b1;\n"
-       "  assign baar = 1'b0;\n"
-       "  //============\n"
-       "  assign baaaaz = 1'b1;\n"
-       "  assign c      = 1'b0;\n"
-       "endmodule\n"},
-      {// Slash separator (/////) also works
-       "module m;\n"
-       "assign foo  = 1'b1;\n"
-       "assign baar = 1'b0;\n"
-       "//////////\n"
-       "assign baaaaz = 1'b1;\n"
-       "assign c      = 1'b0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign foo  = 1'b1;\n"
-       "  assign baar = 1'b0;\n"
-       "  //////////\n"
-       "  assign baaaaz = 1'b1;\n"
-       "  assign c      = 1'b0;\n"
-       "endmodule\n"},
-      {// Regular comment does NOT break alignment
-       "module m;\n"
-       "assign foo  = 1'b1;\n"
-       "assign baar = 1'b0;\n"
-       "// Title text\n"
-       "assign baaaaz = 1'b1;\n"
-       "assign c      = 1'b0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign foo    = 1'b1;\n"
-       "  assign baar   = 1'b0;\n"
-       "  // Title text\n"
-       "  assign baaaaz = 1'b1;\n"
-       "  assign c      = 1'b0;\n"
-       "endmodule\n"},
-      {// Multi-line comment block with separators
-       "module m;\n"
-       "assign foo  = 1'b1;\n"
-       "assign baar = 1'b0;\n"
-       "// ============\n"
-       "// Title\n"
-       "// ============\n"
-       "assign baaaaz = 1'b1;\n"
-       "assign c      = 1'b0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign foo  = 1'b1;\n"
-       "  assign baar = 1'b0;\n"
-       "  // ============\n"
-       "  // Title\n"
-       "  // ============\n"
-       "  assign baaaaz = 1'b1;\n"
-       "  assign c      = 1'b0;\n"
-       "endmodule\n"},
-      {// Short repeated body (3 chars) does NOT break
-       "module m;\n"
-       "assign foo  = 1'b1;\n"
-       "assign baar = 1'b0;\n"
-       "// ---\n"
-       "assign baaaaz = 1'b1;\n"
-       "assign c      = 1'b0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign foo    = 1'b1;\n"
-       "  assign baar   = 1'b0;\n"
-       "  // ---\n"
-       "  assign baaaaz = 1'b1;\n"
-       "  assign c      = 1'b0;\n"
-       "endmodule\n"},
-      {// Declarations also respect separator comments
-       "module m;\n"
-       "logic       a;\n"
-       "logic [7:0] b;\n"
-       "// ============\n"
-       "logic c_long_name;\n"
-       "logic d;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  logic       a;\n"
-       "  logic [7:0] b;\n"
-       "  // ============\n"
-       "  logic c_long_name;\n"
-       "  logic d;\n"
-       "endmodule\n"},
-      {// Statements in always blocks
-       "module m;\n"
-       "always_comb begin\n"
-       "aaaaa = b;\n"
-       "c     = 1'b0;\n"
-       "// ============\n"
-       "dd = eee;\n"
-       "ffffff = g;\n"
-       "end\n"
-       "endmodule\n",
-       "module m;\n"
-       "  always_comb begin\n"
-       "    aaaaa = b;\n"
-       "    c     = 1'b0;\n"
-       "    // ============\n"
-       "    dd     = eee;\n"
-       "    ffffff = g;\n"
-       "  end\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.alignment_group_boundary = AlignmentGroupBoundary::kSeparatorComments;
-  style.assignment_statement_alignment = AlignmentPolicy::kAlign;
-  style.module_net_variable_alignment = AlignmentPolicy::kAlign;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, AlignmentGroupBoundaryBlankLines) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// Blank line breaks alignment group
-       "module m;\n"
-       "assign foo  = 1'b1;\n"
-       "assign baar = 1'b0;\n"
-       "\n"
-       "assign baaaaz = 1'b1;\n"
-       "assign c      = 1'b0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign foo  = 1'b1;\n"
-       "  assign baar = 1'b0;\n"
-       "\n"
-       "  assign baaaaz = 1'b1;\n"
-       "  assign c      = 1'b0;\n"
-       "endmodule\n"},
-      {// No blank line: single alignment group
-       "module m;\n"
-       "assign foo  = 1'b1;\n"
-       "assign baar = 1'b0;\n"
-       "assign baaaaz = 1'b1;\n"
-       "assign c      = 1'b0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign foo    = 1'b1;\n"
-       "  assign baar   = 1'b0;\n"
-       "  assign baaaaz = 1'b1;\n"
-       "  assign c      = 1'b0;\n"
-       "endmodule\n"},
-      {// Single item before blank line (not enough for alignment)
-       "module m;\n"
-       "assign foo = 1'b1;\n"
-       "\n"
-       "assign baaaaz = 1'b1;\n"
-       "assign c      = 1'b0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign foo = 1'b1;\n"
-       "\n"
-       "  assign baaaaz = 1'b1;\n"
-       "  assign c      = 1'b0;\n"
-       "endmodule\n"},
-      {// Separator comment does NOT break (only blank lines)
-       "module m;\n"
-       "assign foo  = 1'b1;\n"
-       "assign baar = 1'b0;\n"
-       "// ============\n"
-       "assign baaaaz = 1'b1;\n"
-       "assign c      = 1'b0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign foo    = 1'b1;\n"
-       "  assign baar   = 1'b0;\n"
-       "  // ============\n"
-       "  assign baaaaz = 1'b1;\n"
-       "  assign c      = 1'b0;\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.alignment_group_boundary = AlignmentGroupBoundary::kBlankLines;
-  style.assignment_statement_alignment = AlignmentPolicy::kAlign;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest,
-     AlignmentGroupBoundaryBlankLinesAndSeparatorComments) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// Both blank line and separator break groups
-       "module m;\n"
-       "assign foo  = 1'b1;\n"
-       "assign baar = 1'b0;\n"
-       "\n"
-       "assign baaaaz = 1'b1;\n"
-       "assign c      = 1'b0;\n"
-       "// ============\n"
-       "assign dd  = 1'b1;\n"
-       "assign eee = 1'b0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign foo  = 1'b1;\n"
-       "  assign baar = 1'b0;\n"
-       "\n"
-       "  assign baaaaz = 1'b1;\n"
-       "  assign c      = 1'b0;\n"
-       "  // ============\n"
-       "  assign dd  = 1'b1;\n"
-       "  assign eee = 1'b0;\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.alignment_group_boundary =
-      AlignmentGroupBoundary::kBlankLinesAndSeparatorComments;
-  style.assignment_statement_alignment = AlignmentPolicy::kAlign;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Regression for https://github.com/chipsalliance/verible/issues/2547:
-// A localparam initialized to a sum of long macros must converge: infix `+`
-// stays with the following operand so re-format does not oscillate between
-// `+\n`MACRO` and `+ `MACRO`.
-TEST(FormatterEndToEndTest, LongMacroSumLocalparamConverges) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {"module m;\n"
-       "  localparam N =\n"
-       "      `MACRO_GEN3_SCRAMBLE_LFSR_REGOUT\n"
-       "      + `MACRO_GEN3_SCRAMBLE_REGIN\n"
-       "      + `MACRO_GEN3_SCRAMBLE_REGOUT\n"
-       "      ;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam N =\n"
-       "  `MACRO_GEN3_SCRAMBLE_LFSR_REGOUT\n"
-       "  + `MACRO_GEN3_SCRAMBLE_REGIN\n"
-       "  + `MACRO_GEN3_SCRAMBLE_REGOUT;\n"
-       "endmodule\n"},
-      // Already in pass-1 form must stay stable.
-      {"module m;\n"
-       "  localparam N =\n"
-       "  `MACRO_GEN3_SCRAMBLE_LFSR_REGOUT\n"
-       "  + `MACRO_GEN3_SCRAMBLE_REGIN\n"
-       "  + `MACRO_GEN3_SCRAMBLE_REGOUT;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam N =\n"
-       "  `MACRO_GEN3_SCRAMBLE_LFSR_REGOUT\n"
-       "  + `MACRO_GEN3_SCRAMBLE_REGIN\n"
-       "  + `MACRO_GEN3_SCRAMBLE_REGOUT;\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;  // default column_limit (100)
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Regression for https://github.com/chipsalliance/verible/issues/2544:
-// Wrapping a $bits(...)'(...) cast may leave `MACRO at EOL, reclassifying
-// MacroIdentifier as MacroIdItem. FormatEquivalent must accept that, and
-// formatting must still pass verification.
-TEST(FormatterEndToEndTest, MacroBeforeCloseParenFormatEquivalent) {
-  static constexpr std::string_view kInput =
-      "module m;\n"
-      "  assign result_value = $bits(result_value)'( "
-      "compare_bytes(input_data[DATA_WIDTH_INT-1:0], "
-      "input_datak[STROBE_WIDTH_INT-1:0], `TOKEN_BYTE) );\n"
-      "endmodule\n";
-  FormatStyle style;
-  std::ostringstream stream;
-  const auto status = FormatVerilog(kInput, "<filename>", style, stream);
-  EXPECT_OK(status) << status.message();
-  EXPECT_THAT(stream.str(), testing::HasSubstr("`TOKEN_BYTE"));
-}
-
-// Regression for https://github.com/chipsalliance/verible/issues/2542:
-// Continuation EOL comments after a wrapped assign must keep a stable column
-// across re-format (convergence).
-TEST(FormatterEndToEndTest, ContinuationCommentAfterWrappedAssignConverges) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// Comments originally column-aligned after a wrapped assign
-       "module m;\n"
-       "  assign status_ur = !(status_sc || status_ca ||\n"
-       "    status_crs);      // Completions with a Reserved Completion\n"
-       "                      // Status value are treated as UR\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign status_ur =\n"
-       "      !(status_sc || status_ca || status_crs);  // Completions with a "
-       "Reserved Completion\n"
-       "                                                // Status value are "
-       "treated as UR\n"
-       "endmodule\n"},
-      {// Previously mis-aligned continuation is not treated as a continuation
-       // (column delta > 1) and must still converge
-       "module m;\n"
-       "  assign status_ur = !(status_sc || status_ca ||\n"
-       "    status_crs);      // Completions with a Reserved Completion\n"
-       "                                                                       "
-       "// Status value are treated as UR\n"
-       "endmodule\n",
-       "module m;\n"
-       "  assign status_ur =\n"
-       "      !(status_sc || status_ca || status_crs);  // Completions with a "
-       "Reserved Completion\n"
-       "  // Status value are treated as UR\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;  // default column_limit (100)
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Regression for https://github.com/chipsalliance/verible/issues/2540:
-// Trailing EOL comment after `end` before `else if` must not change whether
-// the else-if assignment stays on one line across re-format (convergence).
-TEST(FormatterEndToEndTest, EndElseIfWithEOLCommentConverges) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// Comment on its own line between end and else if
-       "module m;\n"
-       "  always_comb begin\n"
-       "    case (state)\n"
-       "      STATE_A: begin\n"
-       "        if (cond_aaaa) next_state_value = STATE_B;\n"
-       "        else if (cond_bbbb) begin\n"
-       "          next_state_value = STATE_B;\n"
-       "        end\n"
-       "        // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n"
-       "        else if (cond_cccc) next_state_value = STATE_C;\n"
-       "      end\n"
-       "    endcase\n"
-       "  end\n"
-       "endmodule\n",
-       "module m;\n"
-       "  always_comb begin\n"
-       "    case (state)\n"
-       "      STATE_A: begin\n"
-       "        if (cond_aaaa) next_state_value = STATE_B;\n"
-       "        else if (cond_bbbb) begin\n"
-       "          next_state_value = STATE_B;\n"
-       "        end  // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n"
-       "        else if (cond_cccc) next_state_value = STATE_C;\n"
-       "      end\n"
-       "    endcase\n"
-       "  end\n"
-       "endmodule\n"},
-      {// Same construct with comment already on the end line
-       "module m;\n"
-       "  always_comb begin\n"
-       "    case (state)\n"
-       "      STATE_A: begin\n"
-       "        if (cond_aaaa) next_state_value = STATE_B;\n"
-       "        else if (cond_bbbb) begin\n"
-       "          next_state_value = STATE_B;\n"
-       "        end  // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n"
-       "        else if (cond_cccc) next_state_value = STATE_C;\n"
-       "      end\n"
-       "    endcase\n"
-       "  end\n"
-       "endmodule\n",
-       "module m;\n"
-       "  always_comb begin\n"
-       "    case (state)\n"
-       "      STATE_A: begin\n"
-       "        if (cond_aaaa) next_state_value = STATE_B;\n"
-       "        else if (cond_bbbb) begin\n"
-       "          next_state_value = STATE_B;\n"
-       "        end  // xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n"
-       "        else if (cond_cccc) next_state_value = STATE_C;\n"
-       "      end\n"
-       "    endcase\n"
-       "  end\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;  // default column_limit (100)
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Verify kAlign behavior for body-level param/localparam declarations
-// in module and package bodies.
-TEST(FormatterEndToEndTest, ParamDeclarationAlignmentBasics) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// localparam alignment in module body
-       "module m;\n"
-       "localparam foo = 4'b0000;\n"
-       "localparam barr = 4'b0010;\n"
-       "localparam baaaaz = 4'b0111;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo    = 4'b0000;\n"
-       "  localparam barr   = 4'b0010;\n"
-       "  localparam baaaaz = 4'b0111;\n"
-       "endmodule\n"},
-      {// localparam alignment in package body
-       "package p;\n"
-       "localparam foo = 4'b0000;\n"
-       "localparam barr = 4'b0010;\n"
-       "localparam baaaaz = 4'b0111;\n"
-       "endpackage\n",
-       "package p;\n"
-       "  localparam foo    = 4'b0000;\n"
-       "  localparam barr   = 4'b0010;\n"
-       "  localparam baaaaz = 4'b0111;\n"
-       "endpackage\n"},
-      {// parameter alignment in module body
-       "module m;\n"
-       "parameter int foo = 1;\n"
-       "parameter int barr = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter int foo  = 1;\n"
-       "  parameter int barr = 2;\n"
-       "endmodule\n"},
-      {// parameter alignment in package body
-       "package p;\n"
-       "parameter int foo = 1;\n"
-       "parameter int barrrr = 2;\n"
-       "endpackage\n",
-       "package p;\n"
-       "  parameter int foo    = 1;\n"
-       "  parameter int barrrr = 2;\n"
-       "endpackage\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Verify kFlushLeft behavior: body-level param/localparam declarations
-// are not aligned.
-TEST(FormatterEndToEndTest, ParamDeclarationAlignmentFlushLeft) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// module body: parameters are not aligned
-       "module m;\n"
-       "localparam foo = 4'b0000;\n"
-       "localparam barr = 4'b0010;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo = 4'b0000;\n"
-       "  localparam barr = 4'b0010;\n"
-       "endmodule\n"},
-      {// package context: flush-left
-       "package p;\n"
-       "localparam foo = 4'b0000;\n"
-       "localparam barr = 4'b0010;\n"
-       "endpackage\n",
-       "package p;\n"
-       "  localparam foo = 4'b0000;\n"
-       "  localparam barr = 4'b0010;\n"
-       "endpackage\n"},
-      {// generate context: flush-left
-       "module m;\n"
-       "generate\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "endgenerate\n"
-       "endmodule\n",
-       "module m;\n"
-       "  generate\n"
-       "    localparam foo = 1;\n"
-       "    localparam barr = 2;\n"
-       "  endgenerate\n"
-       "endmodule\n"},
-      {// parameter in module body: flush-left
-       "module m;\n"
-       "parameter int W = 8;\n"
-       "parameter int HHHH = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter int W = 8;\n"
-       "  parameter int HHHH = 2;\n"
-       "endmodule\n"},
-      {// mixed parameter and localparam: flush-left, no alignment
-       "module m;\n"
-       "parameter int W = 8;\n"
-       "localparam L = 4;\n"
-       "parameter int H = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter int W = 8;\n"
-       "  localparam L = 4;\n"
-       "  parameter int H = 2;\n"
-       "endmodule\n"},
-      {// interface context: flush-left
-       "interface my_if;\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "endinterface\n",
-       "interface my_if;\n"
-       "  localparam foo = 1;\n"
-       "  localparam barr = 2;\n"
-       "endinterface\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kFlushLeft;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Verify kPreserve behavior: body-level param/localparam declarations
-// maintain their existing spacing.
-TEST(FormatterEndToEndTest, ParamDeclarationAlignmentPreserve) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// module body: existing spacing is kept
-       "module m;\n"
-       "localparam foo = 4'b0000;\n"
-       "localparam barr  = 4'b0010;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo = 4'b0000;\n"
-       "  localparam barr  = 4'b0010;\n"
-       "endmodule\n"},
-      {// package: existing flush-left spacing preserved
-       "package p;\n"
-       "localparam foo = 4'b0000;\n"
-       "localparam barr = 4'b0010;\n"
-       "endpackage\n",
-       "package p;\n"
-       "  localparam foo = 4'b0000;\n"
-       "  localparam barr = 4'b0010;\n"
-       "endpackage\n"},
-      {// generate: existing aligned spacing preserved
-       "module m;\n"
-       "generate\n"
-       "localparam foo  = 1;\n"
-       "localparam barr = 2;\n"
-       "endgenerate\n"
-       "endmodule\n",
-       "module m;\n"
-       "  generate\n"
-       "    localparam foo  = 1;\n"
-       "    localparam barr = 2;\n"
-       "  endgenerate\n"
-       "endmodule\n"},
-      {// parameter flush-left preserved
-       "module m;\n"
-       "parameter int W = 8;\n"
-       "parameter int HHHH = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter int W = 8;\n"
-       "  parameter int HHHH = 2;\n"
-       "endmodule\n"},
-      {// parameter pre-aligned preserved
-       "module m;\n"
-       "parameter int W    = 8;\n"
-       "parameter int HHHH = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter int W    = 8;\n"
-       "  parameter int HHHH = 2;\n"
-       "endmodule\n"},
-      {// interface pre-aligned preserved
-       "interface my_if;\n"
-       "localparam foo  = 1;\n"
-       "localparam barr = 2;\n"
-       "endinterface\n",
-       "interface my_if;\n"
-       "  localparam foo  = 1;\n"
-       "  localparam barr = 2;\n"
-       "endinterface\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kPreserve;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Verify kAlign behavior for param/localparam declarations across
-// interface, generate, and module body contexts, including mixed
-// param/localparam and packed dimension alignment.
-TEST(FormatterEndToEndTest, ParamDeclarationAlignmentContexts) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// interface body localparam alignment
-       "interface my_if;\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "endinterface\n",
-       "interface my_if;\n"
-       "  localparam foo  = 1;\n"
-       "  localparam barr = 2;\n"
-       "endinterface\n"},
-      {// interface body parameter alignment
-       "interface my_if;\n"
-       "parameter int X = 1;\n"
-       "parameter int Y_LONG = 2;\n"
-       "endinterface\n",
-       "interface my_if;\n"
-       "  parameter int X      = 1;\n"
-       "  parameter int Y_LONG = 2;\n"
-       "endinterface\n"},
-      {// generate block localparam alignment
-       "module m;\n"
-       "generate\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "endgenerate\n"
-       "endmodule\n",
-       "module m;\n"
-       "  generate\n"
-       "    localparam foo  = 1;\n"
-       "    localparam barr = 2;\n"
-       "  endgenerate\n"
-       "endmodule\n"},
-      {// generate block parameter alignment
-       "module m;\n"
-       "generate\n"
-       "parameter int A = 1;\n"
-       "parameter int BB = 2;\n"
-       "endgenerate\n"
-       "endmodule\n",
-       "module m;\n"
-       "  generate\n"
-       "    parameter int A  = 1;\n"
-       "    parameter int BB = 2;\n"
-       "  endgenerate\n"
-       "endmodule\n"},
-      {// mixed param and net declarations form separate alignment groups
-       "module m;\n"
-       "localparam X = 1;\n"
-       "localparam YYY = 2;\n"
-       "logic clk;\n"
-       "logic rst_n;\n"
-       "localparam ZZ = 3;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam X   = 1;\n"
-       "  localparam YYY = 2;\n"
-       "  logic clk;\n"
-       "  logic rst_n;\n"
-       "  localparam ZZ = 3;\n"
-       "endmodule\n"},
-      {// mixed parameter and localparam in same block
-       "module m;\n"
-       "parameter int W = 8;\n"
-       "localparam L = 4;\n"
-       "parameter int H = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter  int W = 8;\n"
-       "  localparam     L = 4;\n"
-       "  parameter  int H = 2;\n"
-       "endmodule\n"},
-      {// packed dimensions are aligned
-       "module m;\n"
-       "parameter bit [7:0] X = 0;\n"
-       "parameter bit [31:0] YYYY = 1;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter bit [ 7:0] X    = 0;\n"
-       "  parameter bit [31:0] YYYY = 1;\n"
-       "endmodule\n"},
-      {// multi-identifier comma-separated params are not split (no-crash)
-       "module m;\n"
-       "parameter int a=1, b=2, ccc=3;\n"
-       "localparam d=4, e=5;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter  int a = 1, b = 2, ccc = 3;\n"
-       "  localparam     d = 4, e = 5;\n"
-       "endmodule\n"},
-      {// parameter type declarations do not crash
-       "module m;\n"
-       "parameter type T = int;\n"
-       "parameter type TT_LONG = bit;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter type T = int;\n"
-       "  parameter type TT_LONG = bit;\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Verify kInferUserIntent behavior: body-level param/localparam
-// declarations infer alignment intent from existing spacing.
-TEST(FormatterEndToEndTest, ParamDeclarationAlignmentInferUserIntent) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// flush-left localparams with small spacing diff: infer aligns
-       "module m;\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo  = 1;\n"
-       "  localparam barr = 2;\n"
-       "endmodule\n"},
-      {// pre-aligned localparams: infer preserves alignment
-       "module m;\n"
-       "localparam foo    = 1;\n"
-       "localparam barr   = 2;\n"
-       "localparam baaaaz = 3;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo    = 1;\n"
-       "  localparam barr   = 2;\n"
-       "  localparam baaaaz = 3;\n"
-       "endmodule\n"},
-      {// flush-left params in package with small spacing diff: infer aligns
-       "package p;\n"
-       "localparam X = 1;\n"
-       "localparam YY = 2;\n"
-       "endpackage\n",
-       "package p;\n"
-       "  localparam X  = 1;\n"
-       "  localparam YY = 2;\n"
-       "endpackage\n"},
-      {// mixed param/localparam flush-left: infer keeps flush-left
-       "module m;\n"
-       "parameter int W = 8;\n"
-       "localparam L = 4;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter int W = 8;\n"
-       "  localparam L = 4;\n"
-       "endmodule\n"},
-      {// interface flush-left with small diff: infer aligns
-       "interface my_if;\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "endinterface\n",
-       "interface my_if;\n"
-       "  localparam foo  = 1;\n"
-       "  localparam barr = 2;\n"
-       "endinterface\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kInferUserIntent;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Verify boundary behavior for param declarations with
-// kBlankLinesAndSeparatorComments: both blank lines and separator comments
-// break alignment groups.
-TEST(FormatterEndToEndTest, ParamDeclarationAlignmentBoundary) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// separator comment breaks param alignment group
-       "module m;\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "// ============\n"
-       "localparam baaaaz = 1;\n"
-       "localparam c = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo  = 1;\n"
-       "  localparam barr = 2;\n"
-       "  // ============\n"
-       "  localparam baaaaz = 1;\n"
-       "  localparam c      = 2;\n"
-       "endmodule\n"},
-      {// blank line breaks param alignment group
-       "module m;\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "\n"
-       "localparam baaaaz = 1;\n"
-       "localparam c = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo  = 1;\n"
-       "  localparam barr = 2;\n"
-       "\n"
-       "  localparam baaaaz = 1;\n"
-       "  localparam c      = 2;\n"
-       "endmodule\n"},
-      {// no separator: single alignment group (all aligned together)
-       "module m;\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "localparam baaaaz = 1;\n"
-       "localparam c = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo    = 1;\n"
-       "  localparam barr   = 2;\n"
-       "  localparam baaaaz = 1;\n"
-       "  localparam c      = 2;\n"
-       "endmodule\n"},
-      {// regular comment does NOT break alignment group
-       "module m;\n"
-       "localparam foo = 1;\n"
-       "// regular comment\n"
-       "localparam barr = 2;\n"
-       "localparam baaaaz = 1;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo    = 1;\n"
-       "  // regular comment\n"
-       "  localparam barr   = 2;\n"
-       "  localparam baaaaz = 1;\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
-  style.alignment_group_boundary =
-      AlignmentGroupBoundary::kBlankLinesAndSeparatorComments;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Verify edge cases: unpacked dimensions, signed/unsigned, implicit types,
-// complex types, single declarations, deeply nested generate blocks.
-TEST(FormatterEndToEndTest, ParamDeclarationAlignmentEdgeCases) {
-  // Use column_limit = 80 to avoid unintended line wrapping inside
-  // deeply nested generate blocks (generate-if, generate-for), which
-  // would interfere with verifying alignment behavior.
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// unpacked dimension alignment
-       "module m;\n"
-       "parameter bit X [7:0] = 0;\n"
-       "parameter bit YYYY [15:0] = 1;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter bit X   [ 7:0] = 0;\n"
-       "  parameter bit YYYY[15:0] = 1;\n"
-       "endmodule\n"},
-      {// param declarations with only type and default value (no idim)
-       "module m;\n"
-       "parameter int X = 0;\n"
-       "parameter int YYYY = 0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter int X    = 0;\n"
-       "  parameter int YYYY = 0;\n"
-       "endmodule\n"},
-      {// signed modifier with packed dimensions
-       "module m;\n"
-       "parameter bit signed [7:0] X = 0;\n"
-       "parameter bit signed [31:0] YYYY = 1;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter bit signed [ 7:0] X    = 0;\n"
-       "  parameter bit signed [31:0] YYYY = 1;\n"
-       "endmodule\n"},
-      {// param with complex type (struct/typedef) — does not crash
-       "module m;\n"
-       "parameter foo_t X = foo_t'(0);\n"
-       "parameter foo_t Y_LONG = foo_t'(0);\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter foo_t X      = foo_t'(0);\n"
-       "  parameter foo_t Y_LONG = foo_t'(0);\n"
-       "endmodule\n"},
-      {// single param declaration (not enough for alignment group)
-       "module m;\n"
-       "localparam X = 1;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam X = 1;\n"
-       "endmodule\n"},
-      {// params inside generate-if block
-       "module m;\n"
-       "generate\n"
-       "if (1) begin : blk\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "end\n"
-       "endgenerate\n"
-       "endmodule\n",
-       "module m;\n"
-       "  generate\n"
-       "    if (1) begin : blk\n"
-       "      localparam foo  = 1;\n"
-       "      localparam barr = 2;\n"
-       "    end\n"
-       "  endgenerate\n"
-       "endmodule\n"},
-      {// unsigned keyword with packed dimensions (complement to signed)
-       "module m;\n"
-       "parameter bit unsigned [7:0] X = 0;\n"
-       "parameter bit unsigned [31:0] YYYY = 1;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter bit unsigned [ 7:0] X    = 0;\n"
-       "  parameter bit unsigned [31:0] YYYY = 1;\n"
-       "endmodule\n"},
-      {// parameter with implicit type (no explicit type keyword)
-       "module m;\n"
-       "parameter X = 32;\n"
-       "parameter Y_LONG = 64;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter X      = 32;\n"
-       "  parameter Y_LONG = 64;\n"
-       "endmodule\n"},
-      {// params inside generate-for block
-       "module m;\n"
-       "generate\n"
-       "for (i = 0; i < 2; i++) begin : blk\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "end\n"
-       "endgenerate\n"
-       "endmodule\n",
-       "module m;\n"
-       "  generate\n"
-       "    for (i = 0; i < 2; i++) begin : blk\n"
-       "      localparam foo  = 1;\n"
-       "      localparam barr = 2;\n"
-       "    end\n"
-       "  endgenerate\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 80;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Verify parameter declarations inside generate-case blocks are aligned.
-TEST(FormatterEndToEndTest, ParamDeclarationAlignmentGenerateCase) {
-  // Params inside generate-case need wider column limit to avoid wrapping the
-  // case label / begin block line.
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// params inside generate-case block
-       "module m #(P = 0);\n"
-       "generate\n"
-       "case (P)\n"
-       "0: begin : blk\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "end\n"
-       "endcase\n"
-       "endgenerate\n"
-       "endmodule\n",
-       "module m #(\n"
-       "    P = 0\n"
-       ");\n"
-       "  generate\n"
-       "    case (P)\n"
-       "      0: begin : blk\n"
-       "        localparam foo  = 1;\n"
-       "        localparam barr = 2;\n"
-       "      end\n"
-       "    endcase\n"
-       "  endgenerate\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 80;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, FormalAndBodyParamAlignmentIndependence) {
-  // Verify that --formal_parameters_alignment and
-  // --parameter_declaration_alignment act independently: setting formal params
-  // to kFlushLeft should not affect body-level param alignment, and vice versa.
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// formal flush-left + body align: only body params align
-       "module m #(\n"
-       "int W = 2,\n"
-       "int LLLL = 4\n"
-       ");\n"
-       "localparam foo = 0;\n"
-       "localparam barrrr = 0;\n"
-       "endmodule\n",
-       "module m #(\n"
-       "    int W = 2,\n"
-       "    int LLLL = 4\n"
-       ");\n"
-       "  localparam foo    = 0;\n"
-       "  localparam barrrr = 0;\n"
-       "endmodule\n"},
-      {// formal align + body flush-left: only formal params align
-       "module m #(\n"
-       "int W = 2,\n"
-       "int LLLL = 4\n"
-       ");\n"
-       "localparam foo = 0;\n"
-       "localparam barrrr = 0;\n"
-       "endmodule\n",
-       "module m #(\n"
-       "    int W    = 2,\n"
-       "    int LLLL = 4\n"
-       ");\n"
-       "  localparam foo = 0;\n"
-       "  localparam barrrr = 0;\n"
-       "endmodule\n"},
-      {// both flush-left: no alignment anywhere
-       "module m #(\n"
-       "int W = 2,\n"
-       "int LLLL = 4\n"
-       ");\n"
-       "localparam foo = 0;\n"
-       "localparam barrrr = 0;\n"
-       "endmodule\n",
-       "module m #(\n"
-       "    int W = 2,\n"
-       "    int LLLL = 4\n"
-       ");\n"
-       "  localparam foo = 0;\n"
-       "  localparam barrrr = 0;\n"
-       "endmodule\n"},
-      {// both align: both formal and body params aligned
-       "module m #(\n"
-       "int W = 2,\n"
-       "int LLLL = 4\n"
-       ");\n"
-       "localparam foo = 0;\n"
-       "localparam barrrr = 0;\n"
-       "endmodule\n",
-       "module m #(\n"
-       "    int W    = 2,\n"
-       "    int LLLL = 4\n"
-       ");\n"
-       "  localparam foo    = 0;\n"
-       "  localparam barrrr = 0;\n"
-       "endmodule\n"},
-  };
-  // First case: formal kFlushLeft, body kAlign
-  {
-    FormatStyle style;
-    style.column_limit = 40;
-    style.indentation_spaces = 2;
-    style.wrap_spaces = 4;
-    style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
-    style.formal_parameters_alignment = AlignmentPolicy::kFlushLeft;
-    const auto &tc = kTestCases[0];
-    VLOG(1) << "code-to-format:\n" << tc.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
-  }
-  // Second case: formal kAlign, body kFlushLeft
-  {
-    FormatStyle style;
-    style.column_limit = 40;
-    style.indentation_spaces = 2;
-    style.wrap_spaces = 4;
-    style.parameter_declaration_alignment = AlignmentPolicy::kFlushLeft;
-    style.formal_parameters_alignment = AlignmentPolicy::kAlign;
-    const auto &tc = kTestCases[1];
-    VLOG(1) << "code-to-format:\n" << tc.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
-  }
-  // Third case: both kFlushLeft
-  {
-    FormatStyle style;
-    style.column_limit = 40;
-    style.indentation_spaces = 2;
-    style.wrap_spaces = 4;
-    style.parameter_declaration_alignment = AlignmentPolicy::kFlushLeft;
-    style.formal_parameters_alignment = AlignmentPolicy::kFlushLeft;
-    const auto &tc = kTestCases[2];
-    VLOG(1) << "code-to-format:\n" << tc.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
-  }
-  // Fourth case: both kAlign
-  {
-    FormatStyle style;
-    style.column_limit = 40;
-    style.indentation_spaces = 2;
-    style.wrap_spaces = 4;
-    style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
-    style.formal_parameters_alignment = AlignmentPolicy::kAlign;
-    const auto &tc = kTestCases[3];
-    VLOG(1) << "code-to-format:\n" << tc.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, ClassBodyParamNotAffected) {
-  // Verify that class body parameter/localparam declarations are NOT affected
-  // by --parameter_declaration_alignment, which targets only module/generate/
-  // package/interface body-level params.
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// class body params are not affected
-       "class c;\n"
-       "parameter int X = 1;\n"
-       "parameter int YYYY = 2;\n"
-       "localparam foo = 3;\n"
-       "localparam barrrr = 4;\n"
-       "endclass\n",
-       "class c;\n"
-       "  parameter int X = 1;\n"
-       "  parameter int YYYY = 2;\n"
-       "  localparam foo = 3;\n"
-       "  localparam barrrr = 4;\n"
-       "endclass\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, PackageBodyVariableAlignment) {
-  // Verify that moving kPackageItemList to kTabularAlignment in tree-unwrapper
-  // enables net/variable declaration alignment in package bodies via
-  // module_net_variable_alignment.
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// net/variable declaration alignment in package body
-       "package p;\n"
-       "logic [7:0] a;\n"
-       "logic [31:0] bb;\n"
-       "endpackage\n",
-       "package p;\n"
-       "  logic [ 7:0] a;\n"
-       "  logic [31:0] bb;\n"
-       "endpackage\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.module_net_variable_alignment = AlignmentPolicy::kAlign;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-TEST(FormatterEndToEndTest, ParamDeclarationAlignmentApplyToAll) {
-  // Verify that ApplyToAllAlignmentPolicies affects
-  // parameter_declaration_alignment for all four alignment policies.
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// kAlign aligns identifiers and = signs across declarations
-       "module m;\n"
-       "localparam foo = 1;\n"
-       "localparam barrrr = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo    = 1;\n"
-       "  localparam barrrr = 2;\n"
-       "endmodule\n"},
-      {// kFlushLeft: declarations remain flush-left
-       "module m;\n"
-       "localparam foo = 1;\n"
-       "localparam barrrr = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo = 1;\n"
-       "  localparam barrrr = 2;\n"
-       "endmodule\n"},
-      {// kPreserve: existing spacing is kept
-       "module m;\n"
-       "localparam foo = 1;\n"
-       "localparam barrrr  = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo = 1;\n"
-       "  localparam barrrr  = 2;\n"
-       "endmodule\n"},
-      {// kInferUserIntent: large identifier width difference (3 cols)
-       // suggests flush-left intent, no alignment.
-       "module m;\n"
-       "localparam foo = 1;\n"
-       "localparam barrrr = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo = 1;\n"
-       "  localparam barrrr = 2;\n"
-       "endmodule\n"},
-  };
-  // kAlign
-  {
-    FormatStyle style;
-    style.column_limit = 40;
-    style.indentation_spaces = 2;
-    style.wrap_spaces = 4;
-    style.ApplyToAllAlignmentPolicies(AlignmentPolicy::kAlign);
-    const auto &tc = kTestCases[0];
-    std::ostringstream stream;
-    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
-  }
-  // kFlushLeft
-  {
-    FormatStyle style;
-    style.column_limit = 40;
-    style.indentation_spaces = 2;
-    style.wrap_spaces = 4;
-    style.ApplyToAllAlignmentPolicies(AlignmentPolicy::kFlushLeft);
-    const auto &tc = kTestCases[1];
-    std::ostringstream stream;
-    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
-  }
-  // kPreserve
-  {
-    FormatStyle style;
-    style.column_limit = 40;
-    style.indentation_spaces = 2;
-    style.wrap_spaces = 4;
-    style.ApplyToAllAlignmentPolicies(AlignmentPolicy::kPreserve);
-    const auto &tc = kTestCases[2];
-    std::ostringstream stream;
-    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
-  }
-  // kInferUserIntent
-  {
-    FormatStyle style;
-    style.column_limit = 40;
-    style.indentation_spaces = 2;
-    style.wrap_spaces = 4;
-    style.ApplyToAllAlignmentPolicies(AlignmentPolicy::kInferUserIntent);
-    const auto &tc = kTestCases[3];
-    std::ostringstream stream;
-    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
-  }
-}
-
-// Verify that alignment_group_boundary=kBlankLines treats only blank lines
-// (not separator comments) as boundary breaks for param declarations.
-TEST(FormatterEndToEndTest, ParamDeclarationAlignmentBoundaryBlankLines) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// Only blank line breaks group; separator comment does not
-       "module m;\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "\n"
-       "localparam baaaaz = 1;\n"
-       "localparam c = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo  = 1;\n"
-       "  localparam barr = 2;\n"
-       "\n"
-       "  localparam baaaaz = 1;\n"
-       "  localparam c      = 2;\n"
-       "endmodule\n"},
-      {// Separator comment does NOT break group with kBlankLines
-       "module m;\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "// ============\n"
-       "localparam baaaaz = 1;\n"
-       "localparam c = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo    = 1;\n"
-       "  localparam barr   = 2;\n"
-       "  // ============\n"
-       "  localparam baaaaz = 1;\n"
-       "  localparam c      = 2;\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
-  style.alignment_group_boundary = AlignmentGroupBoundary::kBlankLines;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Verify that alignment_group_boundary=kNone keeps all param declarations
-// in a single alignment group regardless of blank lines or comments.
-TEST(FormatterEndToEndTest, ParamDeclarationAlignmentBoundaryNone) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// Blank line does NOT break group with kNone
-       "module m;\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "\n"
-       "localparam baaaaz = 1;\n"
-       "localparam c = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo    = 1;\n"
-       "  localparam barr   = 2;\n"
-       "\n"
-       "  localparam baaaaz = 1;\n"
-       "  localparam c      = 2;\n"
-       "endmodule\n"},
-      {// Separator comment does NOT break group with kNone
-       "module m;\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "// ============\n"
-       "localparam baaaaz = 1;\n"
-       "localparam c = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo    = 1;\n"
-       "  localparam barr   = 2;\n"
-       "  // ============\n"
-       "  localparam baaaaz = 1;\n"
-       "  localparam c      = 2;\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
-  style.alignment_group_boundary = AlignmentGroupBoundary::kNone;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Verify that alignment_group_boundary=kSeparatorComments treats only
-// separator comments (not blank lines) as boundary breaks for param
-// declarations.
-TEST(FormatterEndToEndTest,
-     ParamDeclarationAlignmentBoundarySeparatorComments) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// Separator comment breaks alignment group
-       "module m;\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "// ============\n"
-       "localparam baaaaz = 1;\n"
-       "localparam c = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo  = 1;\n"
-       "  localparam barr = 2;\n"
-       "  // ============\n"
-       "  localparam baaaaz = 1;\n"
-       "  localparam c      = 2;\n"
-       "endmodule\n"},
-      {// Blank line does NOT break group with kSeparatorComments
-       "module m;\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "\n"
-       "localparam baaaaz = 1;\n"
-       "localparam c = 2;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  localparam foo    = 1;\n"
-       "  localparam barr   = 2;\n"
-       "\n"
-       "  localparam baaaaz = 1;\n"
-       "  localparam c      = 2;\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
-  style.alignment_group_boundary = AlignmentGroupBoundary::kSeparatorComments;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Verify that class body parameter/localparam declarations are NOT affected
-// by --parameter_declaration_alignment for the kFlushLeft, kPreserve,
-// and kInferUserIntent policies (kAlign is covered in
-// ClassBodyParamNotAffected).
-TEST(FormatterEndToEndTest, ClassBodyParamNotAffectedOtherPolicies) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// kFlushLeft: class body params remain flush-left
-       "class c;\n"
-       "parameter int X = 1;\n"
-       "parameter int YYYY = 2;\n"
-       "localparam foo = 3;\n"
-       "localparam barrrr = 4;\n"
-       "endclass\n",
-       "class c;\n"
-       "  parameter int X = 1;\n"
-       "  parameter int YYYY = 2;\n"
-       "  localparam foo = 3;\n"
-       "  localparam barrrr = 4;\n"
-       "endclass\n"},
-      {// kPreserve: parameter_declaration_alignment does not apply to class
-       // bodies; whitespace is normalized by default formatting.
-       "class c;\n"
-       "parameter int X     = 1;\n"
-       "parameter int YYYY  = 2;\n"
-       "endclass\n",
-       "class c;\n"
-       "  parameter int X = 1;\n"
-       "  parameter int YYYY = 2;\n"
-       "endclass\n"},
-      {// kInferUserIntent: class body params infer flush-left
-       "class c;\n"
-       "parameter int X = 1;\n"
-       "parameter int YYYY = 2;\n"
-       "endclass\n",
-       "class c;\n"
-       "  parameter int X = 1;\n"
-       "  parameter int YYYY = 2;\n"
-       "endclass\n"},
-  };
-  // kFlushLeft
-  {
-    FormatStyle style;
-    style.column_limit = 40;
-    style.indentation_spaces = 2;
-    style.wrap_spaces = 4;
-    style.parameter_declaration_alignment = AlignmentPolicy::kFlushLeft;
-    const auto &tc = kTestCases[0];
-    std::ostringstream stream;
-    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
-  }
-  // kPreserve
-  {
-    FormatStyle style;
-    style.column_limit = 40;
-    style.indentation_spaces = 2;
-    style.wrap_spaces = 4;
-    style.parameter_declaration_alignment = AlignmentPolicy::kPreserve;
-    const auto &tc = kTestCases[1];
-    std::ostringstream stream;
-    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
-  }
-  // kInferUserIntent
-  {
-    FormatStyle style;
-    style.column_limit = 40;
-    style.indentation_spaces = 2;
-    style.wrap_spaces = 4;
-    style.parameter_declaration_alignment = AlignmentPolicy::kInferUserIntent;
-    const auto &tc = kTestCases[2];
-    std::ostringstream stream;
-    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
-  }
-}
-
-// Verify formal_parameters_alignment and parameter_declaration_alignment
-// independence for kPreserve and kInferUserIntent combinations.
-TEST(FormatterEndToEndTest,
-     FormalAndBodyParamAlignmentIndependenceOtherPolicies) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// formal kPreserve + body kAlign: only body params aligned
-       "module m #(\n"
-       "int W = 2,\n"
-       "int LLLL = 4\n"
-       ");\n"
-       "localparam foo = 0;\n"
-       "localparam barrrr = 0;\n"
-       "endmodule\n",
-       "module m #(\n"
-       "    int W = 2,\n"
-       "    int LLLL = 4\n"
-       ");\n"
-       "  localparam foo    = 0;\n"
-       "  localparam barrrr = 0;\n"
-       "endmodule\n"},
-      {// formal kAlign + body kPreserve: only formal params aligned
-       "module m #(\n"
-       "int W = 2,\n"
-       "int LLLL = 4\n"
-       ");\n"
-       "localparam foo   = 0;\n"
-       "localparam barrrr = 0;\n"
-       "endmodule\n",
-       "module m #(\n"
-       "    int W    = 2,\n"
-       "    int LLLL = 4\n"
-       ");\n"
-       "  localparam foo   = 0;\n"
-       "  localparam barrrr = 0;\n"
-       "endmodule\n"},
-      {// formal kInferUserIntent + body kAlign: only body params aligned
-       "module m #(\n"
-       "int W = 2,\n"
-       "int LLLL = 4\n"
-       ");\n"
-       "localparam foo = 0;\n"
-       "localparam barrrr = 0;\n"
-       "endmodule\n",
-       "module m #(\n"
-       "    int W = 2,\n"
-       "    int LLLL = 4\n"
-       ");\n"
-       "  localparam foo    = 0;\n"
-       "  localparam barrrr = 0;\n"
-       "endmodule\n"},
-  };
-  // formal kPreserve + body kAlign
-  {
-    FormatStyle style;
-    style.column_limit = 40;
-    style.indentation_spaces = 2;
-    style.wrap_spaces = 4;
-    style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
-    style.formal_parameters_alignment = AlignmentPolicy::kPreserve;
-    const auto &tc = kTestCases[0];
-    std::ostringstream stream;
-    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
-  }
-  // formal kAlign + body kPreserve
-  {
-    FormatStyle style;
-    style.column_limit = 40;
-    style.indentation_spaces = 2;
-    style.wrap_spaces = 4;
-    style.parameter_declaration_alignment = AlignmentPolicy::kPreserve;
-    style.formal_parameters_alignment = AlignmentPolicy::kAlign;
-    const auto &tc = kTestCases[1];
-    std::ostringstream stream;
-    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
-  }
-  // formal kInferUserIntent + body kAlign
-  {
-    FormatStyle style;
-    style.column_limit = 40;
-    style.indentation_spaces = 2;
-    style.wrap_spaces = 4;
-    style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
-    style.formal_parameters_alignment = AlignmentPolicy::kInferUserIntent;
-    const auto &tc = kTestCases[2];
-    std::ostringstream stream;
-    const auto status = FormatVerilog(tc.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), tc.expected) << "code:\n" << tc.input;
-  }
-}
-
-// Verify parameter declarations with string, real, and function-call default
-// value types to exercise the ColumnSchemaScanner on non-standard type tokens.
-TEST(FormatterEndToEndTest, ParamDeclarationAlignmentTypeVariants) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// parameter real type
-       "module m;\n"
-       "parameter real X = 1.0;\n"
-       "parameter real Y_LONG = 2.0;\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter real X      = 1.0;\n"
-       "  parameter real Y_LONG = 2.0;\n"
-       "endmodule\n"},
-      {// parameter string type
-       "module m;\n"
-       "parameter string s = \"hello\";\n"
-       "parameter string long_s = \"world\";\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter string s      = \"hello\";\n"
-       "  parameter string long_s = \"world\";\n"
-       "endmodule\n"},
-      {// parameter with function call in default value
-       "module m;\n"
-       "parameter int W = func(1, 2);\n"
-       "parameter int H_LONG = other(3);\n"
-       "endmodule\n",
-       "module m;\n"
-       "  parameter int W      = func(1, 2);\n"
-       "  parameter int H_LONG = other(3);\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Verify parameter_declaration_alignment kInferUserIntent in package bodies.
-TEST(FormatterEndToEndTest, ParamDeclarationAlignmentPackageInfer) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// flush-left params with small diff: infer aligns
-       "package p;\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "endpackage\n",
-       "package p;\n"
-       "  localparam foo  = 1;\n"
-       "  localparam barr = 2;\n"
-       "endpackage\n"},
-      {// pre-aligned params: infer preserves
-       "package p;\n"
-       "localparam foo    = 1;\n"
-       "localparam barr   = 2;\n"
-       "localparam baaaaz = 3;\n"
-       "endpackage\n",
-       "package p;\n"
-       "  localparam foo    = 1;\n"
-       "  localparam barr   = 2;\n"
-       "  localparam baaaaz = 3;\n"
-       "endpackage\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kInferUserIntent;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Verify parameter_declaration_alignment boundary behavior in package bodies.
-TEST(FormatterEndToEndTest, ParamDeclarationAlignmentPackageBoundary) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// blank line breaks alignment group in package
-       "package p;\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "\n"
-       "localparam baaaaz = 1;\n"
-       "localparam c = 2;\n"
-       "endpackage\n",
-       "package p;\n"
-       "  localparam foo  = 1;\n"
-       "  localparam barr = 2;\n"
-       "\n"
-       "  localparam baaaaz = 1;\n"
-       "  localparam c      = 2;\n"
-       "endpackage\n"},
-      {// separator comment breaks alignment group in package
-       "package p;\n"
-       "localparam foo = 1;\n"
-       "localparam barr = 2;\n"
-       "// ============\n"
-       "localparam baaaaz = 1;\n"
-       "localparam c = 2;\n"
-       "endpackage\n",
-       "package p;\n"
-       "  localparam foo  = 1;\n"
-       "  localparam barr = 2;\n"
-       "  // ============\n"
-       "  localparam baaaaz = 1;\n"
-       "  localparam c      = 2;\n"
-       "endpackage\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
-  style.alignment_group_boundary =
-      AlignmentGroupBoundary::kBlankLinesAndSeparatorComments;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Verify the most common default scenario: both formal_parameters_alignment
-// and parameter_declaration_alignment set to kInferUserIntent.
-TEST(FormatterEndToEndTest, BothParamAlignmentsInferUserIntent) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// both flush-left with small diff: infer aligns both formal and body
-       "module m #(\n"
-       "int W = 2,\n"
-       "int LL = 4\n"
-       ");\n"
-       "localparam foo = 0;\n"
-       "localparam barr = 0;\n"
-       "endmodule\n",
-       "module m #(\n"
-       "    int W  = 2,\n"
-       "    int LL = 4\n"
-       ");\n"
-       "  localparam foo  = 0;\n"
-       "  localparam barr = 0;\n"
-       "endmodule\n"},
-      {// both infer: pre-aligned formal, pre-aligned body preserved
-       "module m #(\n"
-       "int W    = 2,\n"
-       "int LLLL = 4\n"
-       ");\n"
-       "localparam foo    = 0;\n"
-       "localparam barrrr = 0;\n"
-       "endmodule\n",
-       "module m #(\n"
-       "    int W    = 2,\n"
-       "    int LLLL = 4\n"
-       ");\n"
-       "  localparam foo    = 0;\n"
-       "  localparam barrrr = 0;\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kInferUserIntent;
-  style.formal_parameters_alignment = AlignmentPolicy::kInferUserIntent;
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
-}
-
-// Verify that a large multi-line comment block between parameter
-// declarations does not crash the formatter.  The tree-unwrapper may
-// produce a partition structure where the comment tokens are absorbed
-// into the following parameter partition, which the alignment code
-// must handle gracefully by skipping alignment for that row.
-TEST(FormatterEndToEndTest, ParamDeclarationAlignmentCommentBlockNoCrash) {
-  // These inputs contain large multi-line comment blocks between
-  // parameter/localparam declarations.  The formatter must not crash
-  // (SIGABRT).  Output correctness is secondary; the formatter may
-  // fall back to preserving the original input when the partition
-  // structure prevents safe alignment.
-  const char *kInputs[] = {
-      "module m;\n"
-      "parameter int W = 8;\n"
-      "// Multi-line comment block\n"
-      "// that spans across\n"
-      "//\n"
-      "// several lines\n"
-      "// of explanatory text\n"
-      "//\n"
-      "// It contains enough\n"
-      "// lines to trigger\n"
-      "// the partition structure\n"
-      "// edge case where\n"
-      "// comment tokens are\n"
-      "// absorbed into the\n"
-      "// following parameter\n"
-      "// partition.\n"
-      "//\n"
-      "localparam int H = 2;\n"
-      "endmodule\n",
-      "package p;\n"
-      "parameter int X = 1;\n"
-      "// Long comment block\n"
-      "// with many lines\n"
-      "//\n"
-      "// of text\n"
-      "//\n"
-      "localparam int Y = 2;\n"
-      "endpackage\n",
-  };
-  FormatStyle style;
-  style.column_limit = 40;
-  style.indentation_spaces = 2;
-  style.wrap_spaces = 4;
-  style.parameter_declaration_alignment = AlignmentPolicy::kAlign;
-  for (const char *input : kInputs) {
-    VLOG(1) << "code-to-format:\n" << input << "<EOF>";
-    std::ostringstream stream;
-    const auto status = FormatVerilog(input, "<filename>", style, stream);
-    // The primary requirement is that the formatter does not crash
-    // (SIGABRT).  Gtest will report failure if the process aborts.
-    // The partition structure may cause output format differences;
-    // the important thing is the formatter handled it gracefully.
-  }
-}
-
-// Regression for https://github.com/chipsalliance/verible/issues/2008
-// (also https://github.com/chipsalliance/verible/issues/2474 and
-// https://github.com/chipsalliance/verible/issues/2063):
-// Non-ANSI "input wire signed" used to abort in the tree-unwrapper because
-// the CST visited "signed" before "wire", which is the reverse of source
-// order.
-TEST(FormatterEndToEndTest, NonAnsiWireSignedModulePortDoesNotAbort) {
-  static constexpr FormatterTestCase kTestCases[] = {
-      {// Original issue #2008 sample
-       "module uut( sig1 );\n"
-       "\n"
-       "input wire signed [15:0] sig1;\n"
-       "\n"
-       "endmodule\n",
-       "module uut (\n"
-       "    sig1\n"
-       ");\n"
-       "\n"
-       "  input wire signed [15:0] sig1;\n"
-       "\n"
-       "endmodule\n"},
-      {// Issue #2474 sample
-       "module myModule (\n"
-       "    myinput\n"
-       ");\n"
-       "input wire signed [7:0] myInput;\n"
-       "endmodule\n",
-       "module myModule (\n"
-       "    myinput\n"
-       ");\n"
-       "  input wire signed [7:0] myInput;\n"
-       "endmodule\n"},
-      {// Issue #2063 sample: signed wire with no packed dimensions
-       "module top(a);\n"
-       "    input wire signed a;\n"
-       "endmodule\n",
-       "module top (\n"
-       "    a\n"
-       ");\n"
-       "  input wire signed a;\n"
-       "endmodule\n"},
-      {// Same production with logic instead of wire
-       "module uut(sig1);\n"
-       "input logic signed [15:0] sig1;\n"
-       "endmodule\n",
-       "module uut (\n"
-       "    sig1\n"
-       ");\n"
-       "  input logic signed [15:0] sig1;\n"
-       "endmodule\n"},
-      {// output / inout net types
-       "module uut(sig1, sig2);\n"
-       "output wire signed [15:0] sig1;\n"
-       "inout wire signed [7:0] sig2;\n"
-       "endmodule\n",
-       "module uut (\n"
-       "    sig1,\n"
-       "    sig2\n"
-       ");\n"
-       "  output wire signed [15:0] sig1;\n"
-       "  inout wire signed [7:0] sig2;\n"
-       "endmodule\n"},
-      {// unsigned is the same production
-       "module uut(sig1);\n"
-       "input wire unsigned [15:0] sig1;\n"
-       "endmodule\n",
-       "module uut (\n"
-       "    sig1\n"
-       ");\n"
-       "  input wire unsigned [15:0] sig1;\n"
-       "endmodule\n"},
-      {// ANSI form already worked; keep as a regression
-       "module uut(input wire signed [15:0] sig1);\n"
-       "endmodule\n",
-       "module uut (\n"
-       "    input wire signed [15:0] sig1\n"
-       ");\n"
-       "endmodule\n"},
-      {// Non-ANSI without signed still works
-       "module uut(sig1);\n"
-       "input wire [15:0] sig1;\n"
-       "endmodule\n",
-       "module uut (\n"
-       "    sig1\n"
-       ");\n"
-       "  input wire [15:0] sig1;\n"
-       "endmodule\n"},
-      {// Non-ANSI signed without net type still works
-       "module uut(sig1);\n"
-       "input signed [15:0] sig1;\n"
-       "endmodule\n",
-       "module uut (\n"
-       "    sig1\n"
-       ");\n"
-       "  input signed [15:0] sig1;\n"
-       "endmodule\n"},
-  };
-  FormatStyle style;  // default column_limit (100)
-  for (const auto &test_case : kTestCases) {
-    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
-    std::ostringstream stream;
-    const auto status =
-        FormatVerilog(test_case.input, "<filename>", style, stream);
-    EXPECT_OK(status) << status.message();
-    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
-  }
+TEST(FormatterEndToEndTest, SmokeFormatterTestCases) {
+  RunFormatterTestCases40(kSmokeFormatterTestCases);
 }
 
 // Regression for https://github.com/chipsalliance/verible/issues/2605:
diff --git a/verible/verilog/formatting/formatter_wrap_style_test.cc b/verible/verilog/formatting/formatter_wrap_style_test.cc
new file mode 100644
index 0000000..b61fe42
--- /dev/null
+++ b/verible/verilog/formatting/formatter_wrap_style_test.cc
@@ -0,0 +1,3405 @@
+// Copyright 2017-2026 The Verible Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Test cases in this file should be *insensitive* to wrapping penalties.
+// Penalty-sensitive tests belong in formatter-tuning_test.cc.
+
+#include <cctype>
+#include <cstddef>
+#include <sstream>
+#include <string>
+#include <string_view>
+#include <vector>
+
+#include "absl/status/status.h"
+#include "absl/strings/match.h"
+#include "absl/strings/str_split.h"
+#include "gmock/gmock.h"
+#include "gtest/gtest.h"
+#include "verible/common/formatting/align.h"
+#include "verible/common/formatting/basic-format-style.h"
+#include "verible/common/strings/display-utils.h"
+#include "verible/common/strings/position.h"
+#include "verible/common/util/interval.h"
+#include "verible/common/util/logging.h"
+#include "verible/verilog/formatting/format-style.h"
+#include "verible/verilog/formatting/formatter-test-utils.h"
+#include "verible/verilog/formatting/formatter.h"
+
+namespace verilog {
+namespace formatter {
+namespace {
+
+using absl::StatusCode;
+using testing::HasSubstr;
+using verible::AlignmentPolicy;
+using verible::IndentationStyle;
+using verible::LineNumberSet;
+
+// Empty LineNumberSet means format all lines.
+static const LineNumberSet kEnableAllLines;
+
+// Small case set for diagnostic/control-path tests that previously iterated
+// the monolithic kFormatterTestCases table.
+static constexpr FormatterTestCase kDiagnosticFormatterTestCases[] = {
+    {"", ""},
+    {"\n", "\n"},
+    {"module m;wire w;endmodule\n",
+     "module m;\n"
+     "  wire w;\n"
+     "endmodule\n"},
+    {"class  cc ;\n"
+     "endclass:cc\n",
+     "class cc;\n"
+     "endclass : cc\n"},
+};
+
+TEST(FormatterEndToEndTest, AutoInferAlignment) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {"", ""},
+      {"\n", "\n"},
+      {"class  cc ;\n"
+       "endclass:cc\n",
+       "class cc;\n"
+       "endclass : cc\n"},
+
+      // module port declarations
+      {"module pd(\n"
+       "input wire foo,\n"
+       "output reg bar\n"
+       ");\n"
+       "endmodule:pd\n",
+       "module pd (\n"
+       "    input  wire foo,\n"  // flush-left vs. align are similar enough,
+       "    output reg  bar\n"   // so automatic policy will align.
+       ");\n"
+       "endmodule : pd\n"},
+      {"module pd(\n"
+       "input  foo_pkg::baz_t foo,\n"
+       "output reg  bar\n"
+       ");\n"
+       "endmodule:pd\n",
+       "module pd (\n"
+       "    input foo_pkg::baz_t foo,\n"  // alignment would add too many spaces
+       "    output reg bar\n"             // so infer intent to flush-left.
+       ");\n"
+       "endmodule : pd\n"},
+      {"module pd(\n"
+       "input  foo_pkg::baz_t foo,\n"
+       "output     reg  bar\n"  // user injects 4 excess spaces here ...
+       ");\n"
+       "endmodule:pd\n",
+       "module pd (\n"
+       "    input  foo_pkg::baz_t foo,\n"
+       "    output reg            bar\n"  // ... and triggers alignment.
+       ");\n"
+       "endmodule : pd\n"},
+      {"module pd(\n"
+       "`ifdef FAA\n"  // inside preprocessing conditional
+       "input  baaaz_t foo,\n"
+       "output reg      bar\n"  // user injects 4 excess spaces here ...
+       "`endif\n"
+       ");\n"
+       "endmodule:pd\n",
+       "module pd (\n"
+       "`ifdef FAA\n"
+       "    input  baaaz_t foo,\n"
+       "    output reg     bar\n"  // ... and triggers alignment.
+       "`endif\n"
+       ");\n"
+       "endmodule : pd\n"},
+      {"module pd(\n"
+       "`ifdef FAA\n"  // inside preprocessing conditional
+       "input  baaaz_t foo,\n"
+       "`else\n"
+       "output reg      bar\n"  // user injects 4 excess spaces here ...
+       "`endif\n"
+       ");\n"
+       "endmodule:pd\n",
+       "module pd (\n"
+       "`ifdef FAA\n"
+       "    input  baaaz_t foo,\n"  // aligned
+       "`else\n"                    // aligned across preprocessing directives
+       "    output reg     bar\n"   // ... and triggers alignment.
+       "`endif\n"
+       ");\n"
+       "endmodule : pd\n"},
+      {"module pd(\n"
+       "input logic [31:0] bus,\n"
+       "input logic [7:0] bus2,\n"
+       "`ifdef FAA\n"  // inside preprocessing conditional
+       "input  baaaz_t foo,\n"
+       "`else\n"
+       "output reg      bar,\n"  // user injects 4 excess spaces here ...
+       "`endif\n"
+       "output out_t zout1,\n"
+       "output out_t zout2\n"
+       ");\n"
+       "endmodule:pd\n",
+       "module pd (\n"
+       "    input  logic   [31:0] bus,\n"  // treated as one large group
+       "    input  logic   [ 7:0] bus2,\n"
+       "`ifdef FAA\n"
+       "    input  baaaz_t        foo,\n"  // aligned
+       "`else\n"  // aligned across preprocessing directives
+       "    output reg            bar,\n"  // ... and triggers alignment.
+       "`endif\n"
+       "    output out_t          zout1,\n"
+       "    output out_t          zout2\n"
+       ");\n"
+       "endmodule : pd\n"},
+      {"module pd(\n"
+       "input logic [7:0] bus2,\n"
+       "`ifndef FAA\n"  // inside preprocessing conditional
+       "input logic [31:0] bus,\n"
+       "input  baaaz_t foo,\n"
+       "`elsif BLA\n"
+       "output reg      bar,\n"  // user injects 4 excess spaces here ...
+       "output out_t zout1,\n"
+       "`endif\n"
+       "output out_t zout2\n"
+       ");\n"
+       "endmodule:pd\n",
+       "module pd (\n"
+       "    input  logic   [ 7:0] bus2,\n"
+       "`ifndef FAA\n"
+       "    input  logic   [31:0] bus,\n"  // treated as one large group
+       "    input  baaaz_t        foo,\n"  // aligned
+       "`elsif BLA\n"  // aligned across preprocessing directives
+       "    output reg            bar,\n"  // ... and triggers alignment.
+       "    output out_t          zout1,\n"
+       "`endif\n"
+       "    output out_t          zout2\n"
+       ");\n"
+       "endmodule : pd\n"},
+      {// data declaration and net declaration in ports
+       "module m(\n"
+       "logic [x:y]a    ,\n"    // packed dimensions, induce alignment
+       "wire [pp:qq] [e:f]b\n"  // packed dimensions, 2D
+       ") ;\n"
+       "endmodule\n",
+       "module m (\n"
+       "    logic [  x:y]      a,\n"
+       "    wire  [pp:qq][e:f] b\n"
+       ");\n"
+       "endmodule\n"},
+      {// used-defined data declarations in ports
+       "module m(\n"
+       "a::bb [x:y]a    ,\n"       // packed dimensions, induce alignment
+       "c#(d,e) [pp:qq] [e:f]b\n"  // packed dimensions, 2D
+       ") ;\n"
+       "endmodule\n",
+       "module m (\n"
+       "    a::bb    [  x:y]      a,\n"
+       "    c#(d, e) [pp:qq][e:f] b\n"
+       ");\n"
+       "endmodule\n"},
+
+      // named parameter arguments
+      {"module  mm ;\n"
+       "foo #(\n"
+       ".a(a),\n"
+       ".bb(bb)\n"
+       ")bar( );\n"
+       "endmodule:mm\n",
+       "module mm;\n"
+       "  foo #(\n"
+       "      .a (a),\n"  // align doesn't add too many spaces, so align
+       "      .bb(bb)\n"
+       "  ) bar ();\n"
+       "endmodule : mm\n"},
+      {"module  mm ;\n"
+       "foo #(\n"
+       ".a(a),\n"
+       ".bbcccc(bb)\n"
+       ")bar( );\n"
+       "endmodule:mm\n",
+       "module mm;\n"
+       "  foo #(\n"
+       "      .a(a),\n"  // align would add too many spaces, so flush-left
+       "      .bbcccc(bb)\n"
+       "  ) bar ();\n"
+       "endmodule : mm\n"},
+      {"module  mm ;\n"
+       "foo #(\n"
+       ".a(a    ),\n"  // user manually triggers alignment with excess spaces
+       ".bbcccc(bb)\n"
+       ")bar( );\n"
+       "endmodule:mm\n",
+       "module mm;\n"
+       "  foo #(\n"
+       "      .a     (a),\n"  // induced alignment
+       "      .bbcccc(bb)\n"
+       "  ) bar ();\n"
+       "endmodule : mm\n"},
+      {"module  mm ;\n"
+       "foo #(\n"
+       "//c1\n"        // with comments (indented but not aligned)
+       ".a(a    ),\n"  // user manually triggers alignment with excess spaces
+       "//c2\n"
+       ".bbcccc(bb)\n"
+       "//c3\n"
+       ")bar( );\n"
+       "endmodule:mm\n",
+       "module mm;\n"
+       "  foo #(\n"
+       "      //c1\n"
+       "      .a     (a),\n"  // induced alignment
+       "      //c2\n"
+       "      .bbcccc(bb)\n"
+       "      //c3\n"
+       "  ) bar ();\n"
+       "endmodule : mm\n"},
+      {"module  mm ;\n"
+       "foo #(\n"
+       ".a( (1     +2)),\n"  // excess spaces, testing extra parentheses
+       ".bbcccc((c*d)+(e*f))\n"
+       ")bar( );\n"
+       "endmodule:mm\n",
+       "module mm;\n"
+       "  foo #(\n"
+       "      .a     ((1 + 2)),\n"  // induced alignment
+       "      .bbcccc((c * d) + (e * f))\n"
+       "  ) bar ();\n"
+       "endmodule : mm\n"},
+
+      // named port connections
+      {"module  mm ;\n"
+       "foo bar(\n"
+       ".a(a),\n"
+       ".bb(bb)\n"
+       ");\n"
+       "endmodule:mm\n",
+       "module mm;\n"
+       "  foo bar (\n"
+       "      .a (a),\n"  // align doesn't add too many spaces, so align
+       "      .bb(bb)\n"
+       "  );\n"
+       "endmodule : mm\n"},
+      {"module  mm ;\n"
+       "foo bar(\n"
+       ".a(a),\n"
+       ".bbbbbb(bb)\n"
+       ");\n"
+       "endmodule:mm\n",
+       "module mm;\n"
+       "  foo bar (\n"
+       "      .a(a),\n"  // align would add too many spaces, so flush-left
+       "      .bbbbbb(bb)\n"
+       "  );\n"
+       "endmodule : mm\n"},
+      {"module  mm ;\n"
+       "foo bar(\n"
+       ".a    (a),\n"  // user manually triggers alignment with excess spaces
+       ".bbbbbb(bb)\n"
+       ");\n"
+       "endmodule:mm\n",
+       "module mm;\n"
+       "  foo bar (\n"
+       "      .a     (a),\n"  // alignment fixed
+       "      .bbbbbb(bb)\n"
+       "  );\n"
+       "endmodule : mm\n"},
+
+      // net variable declarations
+      {"module nn;\n"
+       "wire wwwww;\n"
+       "logic lll;\n"
+       "endmodule : nn\n",
+       "module nn;\n"
+       "  wire  wwwww;\n"  // alignment adds few spaces, so align
+       "  logic lll;\n"
+       "endmodule : nn\n"},
+      {"module nn;\n"
+       "wire wwwww;\n"
+       "foo_pkg::baz_t lll;\n"
+       "endmodule : nn\n",
+       "module nn;\n"
+       "  wire wwwww;\n"  // alignment adds too many spaces, so flush-left
+       "  foo_pkg::baz_t lll;\n"
+       "endmodule : nn\n"},
+      {"module nn;\n"
+       "wire     wwwww;\n"  // user injects spaces to trigger alignment
+       "foo_pkg::baz_t lll;\n"
+       "endmodule : nn\n",
+       "module nn;\n"
+       "  wire           wwwww;\n"  // ... and gets alignment
+       "  foo_pkg::baz_t lll;\n"
+       "endmodule : nn\n"},
+      {// data/net declarations as generate items (conditional)
+       "module nn;\n"
+       "if (cc)begin:fff\n"
+       "wire wwwww;\n"
+       "logic lll;\n"
+       "end:fff\n"
+       "endmodule : nn\n",
+       "module nn;\n"
+       "  if (cc) begin : fff\n"
+       "    wire  wwwww;\n"  // alignment adds few spaces, so align
+       "    logic lll;\n"
+       "  end : fff\n"
+       "endmodule : nn\n"},
+
+      // continuous assignments
+      {"module m_assign;\n"
+       "assign foo = 1'b1;\n"  // alignment adds few spaces, so align
+       "assign baar = 1'b0;\n"
+       "endmodule\n",
+       "module m_assign;\n"
+       "  assign foo  = 1'b1;\n"  // aligned
+       "  assign baar = 1'b0;\n"
+       "endmodule\n"},
+      {"module m_assign;\n"
+       "assign foo  =  1'b1;\n"  // alignment adds too many spaces, so
+                                 // flush-left
+       "assign baaaaaar = 1'b0;\n"
+       "endmodule\n",
+       "module m_assign;\n"
+       "  assign foo = 1'b1;\n"  // flush-left
+       "  assign baaaaaar = 1'b0;\n"
+       "endmodule\n"},
+      {"module m_assign;\n"
+       "assign foo  =     1'b1;\n"  // induce alignment with excess spaces
+       "assign baaaaaar = 1'b0;\n"
+       "endmodule\n",
+       "module m_assign;\n"
+       "  assign foo      = 1'b1;\n"  // aligned
+       "  assign baaaaaar = 1'b0;\n"
+       "endmodule\n"},
+      {// currently, does not assign across ifdefs
+       "module m_assign;\n"
+       "`ifdef FOO\n"
+       "assign foo  =     1'b1;\n"  // induce alignment with excess spaces
+       "assign baaaaaar = 1'b0;\n"
+       "`else\n"
+       "assign zooo = 2'b11;\n"
+       "assign yoo = 2'b00;\n"
+       "`endif\n"
+       "endmodule\n",
+       "module m_assign;\n"
+       "`ifdef FOO\n"
+       "  assign foo      = 1'b1;\n"  // aligned
+       "  assign baaaaaar = 1'b0;\n"
+       "`else\n"                   // aligned separately above/below
+       "  assign zooo = 2'b11;\n"  // aligned
+       "  assign yoo  = 2'b00;\n"  // aligned
+       "`endif\n"
+       "endmodule\n"},
+      {// mixed net declaration and continuous assignment, both groups aligned
+       "module m_assign;\n"
+       "wire     wwwww;\n"  // induce alignment
+       "foo_pkg::baz_t lll;\n"
+       "assign foo  =     1'b1;\n"  // induce alignment
+       "assign baaaaaar = 1'b0;\n"
+       "endmodule\n",
+       "module m_assign;\n"
+       "  wire           wwwww;\n"  // aligned
+       "  foo_pkg::baz_t lll;\n"
+       "  assign foo      = 1'b1;\n"  // aligned
+       "  assign baaaaaar = 1'b0;\n"
+       "endmodule\n"},
+      {// continuous assignments as generate items (conditional)
+       "module m_assign;\n"
+       "if (xy) begin\n"
+       "assign foo  =  1'b0;\n"  // align: adds few spaces
+       "assign baaar = 1'b1;\n"
+       "end else begin\n"
+       "assign goo  =      1'b1;\n"  // induce alignment with excess spaces
+       "assign zaaaaaar = 1'b0;\n"
+       "end\n"
+       "endmodule\n",
+       "module m_assign;\n"
+       "  if (xy) begin\n"
+       "    assign foo   = 1'b0;\n"  // aligned
+       "    assign baaar = 1'b1;\n"
+       "  end else begin\n"
+       "    assign goo      = 1'b1;\n"  // induce alignment with excess spaces
+       "    assign zaaaaaar = 1'b0;\n"
+       "  end\n"
+       "endmodule\n"},
+      {// continuous assignments as generate items (loop)
+       "module m_assign;\n"
+       "for(genvar i=0; i<k; ++i ) begin\n"
+       "assign foo  =  1'b0;\n"  // align: adds few spaces
+       "assign baaar = 1'b1;\n"
+       "end\n"
+       "endmodule\n",
+       "module m_assign;\n"
+       "  for (genvar i = 0; i < k; ++i) begin\n"
+       "    assign foo   = 1'b0;\n"  // aligned
+       "    assign baaar = 1'b1;\n"
+       "  end\n"
+       "endmodule\n"},
+      {// continuous assignments as generate items (case)
+       "module m_assign;\n"
+       "case (c)\n"
+       "jk:begin\n"
+       "assign foo  =  1'b0;\n"  // align: adds few spaces
+       "assign baaar = 1'b1;\n"
+       "end\n"
+       "endcase\n"
+       "endmodule\n",
+       "module m_assign;\n"
+       "  case (c)\n"
+       "    jk: begin\n"
+       "      assign foo   = 1'b0;\n"  // aligned
+       "      assign baaar = 1'b1;\n"
+       "    end\n"
+       "  endcase\n"
+       "endmodule\n"},
+      {// continuous assignment with comment
+       "module m;\n"
+       "// comment1\n"
+       "assign aaaaa = (bbbbb != ccccc) &\n"
+       "// comment2\n"
+       "(ddddd | (eeeee & ffffff));\n"
+       "endmodule\n",
+       "module m;\n"
+       "  // comment1\n"
+       "  assign aaaaa = (bbbbb != ccccc) &\n"
+       "      // comment2\n"
+       "      (ddddd | (eeeee & ffffff));\n"
+       "endmodule\n"},
+
+      // net/variable assignments: blocking and nonblocking
+      {"module  ma ;\n"
+       "initial  begin\n"
+       "aa = b;\n"
+       "c = 1'b0;\n"
+       "end\n"
+       "endmodule\n",
+       "module ma;\n"
+       "  initial begin\n"
+       "    aa = b;\n"
+       "    c  = 1'b0;\n"  // only one space to align
+       "  end\n"
+       "endmodule\n"},
+      {"function void  fa ;\n"
+       "c = 1'b0;\n"
+       "aa = b;\n"
+       "endfunction\n",
+       "function void fa;\n"
+       "  c  = 1'b0;\n"  // only one space to align
+       "  aa = b;\n"
+       "endfunction\n"},
+      {"task  ta ; \n"
+       "aa =  b;\n"
+       "c = 1'b0;\n"
+       "endtask\n",
+       "task ta;\n"
+       "  aa = b;\n"
+       "  c  = 1'b0;\n"  // only one space to align
+       "endtask\n"},
+      {"module  ma ;\n"
+       "always@( posedge clk) begin\n"
+       "aaa <= b;\n"
+       "c <= 1'b0;\n"
+       "end\n"
+       "endmodule\n",
+       "module ma;\n"
+       "  always @(posedge clk) begin\n"
+       "    aaa <= b;\n"
+       "    c   <= 1'b0;\n"  // only two spaces to align
+       "  end\n"
+       "endmodule\n"},
+      {"function int  fa ;\n"
+       "c <= 1'b0;\n"
+       "aa <= b;\n"
+       "return 0 ;\n"
+       "endfunction\n",
+       "function int fa;\n"
+       "  c  <= 1'b0;\n"  // only one space to align
+       "  aa <= b;\n"
+       "  return 0;\n"
+       "endfunction\n"},
+      {"task  ta ; \n"
+       "$display (\"hello\" );\n"
+       "aa <=  b;\n"
+       "c <= 1'b0;\n"
+       "endtask\n",
+       "task ta;\n"
+       "  $display(\"hello\");\n"
+       "  aa <= b;\n"
+       "  c  <= 1'b0;\n"  // only one space to align
+       "endtask\n"},
+      {// mixed blocking and nonblocking assignments
+       "module  ma ;\n"
+       "always@( posedge clk) begin\n"
+       "aaaaa  = b;\n"
+       "ccc  = 1'b0;\n"
+       "aaa <= b;\n"
+       "c <= 1'b0;\n"
+       "end\n"
+       "endmodule\n",
+       "module ma;\n"
+       "  always @(posedge clk) begin\n"
+       "    aaaaa = b;\n"
+       "    ccc   = 1'b0;\n"  // only two spaces to align
+       "    aaa <= b;\n"
+       "    c   <= 1'b0;\n"  // only two spaces to align (separate group)
+       "  end\n"
+       "endmodule\n"},
+      {"task  ta ; \n"
+       "aa <=  b;\n"
+       "c <= 1'b0;\n"
+       "$display (\"hello\" );\n"  // separates above/below alignment groups
+       "zzaa <=  b;\n"
+       "zzc <= 1'b0;\n"
+       "endtask\n",
+       "task ta;\n"
+       "  aa <= b;\n"
+       "  c  <= 1'b0;\n"  // only one space to align
+       "  $display(\"hello\");\n"
+       "  zzaa <= b;\n"
+       "  zzc  <= 1'b0;\n"  // only one space to align
+       "endtask\n"},
+      {"task  ta ; \n"
+       "$display (\"hello\" );\n"
+       "aaaaa <=  b;\n"
+       "c <= 1'b0;\n"  // need too many spaces to align
+       "endtask\n",
+       "task ta;\n"
+       "  $display(\"hello\");\n"
+       "  aaaaa <= b;\n"
+       "  c <= 1'b0;\n"  // so keep flush-left
+       "endtask\n"},
+      {"function void  fa ; \n"
+       "$display (\"hello\" );\n"
+       "aaaaa =  b;\n"
+       "c = 1'b0;\n"  // need too many spaces to align
+       "endfunction\n",
+       "function void fa;\n"
+       "  $display(\"hello\");\n"
+       "  aaaaa = b;\n"
+       "  c = 1'b0;\n"  // so keep flush-left
+       "endfunction\n"},
+      {"module  ma ;\n"
+       "always@( posedge clk) begin\n"
+       "aaaxx <= b;\n"
+       "c <= 1'b0;\n"  // need too many spaces to align
+       "end\n"
+       "endmodule\n",
+       "module ma;\n"
+       "  always @(posedge clk) begin\n"
+       "    aaaxx <= b;\n"
+       "    c <= 1'b0;\n"  // so keep flush-left
+       "  end\n"
+       "endmodule\n"},
+      {"module  ma ;\n"
+       "always@( posedge clk) begin\n"
+       "aaaxx <= b    ;\n"  // inject 4 spaces to induce alignment
+       "c <= 1'b0;\n"
+       "end\n"
+       "endmodule\n",
+       "module ma;\n"
+       "  always @(posedge clk) begin\n"
+       "    aaaxx <= b;\n"
+       "    c     <= 1'b0;\n"  // induced alignment
+       "  end\n"
+       "endmodule\n"},
+      {"module  ma ;\n"
+       "always@( posedge clk) begin\n"
+       "aaaxx <= b    ;\n"  // inject 4 spaces to induce alignment
+       "//comment\n"
+       "c <= 1'b0;\n"
+       "end\n"
+       "endmodule\n",
+       "module ma;\n"
+       "  always @(posedge clk) begin\n"
+       "    aaaxx <= b;\n"
+       "    //comment\n"       // ignored within alignment group
+       "    c     <= 1'b0;\n"  // induced alignment
+       "  end\n"
+       "endmodule\n"},
+
+      // local variable declarations as statements
+      {"task tt ;\n"
+       "int foo;\n"  // only 2 spaces needed to align
+       "bar_t baz;\n"
+       "endtask\n",
+       "task tt;\n"
+       "  int   foo;\n"  // aligned
+       "  bar_t baz;\n"
+       "endtask\n"},
+      {"function ff ;\n"
+       "bar_t baz;\n"
+       "int foo;\n"  // only 2 spaces needed to align
+       "endfunction\n",
+       "function ff;\n"
+       "  bar_t baz;\n"
+       "  int   foo;\n"  // aligned
+       "endfunction\n"},
+      {"task tt ;\n"
+       "int  foo;\n"  // too many spaces needed to align
+       "baaaar_t baz;\n"
+       "endtask\n",
+       "task tt;\n"
+       "  int foo;\n"  // so flush-left
+       "  baaaar_t baz;\n"
+       "endtask\n"},
+      {"function ff ;\n"
+       "baaaar_t baz;\n"
+       "int  foo;\n"  // too many spaces needed to align
+       "endfunction\n",
+       "function ff;\n"
+       "  baaaar_t baz;\n"
+       "  int foo;\n"  // so flush-left
+       "endfunction\n"},
+      {"task tt ;\n"
+       "int        foo;\n"  // injected spaces to induce alignment
+       "baaaar_t baz;\n"
+       "endtask\n",
+       "task tt;\n"
+       "  int      foo;\n"  // aligned
+       "  baaaar_t baz;\n"
+       "endtask\n"},
+      {"function ff ;\n"
+       "baaaar_t baz    ;\n"  // injected spaces to induce alignment
+       "int  foo;\n"
+       "endfunction\n",
+       "function ff;\n"
+       "  baaaar_t baz;\n"
+       "  int      foo;\n"  // so aligned
+       "endfunction\n"},
+
+      // formal parameters
+      {"module pp #(\n"
+       "int W,\n"
+       "type T\n"
+       ") ();\n"
+       "endmodule : pp\n",
+       "module pp #(\n"
+       "    int  W,\n"  // alignment adds few spaces, so do it
+       "    type T\n"
+       ") ();\n"
+       "endmodule : pp\n"},
+      {"module pp #(\n"
+       "int W,\n"
+       "int[xx:yy] T\n"
+       ") ();\n"
+       "endmodule : pp\n",
+       "module pp #(\n"
+       "    int W,\n"  // alignment adds many spaces, so flush-left
+       "    int [xx:yy] T\n"
+       ") ();\n"
+       "endmodule : pp\n"},
+      {"module pp #(\n"
+       "int W,\n"
+       "int[xx:yy]     T\n"  // user injected spaces intentionally
+       ") ();\n"
+       "endmodule : pp\n",
+       "module pp #(\n"
+       "    int         W,\n"  // ... trigger alignment
+       "    int [xx:yy] T\n"
+       ") ();\n"
+       "endmodule : pp\n"},
+
+      // class member variables
+      {"class  cc ;\n"
+       "int my_int;\n"
+       "bar_t my_bar;\n"
+       "endclass:cc\n",
+       "class cc;\n"
+       "  int   my_int;\n"  // align doesn't add too many spaces, so align
+       "  bar_t my_bar;\n"
+       "endclass : cc\n"},
+      {"class  cc ;\n"
+       "int   my_int;\n"
+       "foo_pkg::bar_t my_bar;\n"
+       "endclass:cc\n",
+       "class cc;\n"
+       "  int my_int;\n"  // align would add too many spaces, so flush-left
+       "  foo_pkg::bar_t my_bar;\n"
+       "endclass : cc\n"},
+      {"class  cc ;\n"
+       "int     my_int;\n"  // intentional excessive spaces, trigger alignment
+       "foo_pkg::bar_t my_bar;\n"
+       "endclass:cc\n",
+       "class cc;\n"
+       "  int            my_int;\n"
+       "  foo_pkg::bar_t my_bar;\n"
+       "endclass : cc\n"},
+      {"class  cc ;\n"
+       "int    my_int;\n"  // unable to infer user's intent, so preserve
+       "foo_pkg::bar_t  my_bar;\n"
+       "endclass:cc\n",
+       "class cc;\n"
+       "  int    my_int;\n"  // ... but still indent
+       "  foo_pkg::bar_t  my_bar;\n"
+       "endclass : cc\n"},
+
+      // case item test cases
+      {// small difference between flush-left and align, so align
+       "function f; case (x)kZZZZ  :if( b )break; default :return 2;"
+       "endcase endfunction\n",
+       "function f;\n"
+       "  case (x)\n"
+       "    kZZZZ:   if (b) break;\n"  // aligned, only adds 2 spaces
+       "    default: return 2;\n"
+       "  endcase\n"
+       "endfunction\n"},
+      {// small error relative to flush-left, so flush-left
+       "function f; case (x)kZ  :if( b )break; default :return 2;"
+       "endcase endfunction\n",
+       "function f;\n"
+       "  case (x)\n"
+       "    kZ: if (b) break;\n"  // flush-left
+       "    default: return 2;\n"
+       "  endcase\n"
+       "endfunction\n"},
+      {// intentional spacing error (delta=4) induces alignment
+       "function f; case (x)kZ  :if( b )break; default    :return 2;"
+       "endcase endfunction\n",
+       "function f;\n"
+       "  case (x)\n"
+       "    kZ:      if (b) break;\n"
+       "    default: return 2;\n"
+       "  endcase\n"
+       "endfunction\n"},
+      {// induced alignment, with ignored comments
+       "function f; case (x)kZ  :if( b )break; \n//c1\n kXX: g = f; "
+       "\n//c2\ndefault    :return 2;"
+       "endcase endfunction\n",
+       "function f;\n"
+       "  case (x)\n"
+       "    kZ:      if (b) break;\n"
+       "    //c1\n"
+       "    kXX:     g = f;\n"
+       "    //c2\n"
+       "    default: return 2;\n"
+       "  endcase\n"
+       "endfunction\n"},
+      {// induced alignment, ignore multiline case item in the middle
+       "function f; case (x)"
+       "kZ  :if( b )break; "
+       "kYY    :return 2;"          // excess spaces induce alignment
+       "    kXXXXXXXXX: begin end"  // multi-line, ignored
+       "    kWWWWW: cc = 23;\n"
+       "    kVVV: cd = 24;\n"
+       "endcase endfunction\n",
+       "function f;\n"
+       "  case (x)\n"
+       "    kZ:     if (b) break;\n"
+       "    kYY:    return 2;\n"
+       "    kXXXXXXXXX: begin\n"  // separates above/below groups
+       "    end\n"
+       "    kWWWWW: cc = 23;\n"
+       "    kVVV:   cd = 24;\n"  // aligned
+       "  endcase\n"
+       "endfunction\n"},
+      {// induced alignment, ignore multiline case item in the middle
+       "function f; case (x)"
+       "kZ  :if( b )break; "
+       "kYY    :return 2;"               // excess spaces induce alignment
+       "    kXXXXXXXXX: if(w)begin end"  // multi-line, ignored
+       "    kWWWWW: cc = 23;\n"
+       "    kVVV: cd = 24;\n"
+       "endcase endfunction\n",
+       "function f;\n"
+       "  case (x)\n"
+       "    kZ:     if (b) break;\n"
+       "    kYY:    return 2;\n"
+       "    kXXXXXXXXX:\n"   // TODO(fangism): allow this to merge with if()
+                             // else indent the following two lines
+       "    if (w) begin\n"  // separates above/below groups
+       "    end\n"
+       "    kWWWWW: cc = 23;\n"
+       "    kVVV:   cd = 24;\n"  // aligned
+       "  endcase\n"
+       "endfunction\n"},
+      {// induced alignment, ignore multiline case item in the middle
+       "task t; case (x)"
+       "kZ  :if( b )break; "
+       "kYY    :return 2;"           // excess spaces induce alignment
+       "    kXXXXXXXXX: fork  join"  // multi-line, ignored
+       "    kWWWWW: cc = 23;\n"
+       "    kVVV: cd = 24;\n"
+       "endcase endtask\n",
+       "task t;\n"
+       "  case (x)\n"
+       "    kZ:     if (b) break;\n"
+       "    kYY:    return 2;\n"
+       "    kXXXXXXXXX:\n"  // TODO(fangism): allow this to merge with fork
+                            // else indent the following two lines
+       "    fork\n"         // separates above/below groups
+       "    join\n"
+       "    kWWWWW: cc = 23;\n"
+       "    kVVV:   cd = 24;\n"  // aligned
+       "  endcase\n"
+       "endtask\n"},
+      {// case-inside: small difference between flush-left and align, so align
+       "function f; case (x)inside [0:3]  :yy=zzz; [4:11] :yy=zz;"
+       "endcase endfunction\n",
+       "function f;\n"
+       "  case (x) inside\n"
+       "    [0 : 3]:  yy = zzz;\n"  // aligned, only adds 1 spaces
+       "    [4 : 11]: yy = zz;\n"
+       "  endcase\n"
+       "endfunction\n"},
+      {// case-inside: align with comments
+       "function f; case (x)inside \n//c1\n[0:3]  :yy=zzz;\n//c2\n"
+       " [4:11] :yy=zz;\n//c3\n"
+       "endcase endfunction\n",
+       "function f;\n"
+       "  case (x) inside\n"
+       "    //c1\n"
+       "    [0 : 3]:  yy = zzz;\n"  // aligned, only adds 1 spaces
+       "    //c2\n"
+       "    [4 : 11]: yy = zz;\n"
+       "    //c3\n"
+       "  endcase\n"
+       "endfunction\n"},
+      {// case-inside: flush left
+       "function f; case (x)inside [0:3]  :yy=zzz; [4:999999] :yy=zz;"
+       "endcase endfunction\n",
+       "function f;\n"
+       "  case (x) inside\n"
+       "    [0 : 3]: yy = zzz;\n"  // flush-left
+       "    [4 : 999999]: yy = zz;\n"
+       "  endcase\n"
+       "endfunction\n"},
+      {// case-inside: induce alignment
+       "function f; case (x)inside [0:3    ]  :yy=zzz; [4:999999] :yy=zz;"
+       "endcase endfunction\n",
+       "function f;\n"
+       "  case (x) inside\n"
+       "    [0 : 3]:      yy = zzz;\n"  // aligned
+       "    [4 : 999999]: yy = zz;\n"
+       "  endcase\n"
+       "endfunction\n"},
+      {// case-generate: align would add few spaces, so align
+       "module mc ; case (x)kZ  : gg h(); kXYY :j kk();"
+       "endcase endmodule\n",
+       "module mc;\n"
+       "  case (x)\n"
+       "    kZ:   gg h ();\n"  // align
+       "    kXYY: j kk ();\n"
+       "  endcase\n"
+       "endmodule\n"},
+      {// case-generate + comment: align would add few spaces, so align
+       "module mc ; case (x)kZ  : gg h(); \n//c1\n kXYY :j kk();"
+       "endcase endmodule\n",
+       "module mc;\n"
+       "  case (x)\n"
+       "    kZ:   gg h ();\n"  // align
+       "    //c1\n"
+       "    kXYY: j kk ();\n"
+       "  endcase\n"
+       "endmodule\n"},
+      {// case-generate: align would add too many space, so flush-left
+       "module mc ; case (x)kZ  : gg h(); kXYYYY :j kk();"
+       "endcase endmodule\n",
+       "module mc;\n"
+       "  case (x)\n"
+       "    kZ: gg h ();\n"  // flush-left
+       "    kXYYYY: j kk ();\n"
+       "  endcase\n"
+       "endmodule\n"},
+      {// case-generate: inject spaces to induce alignment
+       "module mc ; case (x)kZ  : gg h(); kXYYYY :     j kk();"
+       "endcase endmodule\n",
+       "module mc;\n"
+       "  case (x)\n"
+       "    kZ:     gg h ();\n"  // align
+       "    kXYYYY: j kk ();\n"
+       "  endcase\n"
+       "endmodule\n"},
+      {// randcase: align (small difference from flush-left)
+       "task trc  ;randcase 10: x = 1; 1: x = 3; endcase endtask",
+       "task trc;\n"
+       "  randcase\n"
+       "    10: x = 1;\n"
+       "    1:  x = 3;\n"  // aligned
+       "  endcase\n"
+       "endtask\n"},
+      {// randcase: inferred flush-left
+       "task trc  ;randcase 10000: x = 1; 1: x = 3; endcase endtask",
+       "task trc;\n"
+       "  randcase\n"
+       "    10000: x = 1;\n"
+       "    1: x = 3;\n"
+       "  endcase\n"
+       "endtask\n"},
+      {// randcase: induce alignment
+       "task trc  ;randcase 10000: x = 1    ; 1: x = 3; endcase endtask",
+       "task trc;\n"
+       "  randcase\n"
+       "    10000: x = 1;\n"
+       "    1:     x = 3;\n"  // aligned
+       "  endcase\n"
+       "endtask\n"},
+
+      // distributions
+      {"class foo;\n"
+       "constraint c { "
+       "timer_enable dist {\n"
+       "8'hfe :=  9 , \n"
+       "12'hfff  := 1 }; "
+       "} endclass\n",
+       "class foo;\n"
+       "  constraint c {\n"
+       "    timer_enable dist {\n"
+       "      8'hfe   := 9,\n"  // only two spaces needed to align
+       "      12'hfff := 1\n"   // so align
+       "    };\n"
+       "  }\n"
+       "endclass\n"},
+      {"class foo;\n"
+       "constraint c { "
+       "timer_enable dist {\n"
+       "[ 8'h0 : 8'hfe ] :/  9 , \n"
+       "8'hff  :/ 1 }; "  // takes many spaces to align this, so...
+       "} endclass\n",
+       "class foo;\n"
+       "  constraint c {\n"
+       "    timer_enable dist {\n"
+       "      [8'h0 : 8'hfe] :/ 9,\n"
+       "      8'hff :/ 1\n"  // flush-left
+       "    };\n"
+       "  }\n"
+       "endclass\n"},
+      {"class foo;\n"
+       "constraint c { "
+       "timer_enable dist {\n"
+       "[ 8'h0 : 8'hfe ] :/  9 , \n"
+       "8'hff  :/     1 }; "  // inject excess spaces to trigger alignment
+       "} endclass\n",
+       "class foo;\n"
+       "  constraint c {\n"
+       "    timer_enable dist {\n"
+       "      [8'h0 : 8'hfe] :/ 9,\n"
+       "      8'hff          :/ 1\n"  // aligned
+       "    };\n"
+       "  }\n"
+       "endclass\n"},
+      {"class foo;\n"
+       "constraint c { "
+       "timer_enable dist {\n"
+       "//comment1\n"
+       "[ 8'h0 : 8'hfe ] :/  9 , \n"
+       "//comment2\n"
+       "8'hff  :/     1 \n"
+       "//comment3\n"
+       "}; "  // inject excess spaces to trigger alignment
+       "} endclass\n",
+       "class foo;\n"
+       "  constraint c {\n"
+       "    timer_enable dist {\n"
+       "      //comment1\n"
+       "      [8'h0 : 8'hfe] :/ 9,\n"
+       "      //comment2\n"           // align across comment
+       "      8'hff          :/ 1\n"  // aligned
+       "      //comment3\n"
+       "    };\n"
+       "  }\n"
+       "endclass\n"},
+      {"module foo ();\n"
+       "  always @(posedge bar) begin\n"
+       "    if (1==1) begin\n"
+       "      ham();\n"
+       "    end else if (2==2) begin\n"
+       "      jam();\n"
+       "    end else begin\n"
+       "      spam();\n"
+       "    end\n"
+       "  end\n"
+       "endmodule\n",
+       "module foo ();\n"
+       "  always @(posedge bar) begin\n"
+       "    if (1 == 1) begin\n"
+       "      ham();\n"
+       "    end else if (2 == 2) begin\n"
+       "      jam();\n"
+       "    end else begin\n"
+       "      spam();\n"
+       "    end\n"
+       "  end\n"
+       "endmodule\n"},
+  };
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  // Override some settings to test auto-inferred alignment.
+  style.ApplyToAllAlignmentPolicies(AlignmentPolicy::kInferUserIntent);
+
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}  // NOLINT(readability/fn_size)
+
+static constexpr FormatterTestCase kFormatterWideTestCases[] = {
+    // specify blocks
+    {"module  specify_tests ;\n"
+     "specify\n"  // empty list
+     "endspecify\n"
+     "endmodule",
+     "module specify_tests;\n"
+     "  specify\n"
+     "  endspecify\n"
+     "endmodule\n"},
+    {"module  specify_tests ;\n"
+     "specify\n"
+     "$recrem (posedge R, posedge C,\n"
+     "t1, t2);\n"
+     "endspecify\n"
+     "endmodule",
+     "module specify_tests;\n"
+     "  specify\n"
+     "    $recrem(posedge R, posedge C, t1, t2);\n"
+     "  endspecify\n"
+     "endmodule\n"},
+    {"module  specify_tests ;\n"
+     "specify\n"
+     "// TODO: add this\n"
+     "endspecify \n"
+     "endmodule",
+     "module specify_tests;\n"
+     "  specify\n"
+     "    // TODO: add this\n"
+     "  endspecify\n"
+     "endmodule\n"},
+    {"module  specify_tests ;\n"
+     "specify  \n"
+     "  //c1\n"
+     "$setup (  posedge A, posedge B,\n"
+     "t1);//c2\n"
+     " //c3\n"
+     "$hold (  posedge B , posedge A,t2);    //c4\n"
+     "\t//c5\n"
+     "endspecify\n"
+     "endmodule",
+     "module specify_tests;\n"
+     "  specify\n"
+     "    //c1\n"
+     "    $setup(posedge A, posedge B, t1);  //c2\n"
+     "    //c3\n"
+     "    $hold(posedge B, posedge A, t2);  //c4\n"
+     "    //c5\n"
+     "  endspecify\n"
+     "endmodule\n"},
+    {"module  specify_tests ;\n"
+     "specify  \n"
+     "$setup (  posedge A, posedge B,\n"
+     "t1);\n"
+     "$hold (  posedge B , posedge A,t2);\n"
+     "endspecify\n"
+     "endmodule",
+     "module specify_tests;\n"
+     "  specify\n"
+     "    $setup(posedge A, posedge B, t1);\n"
+     "    $hold(posedge B, posedge A, t2);\n"
+     "  endspecify\n"
+     "endmodule\n"},
+    {"module  specify_tests ;\n"
+     "specify  \n"
+     "  `ifdef CCC\n"
+     "$setup (  posedge A, posedge B,\n"
+     "t1);\n"
+     " `else\n"
+     "$hold (  posedge B , posedge A,t2);   \n"
+     "\t`endif\n"
+     "endspecify\n"
+     "endmodule",
+     "module specify_tests;\n"
+     "  specify\n"
+     "`ifdef CCC\n"
+     "    $setup(posedge A, posedge B, t1);\n"
+     "`else\n"
+     "    $hold(posedge B, posedge A, t2);\n"
+     "`endif\n"
+     "  endspecify\n"
+     "endmodule\n"},
+};
+
+// These tests just need a larger column limit to fit on one line.
+TEST(FormatterEndToEndTest, VerilogFormatWideTest) {
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 60;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  for (const auto &test_case : kFormatterWideTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+TEST(FormatterEndToEndTest, DisableModulePortDeclarations) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {"", ""},
+      {"\n", "\n"},
+      {"\n\n", "\n\n"},
+      {"module  m  ;\t\n"
+       "  endmodule\n",
+       "module m;\n"
+       "endmodule\n"},
+      {"module  m(   ) ;\n"
+       "  endmodule\n",
+       "module m ();\n"  // empty ports formatted compactly
+       "endmodule\n"},
+      {// for a single port, the alignment handler doesn't even consider it a
+       // group so it falls back to standard flush-left behavior.
+       "module  m   ( input     clk  )\t;\n"
+       "  endmodule\n",
+       "module m (\n"
+       "    input clk\n"
+       ");\n"
+       "endmodule\n"},
+      {// example with two ports
+       "module  m   (\n"
+       "input  clk,\n"
+       "output bar\n"
+       ")\t;\n"
+       "  endmodule\n",
+       "module m (\n"
+       "    input  clk,\n"  // indented, but internal pre-existing spacing
+                            // preserved
+       "    output bar\n"
+       ");\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.port_declarations_alignment = verible::AlignmentPolicy::kPreserve;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+TEST(FormatterEndToEndTest, DisableModuleInstantiations) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {"", ""},
+      {"\n", "\n"},
+      {"\n\n", "\n\n"},
+      {"module  m  ;\t\n"
+       "  endmodule\n",
+       "module m;\n"
+       "endmodule\n"},
+      {"module  m  ;\t\n"
+       "foo bar();"
+       "  endmodule\n",
+       "module m;\n"
+       "  foo bar ();\n"  // indentation still takes effect
+       "endmodule\n"},
+      {"module  m  ;\t\n"
+       "logic   xyz;"
+       "wire\tabc;"
+       "  endmodule\n",
+       "module m;\n"
+       "  logic xyz;\n"  // indentation still takes effect
+       "  wire  abc;\n"  // aligned too
+       "endmodule\n"},
+      {"  function f  ;\t\n"
+       " endfunction\n",
+       "function f;\n"
+       "endfunction\n"},
+      {"  function f  ;\t"
+       "foo  bar,baz; "
+       " endfunction\n",
+       "function f;\n"
+       "  foo bar, baz;\n"
+       "endfunction\n"},
+      {"  task  t  ;\t"
+       "foo  bar,baz; "
+       " endtask\n",
+       "task t;\n"
+       "  foo bar, baz;\n"
+       "endtask\n"},
+      {"module  m  ;\t\n"
+       "foo  bar(   .baz(baz)   );"
+       "  endmodule\n",
+       "module m;\n"
+       "  foo bar (.baz(baz));\n"  // indentation still takes effect
+       "endmodule\n"},
+      {"module  m  ;\t\n"
+       "foo  bar(\n"
+       "        .baz  (baz  ),\n"  // example of user-manual alignment
+       "        .blaaa(blaaa)\n"
+       ");"
+       "  endmodule\n",
+       "module m;\n"
+       "  foo bar (\n"           // indentation still takes effect
+       "      .baz  (baz  ),\n"  // named port connections preserved
+       "      .blaaa(blaaa)\n"   // named port connections preserved
+       "  );\n"                  // this indentation is fixed
+       "endmodule\n"},
+      {"module  m  ;\t\n"
+       "foo  #(   .baz(baz)   ) bar();"  // named parameters
+       "  endmodule\n",
+       "module m;\n"
+       "  foo #(.baz(baz)) bar ();\n"  // indentation still takes effect
+       "endmodule\n"},
+      {"module  m  ;\t\n"
+       "foo  #(\n"
+       "        .baz  (baz  ),\n"  // example of user-manual alignment
+       "        .blaaa(blaaa)\n"
+       ")  bar( );"
+       "  endmodule\n",
+       "module m;\n"
+       "  foo #(\n"              // indentation still takes effect
+       "      .baz  (baz  ),\n"  // named parameter arguments preserved
+       "      .blaaa(blaaa)\n"   // named parameter arguments preserved
+       "  ) bar ();\n"           // this indentation is fixed
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  // Testing preservation of spaces
+  style.named_parameter_alignment = AlignmentPolicy::kPreserve;
+  style.named_port_alignment = AlignmentPolicy::kPreserve;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+TEST(FormatterEndToEndTest, DisableTryWrapLongLines) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {"", ""},
+      {"\n", "\n"},
+      {"\n\n", "\n\n"},
+      {"module  m  ;\t\n"
+       "  endmodule\n",
+       "module m;\n"
+       "endmodule\n"},
+      {"module  m(   ) ;\n"
+       "  endmodule\n",
+       "module m ();\n"
+       "endmodule\n"},
+      {"module  m(   ) ;\n"
+       "initial assign a = b;\n"
+       "  endmodule\n",
+       "module m ();\n"
+       "  initial assign a = b;\n"
+       "endmodule\n"},
+      {"module  m(   ) ;\n"
+       "initial assign a = {never +gonna +give +you +up,\n"
+       "never + gonna +Let +you +down};\n"
+       "  endmodule\n",
+       "module m ();\n"
+       "  initial\n"
+       "    assign a = {\n"
+       "      never + gonna + give + you + up,\n"
+       "      never + gonna + Let + you + down\n"
+       "    };\n"
+       "endmodule\n"},
+      {"module  m(   ) ;\n"
+       "initial assign a = {never +gonna +give +you +up+\n"  // over 40 columns,
+                                                             // give up
+       "never + gonna +Let +you +down};\n"
+       "  endmodule\n",
+       "module m ();\n"
+       "  initial\n"
+       "    assign a = {\n"
+       "      never +gonna +give +you +up+\n"  // indented properly, but
+       "never + gonna +Let +you +down\n"       // preserved original
+       "    };\n"
+       "endmodule\n"},
+      {// The if-header is a single leaf partition, and does not fit,
+       // so its original spacing should be preserved.
+       // We deliberately insert weird spacing to show that it is preserved.
+       "function f;\n"
+       "if ((xxx.aaaa >= bbbbbbbbbbbbbbb) &&\n"
+       "      ((ccc.ddd  +  eee.ffffff * g) <=\n"
+       "       (hhhhhhhhhhhhhhh+iiiiiiiiiiiiiiiiiiii))) begin\n"
+       "end\n"
+       "endfunction\n",
+       "function f;\n"
+       "  if ((xxx.aaaa >= bbbbbbbbbbbbbbb) &&\n"  // indentation fixed
+       "      ((ccc.ddd  +  eee.ffffff * g) <=\n"
+       "       (hhhhhhhhhhhhhhh+iiiiiiiiiiiiiiiiiiii))) begin\n"
+       "  end\n"  // indentation fixed
+       "endfunction\n"},
+
+      // Make sure indentation still works with wrapping disabled,
+      // and leaf partitions fit on one line.
+      {"function void f();\n"
+       "for (int i = N; i > 0; i--) begin\n"
+       "end\n"
+       "endfunction\n",
+       "function void f();\n"
+       "  for (int i = N; i > 0; i--) begin\n"
+       "  end\n"
+       "endfunction\n"},
+      {"function void f();"
+       "if(i > 0 ) begin end "
+       "endfunction",
+       "function void f();\n"
+       "  if (i > 0) begin\n"
+       "  end\n"
+       "endfunction\n"},
+      {"function void f();"  // newlines absent from input
+       "for (int i=N; i>0; i--) begin end "
+       "endfunction",
+       "function void f();\n"
+       "  for (int i = N; i > 0; i--) begin\n"  // spacing corrected
+       "  end\n"
+       "endfunction\n"},
+      {"module m( );\n"
+       "  always_ff  @  (  posedge  (  clk  )  ) begin\n"
+       "out  <=  rst_clk  ?  0 : in  ;\n"
+       "end\n"
+       "endmodule : simple\n",
+       "module m ();\n"
+       "  always_ff @(posedge (clk)) begin\n"
+       "    out <= rst_clk ? 0 : in;\n"
+       "  end\n"
+       "endmodule : simple\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.try_wrap_long_lines = false;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+TEST(FormatterEndToEndTest, ModulePortDeclarationsIndentNotWrap) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {"", ""},
+      {"\n", "\n"},
+      {"\n\n", "\n\n"},
+      {"module  m  ;\t\n"
+       "  endmodule\n",
+       "module m;\n"
+       "endmodule\n"},
+      {"module  m(   ) ;\n"
+       "  endmodule\n",
+       "module m ();\n"  // empty ports formatted compactly
+       "endmodule\n"},
+      {// single port example
+       "module  m   ( input     clk  )\t;\n"
+       "  endmodule\n",
+       "module m (\n"
+       "  input clk\n"  // 2 spaces
+       ");\n"
+       "endmodule\n"},
+      {// example with two ports
+       "module  m   (\n"
+       "input  clk,\n"
+       "output bar\n"
+       ")\t;\n"
+       "  endmodule\n",
+       "module m (\n"
+       "  input  clk,\n"  // indented 2 spaces, and aligned
+       "  output bar\n"
+       ");\n"
+       "endmodule\n"},
+      {// interface example
+       "interface  handshake   (\n"
+       "wire req,\n"
+       "wire ack\n"
+       ")\t;\n"
+       "  endinterface\n",
+       "interface handshake (\n"
+       "  wire req,\n"  // indented 2 spaces
+       "  wire ack\n"
+       ");\n"
+       "endinterface\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  // Indent 2 spaces instead of wrapping 4 spaces.
+  style.port_declarations_indentation = IndentationStyle::kIndent;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+TEST(FormatterEndToEndTest, NamedPortConnectionsIndentNotWrap) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {"", ""},
+      {"\n", "\n"},
+      {"\n\n", "\n\n"},
+      {"module  m  ;\t\n"
+       "  endmodule\n",
+       "module m;\n"
+       "endmodule\n"},
+      {"module  m(   ) ;\n"
+       "  endmodule\n",
+       "module m ();\n"  // empty ports formatted compactly
+       "endmodule\n"},
+      {// single port example
+       "module  m ;\n"
+       "foo bar( .clk( clk ) )\t;\n"
+       "  endmodule\n",
+       "module m;\n"
+       "  foo bar (.clk(clk));\n"
+       "endmodule\n"},
+      {// two port example
+       "module  m ;\n"
+       "foo bar( .clk2( clk ),.data (data) )\t;\n"
+       "  endmodule\n",
+       "module m;\n"
+       "  foo bar (\n"
+       "    .clk2(clk),\n"  // indent only +2 spaces
+       "    .data(data)\n"
+       "  );\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  // Indent 2 spaces instead of wrapping 4 spaces.
+  style.named_port_indentation = IndentationStyle::kIndent;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+TEST(FormatterEndToEndTest, WrapEndElseStatements) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {"module foo ();\n"
+       "  always @(posedge bar) begin\n"
+       "    if (1==1) begin\n"
+       "      ham();\n"
+       "    end else if (2==2) begin\n"
+       "      jam();\n"
+       "    end else begin\n"
+       "      spam();\n"
+       "    end\n"
+       "  end\n"
+       "endmodule\n",
+       "module foo ();\n"
+       "  always @(posedge bar) begin\n"
+       "    if (1 == 1) begin\n"
+       "      ham();\n"
+       "    end\n"
+       "    else if (2 == 2) begin\n"
+       "      jam();\n"
+       "    end\n"
+       "    else begin\n"
+       "      spam();\n"
+       "    end\n"
+       "  end\n"
+       "endmodule\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.wrap_end_else_clauses = true;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+TEST(FormatterEndToEndTest, FormalParametersIndentNotWrap) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {"", ""},
+      {"\n", "\n"},
+      {"\n\n", "\n\n"},
+      {"module  m  ;\t\n"
+       "  endmodule\n",
+       "module m;\n"
+       "endmodule\n"},
+      {"module  m #(   ) ;\n"  // empty parameters
+       "  endmodule\n",
+       "module m #();\n"
+       "endmodule\n"},
+      {// single parameter example
+       "module  m   #( int W = 2)\t;\n"
+       "  endmodule\n",
+       "module m #(\n"
+       "  int W = 2\n"  // indented 2 spaces
+       ");\n"
+       "endmodule\n"},
+      {// module with two parameters
+       "module  m   #(\n"
+       "int W = 2,\n"
+       "int L = 4\n"
+       ")\t;\n"
+       "  endmodule\n",
+       "module m #(\n"
+       "  int W = 2,\n"  // indented 2 spaces
+       "  int L = 4\n"
+       ");\n"
+       "endmodule\n"},
+      {// interface with two parameters
+       "interface  m   #(\n"
+       "int W = 2,\n"
+       "int L = 4\n"
+       ")\t;\n"
+       "  endinterface\n",
+       "interface m #(\n"
+       "  int W = 2,\n"  // indented 2 spaces
+       "  int L = 4\n"
+       ");\n"
+       "endinterface\n"},
+      {// class with two parameters
+       "class  c   #(\n"
+       "int W = 2,\n"
+       "int L = 4\n"
+       ")\t;\n"
+       "  endclass\n",
+       "class c #(\n"
+       "  int W = 2,\n"  // indented 2 spaces
+       "  int L = 4\n"
+       ");\n"
+       "endclass\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  // Indent 2 spaces instead of wrapping 4 spaces.
+  style.formal_parameters_indentation = IndentationStyle::kIndent;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+TEST(FormatterEndToEndTest, NamedParametersIndentNotWrap) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {"", ""},
+      {"\n", "\n"},
+      {"\n\n", "\n\n"},
+      {"module  m  ;\t\n"
+       "  endmodule\n",
+       "module m;\n"
+       "endmodule\n"},
+      {"module  m #(   ) ;\n"  // empty parameters
+       "  endmodule\n",
+       "module m #();\n"
+       "endmodule\n"},
+      {"module  m  ;\t\n"
+       " foo #()bar();\n"
+       "  endmodule\n",
+       "module m;\n"
+       "  foo #() bar ();\n"
+       "endmodule\n"},
+      {// one named parameter
+       "module  m ;\n"
+       "foo #(.W(1)) bar();\n"
+       "  endmodule\n",
+       "module m;\n"
+       "  foo #(.W(1)) bar ();\n"
+       "endmodule\n"},
+      {// two named parameters
+       "module  m ;\n"
+       "foo #(.W(1), .L(2)) bar();\n"
+       "  endmodule\n",
+       "module m;\n"
+       "  foo #(\n"
+       "    .W(1),\n"  // indent +2 spaces only
+       "    .L(2)\n"
+       "  ) bar ();\n"
+       "endmodule\n"},
+      {// class data member with two parameters
+       "class  c  ;\n"
+       " foo_pkg::bar_t#(\n"
+       ".W(2),.L(4)"
+       ") baz;\n"
+       "  endclass\n",
+       "class c;\n"
+       "  foo_pkg::bar_t #(\n"
+       "    .W(2),\n"  // indent +2 spaces only
+       "    .L(4)\n"
+       "  ) baz;\n"
+       "endclass\n"},
+      {// typedef with two parameters
+       "typedef \n"
+       " foo_pkg::bar_t  #("
+       ".W(2),.L(4)"
+       ") baz;\n",
+       "typedef foo_pkg::bar_t#(\n"
+       "  .W(2),\n"  // indent +2 spaces only
+       "  .L(4)\n"
+       ") baz;\n"},
+  };
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  // Indent 2 spaces instead of wrapping 4 spaces.
+  style.named_parameter_indentation = IndentationStyle::kIndent;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+struct SelectLinesTestCase {
+  std::string_view input;
+  LineNumberSet lines;  // explicit set of lines to enable formatting
+  std::string_view expected;
+};
+
+// Tests that formatter honors selected line numbers.
+TEST(FormatterEndToEndTest, SelectLines) {
+  const SelectLinesTestCase kTestCases[] = {
+      {"", {}, ""},
+      {"", {{1, 2}}, ""},
+      {// expect all three lines for format
+       "  parameter    int foo_line1 =     0 ;\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n",
+       {},
+       "parameter int foo_line1 = 0;\n"
+       "parameter int foo_line2 = 0;\n"
+       "parameter int foo_line3 = 0;\n"},
+      {// expect only one line to format
+       "  parameter    int foo_line1 =     0 ;\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n",
+       {{1, 2}},
+       "parameter int foo_line1 = 0;\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n"},
+      {// expect only one line to format
+       "  parameter    int foo_line1 =     0 ;\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n",
+       {{2, 3}},
+       "  parameter    int foo_line1 =     0 ;\n"
+       "parameter int foo_line2 = 0;\n"
+       "  parameter    int foo_line3 =     0 ;\n"},
+      {// expect only one line to format
+       "  parameter    int foo_line1 =     0 ;\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n",
+       {{3, 4}},
+       "  parameter    int foo_line1 =     0 ;\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "parameter int foo_line3 = 0;\n"},
+      {// expect to format two lines
+       "  parameter    int foo_line1 =     0 ;\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n",
+       {{1, 3}},
+       "parameter int foo_line1 = 0;\n"
+       "parameter int foo_line2 = 0;\n"
+       "  parameter    int foo_line3 =     0 ;\n"},
+      {// expect to format two lines
+       "  parameter    int foo_line1 =     0 ;\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n",
+       {{2, 4}},
+       "  parameter    int foo_line1 =     0 ;\n"
+       "parameter int foo_line2 = 0;\n"
+       "parameter int foo_line3 = 0;\n"},
+      {// expect to format two lines
+       "  parameter    int foo_line1 =     0 ;\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n",
+       {{1, 2}, {3, 4}},
+       "parameter int foo_line1 = 0;\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "parameter int foo_line3 = 0;\n"},
+      {// expect to format all lines
+       "  parameter    int foo_line1 =     0 ;\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n",
+       {{1, 4}},
+       "parameter int foo_line1 = 0;\n"
+       "parameter int foo_line2 = 0;\n"
+       "parameter int foo_line3 = 0;\n"},
+      {// expect to format no lines (line numbers out of bounds)
+       "  parameter    int foo_line1 =     0 ;\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n",
+       {{4, 6}},
+       "  parameter    int foo_line1 =     0 ;\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n"},
+      {// expect to format all lines
+       "// verilog_format: on\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n"
+       "  parameter    int foo_line4 =     0 ;\n",
+       {},
+       "// verilog_format: on\n"
+       "parameter int foo_line2 = 0;\n"
+       "parameter int foo_line3 = 0;\n"
+       "parameter int foo_line4 = 0;\n"},
+      {// expect to format no lines
+       "// verilog_format: off\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n"
+       "  parameter    int foo_line4 =     0 ;\n",
+       {},
+       "// verilog_format: off\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n"
+       "  parameter    int foo_line4 =     0 ;\n"},
+      {// expect to format some lines
+       "// verilog_format: on\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n"
+       "  parameter    int foo_line4 =     0 ;\n",
+       {{3, 5}},
+       "// verilog_format: on\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "parameter int foo_line3 = 0;\n"  // disable lines 3,4
+       "parameter int foo_line4 = 0;\n"},
+      {// enable all lines, but respect format-off
+       "  parameter    int foo_line1 =     0 ;\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "// verilog_format: off\n"
+       "  parameter    int foo_line4 =     0 ;\n",
+       {{1, 5}},
+       "parameter int foo_line1 = 0;\n"
+       "parameter int foo_line2 = 0;\n"
+       "// verilog_format: off\n"
+       "  parameter    int foo_line4 =     0 ;\n"},
+      {// enable all lines, but respect format-off
+       "  parameter    int foo_line1 =     0 ;\n"
+       "// verilog_format: off\n"
+       "  parameter    int foo_line3 =     0 ;\n"
+       "// verilog_format: on\n"
+       "  parameter    int foo_line5 =     0 ;\n",
+       {{1, 6}},
+       "parameter int foo_line1 = 0;\n"
+       "// verilog_format: off\n"
+       "  parameter    int foo_line3 =     0 ;\n"
+       "// verilog_format: on\n"
+       "parameter int foo_line5 = 0;\n"},
+      {// enable all lines, but respect format-off
+       "// verilog_format: off\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n"
+       "// verilog_format: on\n"
+       "  parameter    int foo_line5 =     0 ;\n",
+       {{1, 6}},
+       "// verilog_format: off\n"
+       "  parameter    int foo_line2 =     0 ;\n"
+       "  parameter    int foo_line3 =     0 ;\n"
+       "// verilog_format: on\n"
+       "parameter int foo_line5 = 0;\n"},
+      {"module m;\n"
+       "  if (foo) begin:l1\n"
+       "    if (foo) begin:l2\n"
+       "      always_comb\n"  // normally this line and next would fit together
+       "        d<=#1ps   x_lat\t;\n"  // only format this line, 5
+       "    end : l2\n"
+       "  end : l1\n"
+       "endmodule\n",
+       {{5, 6}},
+       "module m;\n"
+       "  if (foo) begin:l1\n"
+       "    if (foo) begin:l2\n"
+       "      always_comb\n"  // incremental mode prevents joining next line
+       "        d <= #1ps x_lat;\n"  // only this line changed
+       "    end : l2\n"
+       "  end : l1\n"
+       "endmodule\n"},
+
+      // Next three test cases: one whole-file, two incremental
+      {"module m(\n"
+       "  input wire f,\n"
+       "  input  foo::bar  ggg\n"
+       ");\n"
+       "endmodule:m\n",
+       {},  // format all lines
+       "module m (\n"
+       "    input wire     f,\n"
+       "    input foo::bar ggg\n"
+       ");\n"
+       "endmodule : m\n"},
+      {"module m(\n"
+       "  input wire f,\n"
+       "  input  foo::bar  ggg\n"  // "new line", formatted incrementally
+       ");\n"
+       "endmodule:m\n",
+       {{3, 4}},  // format incrementally
+       "module m(\n"
+       "  input wire f,\n"
+       "    input  foo::bar  ggg\n"  // "new line" remains untouched
+       ");\n"
+       "endmodule:m\n"},
+      {"module m(\n"
+       "  input  wire   f,\n"  // "new line", formatted incrementally
+       "  input  foo::bar  ggg\n"
+       ");\n"
+       "endmodule:m\n",
+       {{2, 3}},  // format incrementally
+       "module m(\n"
+       "    input  wire   f,\n"  // "new line" indented, but other spaces kept
+       "  input  foo::bar  ggg\n"
+       ");\n"
+       "endmodule:m\n"},
+  };
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status = FormatVerilog(test_case.input, "<filename>", style,
+                                      stream, test_case.lines);
+    EXPECT_OK(status) << status.message() << '\n'
+                      << "Lines: " << test_case.lines;
+    EXPECT_EQ(stream.str(), test_case.expected)
+        << "code:\n"
+        << test_case.input << "\nlines: " << test_case.lines;
+  }
+}
+
+// These tests verify the mode where horizontal spacing is discarded while
+// vertical spacing is preserved.
+TEST(FormatterEndToEndTest, PreserveVSpacesOnly) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      // {input, expected},
+      // No tokens cases: still preserve vertical spacing, but not horizontal
+      {"", ""},
+      {"    ", ""},
+      {"\n", "\n"},
+      {"\n\n", "\n\n"},
+      {"  \n", "\n"},
+      {"\n  ", "\n"},
+      {"  \n  ", "\n"},
+      {"  \n  \t\t\n\t  ", "\n\n"},
+
+      // The remaining cases have at least one non-whitespace token.
+
+      // single comment
+      {"//\n", "//\n"},
+      {"//  \n", "//  \n"},  // trailing spaces inside comment untouched
+      {"\n//\n", "\n//\n"},
+      {"\n\n//\n", "\n\n//\n"},
+      {"\n//\n\n", "\n//\n\n"},
+      {"      //\n", "//\n"},  // spaces before comment discarded
+      {"   \n   //\n", "\n//\n"},
+      {"   \n   //\n  \n  ", "\n//\n\n"},  // trailing spaces discarded
+
+      // multi-comment
+      {"//\n//\n", "//\n//\n"},
+      {"\n//\n\n//\n\n", "\n//\n\n//\n\n"},
+      {"\n//\n\n//\n", "\n//\n\n//\n"},  // blank line between comments
+
+      // Module cases with token partition boundary (before 'endmodule').
+      {"module foo;endmodule\n", "module foo;\nendmodule\n"},
+      {"module foo;\nendmodule\n", "module foo;\nendmodule\n"},
+      {"module foo;\n\nendmodule\n", "module foo;\n\nendmodule\n"},
+      {"\nmodule foo;endmodule\n", "\nmodule foo;\nendmodule\n"},
+      {"\nmodule foo     ;    endmodule\n", "\nmodule foo;\nendmodule\n"},
+      {"\nmodule\nfoo\n;endmodule\n", "\nmodule foo;\nendmodule\n"},
+      {"\nmodule foo;endmodule\n\n\n", "\nmodule foo;\nendmodule\n\n\n"},
+      {"\n\n\nmodule foo;endmodule\n", "\n\n\nmodule foo;\nendmodule\n"},
+      {"\nmodule\nfoo\n;\n\n\nendmodule\n", "\nmodule foo;\n\n\nendmodule\n"},
+
+      // Module cases with one indented item, various original vertical spacing
+      {"module foo;wire w;endmodule\n", "module foo;\n  wire w;\nendmodule\n"},
+      {"  module   foo  ;wire    w  ;endmodule  \n  ",
+       "module foo;\n  wire w;\nendmodule\n"},
+      {"\nmodule\nfoo\n;\nwire\nw\n;endmodule\n\n",
+       "\nmodule foo;\n  wire w;\nendmodule\n\n"},
+      {"\n\nmodule\nfoo\n;\n\n\nwire\nw\n;\n\nendmodule\n\n",
+       "\n\nmodule foo;\n\n\n  wire w;\n\nendmodule\n\n"},
+
+      // The following cases show that some horizontal whitespace is discarded,
+      // while vertical spacing is preserved on partition boundaries.
+      {"     module  foo\t   \t;    endmodule   \n",
+       "module foo;\nendmodule\n"},
+      {"\t\n     module  foo\t\t;    endmodule   \n",
+       "\nmodule foo;\nendmodule\n"},
+
+      // Module with comments intermingled.
+      {
+          "//1\nmodule foo;//2\nwire w;//3\n//4\nendmodule\n",
+          "//1\nmodule foo;  //2\n  wire w;  //3\n  //4\nendmodule\n"
+          // TODO(fangism): whether or not //4 should be indented is
+          // questionable (in similar cases below too).
+      },
+      {// now with extra blank lines
+       "//1\n\nmodule foo;//2\n\nwire w;//3\n\n//4\n\nendmodule\n\n",
+       "//1\n\nmodule foo;  //2\n\n  wire w;  //3\n\n  //4\n\nendmodule\n\n"},
+
+      {
+          // module with comments-only in some empty blocks, properly indented
+          "  // humble module\n"
+          "  module foo (// non-port comment\n"
+          "// port comment 1\n"
+          "// port comment 2\n"
+          ");// header trailing comment\n"
+          "// item comment 1\n"
+          "// item comment 2\n"
+          "endmodule\n",
+          "// humble module\n"
+          "module foo (  // non-port comment\n"
+          "    // port comment 1\n"
+          "    // port comment 2\n"
+          ");  // header trailing comment\n"
+          "  // item comment 1\n"
+          "  // item comment 2\n"
+          "endmodule\n",
+      },
+
+      {
+          // module with comments around non-empty blocks
+          "  // humble module\n"
+          "  module foo (// non-port comment\n"
+          "// port comment 1\n"
+          "input   logic   f  \n"
+          "// port comment 2\n"
+          ");// header trailing comment\n"
+          "// item comment 1\n"
+          "wire w ; \n"
+          "// item comment 2\n"
+          "endmodule\n",
+          "// humble module\n"
+          "module foo (  // non-port comment\n"
+          "    // port comment 1\n"
+          "    input logic f\n"
+          "    // port comment 2\n"
+          ");  // header trailing comment\n"
+          "  // item comment 1\n"
+          "  wire w;\n"
+          "  // item comment 2\n"
+          "endmodule\n",
+      },
+  };
+  FormatStyle style;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+static constexpr FormatterTestCase kFormatterTestCasesElseStatements[] = {
+    {"module m;"
+     "task static t; if (r == t) a.b(c); else d.e(f); endtask;"
+     "endmodule",
+     "module m;\n"
+     "  task static t;\n"
+     "    if (r == t) a.b(c);\n"
+     "    else d.e(f);\n"
+     "  endtask\n"
+     "  ;\n"  // possibly unintended stray ';'
+     "endmodule\n"},
+    {"module m;"
+     "task static t; if (r == t) begin a.b(c); end else begin d.e(f); end "
+     "endtask;"
+     "endmodule",
+     "module m;\n"
+     "  task static t;\n"
+     "    if (r == t) begin\n"
+     "      a.b(c);\n"
+     "    end else begin\n"
+     "      d.e(f);\n"
+     "    end\n"
+     "  endtask\n"
+     "  ;\n"  // stray ';'
+     "endmodule\n"},
+    {"module m;initial begin if(a==b)"
+     "c.d(e);else\n"
+     "f.g(h);end endmodule",
+     "module m;\n"
+     "  initial begin\n"
+     "    if (a == b) c.d(e);\n"
+     "    else f.g(h);\n"
+     "  end\n"
+     "endmodule\n"},
+    {"   module m;  always_comb    begin     \n"
+     "        if      ( a   ) b =  16'hdead    ; \n"
+     "  else if (   c     )  d= 16 'hbeef  ;   \n"
+     "     else        if (e) f=16'hca_fe ;     \n"
+     "end   \n endmodule\n",
+     "module m;\n"
+     "  always_comb begin\n"
+     "    if (a) b = 16'hdead;\n"
+     "    else if (c) d = 16'hbeef;\n"
+     "    else if (e) f = 16'hca_fe;\n"
+     "  end\n"
+     "endmodule\n"},
+    {"module foo();\n"
+     "always_comb begin\n"
+     "value = function_name(.long_parameter(8'hA), .parameter_three(foobar));\n"
+     "end\n"
+     "endmodule : foo\n",
+     "module foo ();\n"
+     "  always_comb begin\n"
+     "    value = function_name(\n"
+     "      .long_parameter(8'hA),\n"
+     "      .parameter_three(foobar)\n"
+     "    );\n"
+     "  end\n"
+     "endmodule : foo\n"},
+    {"module foo();\n"
+     "always_comb begin\n"
+     "value = function_name(.a(1), .b(2));\n"
+     "end\n"
+     "endmodule : foo\n",
+     "module foo ();\n"
+     "  always_comb begin\n"
+     "    value = function_name(.a(1), .b(2));\n"
+     "  end\n"
+     "endmodule : foo\n"},
+    {"module foo ();\n"
+     "always_comb begin\n"
+     "value = function_name(8'hA, foobar, signal_1234); end\n"
+     "always_comb begin\n"
+     "value = function_name(8'hA, foobar); end\n"
+     "endmodule : foo\n",
+     "module foo ();\n"
+     "  always_comb begin\n"
+     "    value = function_name(8'hA, foobar,\n"
+     "                          signal_1234);\n"
+     "  end\n"
+     "  always_comb begin\n"
+     "    value = function_name(8'hA, foobar);\n"
+     "  end\n"
+     "endmodule : foo\n"},
+    {"module foo ();\n"
+     "always_comb begin\n"
+     "value = function_name(8'hA, foobar, signal_1234);\n"
+     "value = function_name(8'hA, foobar, signal_1234); end\n"
+     "endmodule : foo\n",
+     "module foo ();\n"
+     "  always_comb begin\n"
+     "    value = function_name(8'hA, foobar,\n"
+     "                          signal_1234);\n"
+     "    value = function_name(8'hA, foobar,\n"
+     "                          signal_1234);\n"
+     "  end\n"
+     "endmodule : foo\n"},
+    {"always_comb begin\n"
+     "value = "
+     "f(long_parameter_exceeding_col_limit, foo, bar); end\n",
+     "always_comb begin\n"
+     "  value = f(\n"
+     "    long_parameter_exceeding_col_limit,\n"
+     "    foo,\n"
+     "    bar\n"
+     "  );\n"
+     "end\n"},
+    {"module foo();\n"
+     "always_comb begin\n"
+     "value = function_name(8'hA, .parameter_three(foobar));\n"
+     "end\n"
+     "endmodule : foo\n",
+     "module foo ();\n"
+     "  always_comb begin\n"
+     "    value = function_name(\n"
+     "      8'hA,\n"
+     "      .parameter_three(foobar)\n"
+     "    );\n"
+     "  end\n"
+     "endmodule : foo\n"},
+    {"module foo ();\n"
+     "always_comb begin\n"
+     "value = function_name(8'hA, 8'hB, 8'hC, .parameter_four(foo), "
+     ".par_five(bar));\n"
+     "end\n"
+     "endmodule : foo\n",
+     "module foo ();\n"
+     "  always_comb begin\n"
+     "    value = function_name(\n"
+     "      8'hA,\n"
+     "      8'hB,\n"
+     "      8'hC,\n"
+     "      .parameter_four(foo),\n"
+     "      .par_five(bar)\n"
+     "    );\n"
+     "  end\n"
+     "endmodule : foo\n"},
+    {"class dv_base_mem; function void configure(); \nbegin\n"
+     "value = func(8'hA, foobar, signal_1234);\n"
+     "value = new(8'hA, foobar, signal_1234); end\n"
+     "endfunction : configure endclass\n",
+     "class dv_base_mem;\n"
+     "  function void configure();\n"
+     "    begin\n"
+     "      value = func(8'hA, foobar,\n"
+     "                   signal_1234);\n"
+     "      value = new(8'hA, foobar,\n"
+     "                  signal_1234);\n"
+     "    end\n"
+     "  endfunction : configure\n"
+     "endclass\n"},
+    {"module m; initial begin\n"
+     "        if     (a||b)        c         = 1'b1;\n"
+     "d =        1'b1; if         (e)\n"
+     "begin f = 1'b0; end else begin\n"
+     "    g = h;\n"
+     "        end \n"
+     " i = 1'b1; "
+     "end endmodule\n",
+     "module m;\n"
+     "  initial begin\n"
+     "    if (a || b) c = 1'b1;\n"
+     "    d = 1'b1;\n"
+     "    if (e) begin\n"
+     "      f = 1'b0;\n"
+     "    end else begin\n"
+     "      g = h;\n"
+     "    end\n"
+     "    i = 1'b1;\n"
+     "  end\n"
+     "endmodule\n"},
+    {"module m; initial begin\n"
+     "if (a&&b&&c) begin\n"
+     "         d         = 1'b1;\n"
+     "     if (e) begin\n"
+     "   f = ff;\n"
+     "       end  else   if  (    g  )   begin\n"
+     "     h = hh;\n"
+     "end else if (i) begin\n"
+     "    j   =   (kk == ll) ? mm :\n"
+     "      gg;\n"
+     "   end     else   if    (  qq )  begin\n"
+     "    if      (  xx   ||yy        ) begin    d0 = 1'b0;   d1   =       "
+     "1'b1;\n"
+     "  end else if (oo) begin aa =    bb; cc      = dd;"
+     "         if (zz) zx = xz; else ba = ab;"
+     "    end   else  \n begin      vv   =  tt  ;  \n"
+     "   end   end "
+     "end \n  else if   (uu)\nbegin\n\na=b;if (aa)   b =    c;\n"
+     "\nelse    if    \n (bb) \n\nc        =d    ;\n\n\n\n\n    "
+     "      else         e\n\n   =   h;\n\n"
+     "end \n  else    \n  begin if(x)y=a;else\nbegin\n"
+     "\n\n\na=y; if (a)       b     = c;\n\n\n\nelse\n\n\nd=e;end \n"
+     "end\n"
+     "end endmodule\n",
+     "module m;\n"
+     "  initial begin\n"
+     "    if (a && b && c) begin\n"
+     "      d = 1'b1;\n"
+     "      if (e) begin\n"
+     "        f = ff;\n"
+     "      end else if (g) begin\n"
+     "        h = hh;\n"
+     "      end else if (i) begin\n"
+     "        j = (kk == ll) ? mm : gg;\n"
+     "      end else if (qq) begin\n"
+     "        if (xx || yy) begin\n"
+     "          d0 = 1'b0;\n"
+     "          d1 = 1'b1;\n"
+     "        end else if (oo) begin\n"
+     "          aa = bb;\n"
+     "          cc = dd;\n"
+     "          if (zz) zx = xz;\n"
+     "          else ba = ab;\n"
+     "        end else begin\n"
+     "          vv = tt;\n"
+     "        end\n"
+     "      end\n"
+     "    end else if (uu) begin\n\n"
+     "      a = b;\n"
+     "      if (aa) b = c;\n\n"
+     "      else if (bb) c = d;\n\n\n\n\n"
+     "      else e = h;\n\n"
+     "    end else begin\n"
+     "      if (x) y = a;\n"
+     "      else begin\n\n\n\n"
+     "        a = y;\n"
+     "        if (a) b = c;\n\n\n\n"
+     "        else d = e;\n"
+     "      end\n"
+     "    end\n"
+     "  end\n"
+     "endmodule\n"}};
+
+TEST(FormatterEndToEndTest, FormatElseStatements) {
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  for (const auto &test_case : kFormatterTestCasesElseStatements) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+TEST(FormatterEndToEndTest, ConstraintExpressions) {
+  static constexpr FormatterTestCase kTestCases[] = {
+      {"", ""},
+
+      // class members
+      {"class Foo; constraint if_c { if (zzzzzzzzzzzzzzzzzzzzz)"
+       "{ soft xxxxxxxxxxxxxxxxxxxxxx == yyyyyyyyyyyyyyyyyyy; } } endclass",
+       "class Foo;\n"
+       "  constraint if_c {\n"
+       "    if (zzzzzzzzzzzzzzzzzzzzz) {\n"
+       "      soft xxxxxxxxxxxxxxxxxxxxxx == yyyyyyyyyyyyyyyyyyy;\n"
+       "    }\n"
+       "  }\n"
+       "endclass\n"},
+
+      // constraints with if-constraint expressions
+      {"constraint xx { if (a) b; }\n", "constraint xx {if (a) b;}\n"},
+
+      {"constraint xx { if (a) {b;} }\n",
+       "constraint xx {\n"
+       "  if (a) {\n"
+       "    b;\n"
+       "  }\n"
+       "}\n"},
+
+      // multi item constraint
+      {"constraint yy { a == b;c==d;}",
+       "constraint yy {\n"
+       "  a == b;\n"
+       "  c == d;\n"
+       "}\n"},
+
+      // one-line constraints
+      {"constraint only_vec_instr_c {soft only_vec_instr == 0;}",
+       "constraint only_vec_instr_c {soft only_vec_instr == 0;}\n"},
+
+      {"constraint\nnum_trans_c\n\n\n{\n\n\nnum_trans inside{[800:1000]};}",
+       "constraint num_trans_c {num_trans inside {[800 : 1000]};}\n"},
+
+      // if-vs-concatenation expression
+      {"constraint c_operation{  if(fixed_operation_en){"
+       "aes_operation == fixed_operation"
+       ";}}",
+       "constraint c_operation {\n"
+       "  if (fixed_operation_en) {\n"
+       "    aes_operation == fixed_operation;\n"
+       "  }\n"
+       "}\n"},
+
+      {"constraint c_operation{  if(fixed_operation_en){"
+       "aes_operation == fixed_operation"
+       "};}",
+       "constraint c_operation {\n"
+       "  if (fixed_operation_en)\n"
+       "  {aes_operation == fixed_operation};\n"
+       "}\n"},
+
+      // concatenation expression
+      {"constraint c_iv {if (fixed_iv_en) {aes_iv == fixed_iv};}",
+       "constraint c_iv {\n"
+       "  if (fixed_iv_en)\n"
+       "  {aes_iv == fixed_iv};\n"
+       "}\n"},
+
+      // looooong test
+      {"constraint xx {"
+       "if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)"
+       "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=="
+       "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;"
+       "ccccccccccccccccccccccc==dddddddddddddddddddddd;}",
+       "constraint xx {\n"
+       "  if (aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)\n"
+       "  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa == "
+       "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb;\n"
+       "  ccccccccccccccccccccccc == dddddddddddddddddddddd;\n"
+       "}\n"},
+  };
+  FormatStyle style;
+  style.column_limit =
+      100;  // smaller column_limit forces expansion of constraint blocks
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.port_declarations_alignment = verible::AlignmentPolicy::kPreserve;
+  for (const auto &test_case : kTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+static constexpr FormatterTestCase kFormatterTestCasesEnumDeclarations[] = {
+    // Inferring user intent: not too many spaces to be added: align.
+    {"typedef enum { kA=1, kAB=2, kABC=3} x;",
+     "typedef enum {\n"
+     "  kA   = 1,\n"
+     "  kAB  = 2,\n"
+     "  kABC = 3\n} x;\n"},
+
+    // Lots of spaces would've to be be added - keep flush
+    {"typedef enum { kA=1, kAB=2, kABCDEFGHIJKLMN=3} x;",
+     "typedef enum {\n"
+     "  kA = 1,\n"
+     "  kAB = 2,\n"
+     "  kABCDEFGHIJKLMN = 3\n} x;\n"},
+
+    // Source spaces indicate alignment wish.
+    {"typedef enum { kA     =1, kAB=2, kABCDEFGHIJKLMN=3} x;",
+     "typedef enum {\n"
+     "  kA              = 1,\n"
+     "  kAB             = 2,\n"
+     "  kABCDEFGHIJKLMN = 3\n} x;\n"},
+
+    // An empty line groups into several sections, to be aligned independently
+    {"typedef enum { kA=1, kAB=2, \n\n kABC=3} x;",
+     "typedef enum {\n"
+     "  kA  = 1,\n"
+     "  kAB = 2,\n"
+     "\n"
+     "  kABC = 3\n} x;\n"},
+
+    // Lines with comments don't interrupt alignment
+    {"typedef enum { kA=1,\n"
+     "// hello world\n"
+     "kAB=2, kABC=3} x;",
+     "typedef enum {\n"
+     "  kA   = 1,\n"
+     "  // hello world\n"
+     "  kAB  = 2,\n"
+     "  kABC = 3\n} x;\n"},
+
+    // Generally, comment locations are preserved, and full line comments
+    // indented to enum name level.
+    {"typedef enum { kA=1,// value kA\n"
+     "// hello world\n"
+     "kAB=2,// value kAB\n"
+     "kABC=3// value kABC\n"
+     "} x;",
+     "typedef enum {\n"
+     "  kA   = 1,  // value kA\n"
+     "  // hello world\n"
+     "  kAB  = 2,  // value kAB\n"
+     "  kABC = 3   // value kABC"
+     "\n} x;\n"},
+
+    {"typedef enum { kA=1,// value kA\n"
+     "kAB=2,\n"
+     "kABC=3// value kABC\n"
+     "} x;",
+     "typedef enum {\n"
+     "  kA   = 1,  // value kA\n"
+     "  kAB  = 2,\n"
+     "  kABC = 3   // value kABC"
+     "\n} x;\n"},
+
+    // Numeric constants are currently flushed left, but maybe todo
+    // align right in the future ?
+    {"typedef enum { kA=1, kAB=10, kABC=100} x;",
+     "typedef enum {\n"
+     "  kA   = 1,\n"
+     "  kAB  = 10,\n"
+     "  kABC = 100\n} x;\n"},
+};
+
+TEST(FormatterEndToEndTest, FormatAlignEnumDeclarations) {
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.enum_assignment_statement_alignment = AlignmentPolicy::kInferUserIntent;
+  for (const auto &test_case : kFormatterTestCasesEnumDeclarations) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+TEST(FormatterEndToEndTest, DiagnosticShowFullTree) {
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  for (const auto &test_case : kDiagnosticFormatterTestCases) {
+    std::ostringstream stream, debug_stream;
+    ExecutionControl control;
+    control.stream = &debug_stream;
+    control.show_token_partition_tree = true;
+    const auto status = FormatVerilog(test_case.input, "<filename>", style,
+                                      stream, kEnableAllLines, control);
+    EXPECT_EQ(status.code(), StatusCode::kCancelled);
+    EXPECT_TRUE(
+        absl::StartsWith(debug_stream.str(), "Full token partition tree"));
+  }
+}
+
+TEST(FormatterEndToEndTest, DiagnosticLargestPartitions) {
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  for (const auto &test_case : kDiagnosticFormatterTestCases) {
+    std::ostringstream stream, debug_stream;
+    ExecutionControl control;
+    control.stream = &debug_stream;
+    control.show_largest_token_partitions = 2;
+    const auto status = FormatVerilog(test_case.input, "<filename>", style,
+                                      stream, kEnableAllLines, control);
+    EXPECT_EQ(status.code(), StatusCode::kCancelled);
+    EXPECT_TRUE(absl::StartsWith(debug_stream.str(), "Showing the "))
+        << "got: " << debug_stream.str();
+  }
+}
+
+TEST(FormatterEndToEndTest, DiagnosticEquallyOptimalWrappings) {
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  for (const auto &test_case : kDiagnosticFormatterTestCases) {
+    std::ostringstream stream, debug_stream;
+    ExecutionControl control;
+    control.stream = &debug_stream;
+    control.show_equally_optimal_wrappings = true;
+    const auto status = FormatVerilog(test_case.input, "<filename>", style,
+                                      stream, kEnableAllLines, control);
+    EXPECT_OK(status) << status.message();
+    if (!debug_stream.str().empty()) {
+      EXPECT_TRUE(absl::StartsWith(debug_stream.str(), "Showing the "))
+          << "got: " << debug_stream.str();
+      // Cannot guarantee among unit tests that there will be >1 solution.
+    }
+  }
+}
+
+// Test that hitting search space limit results in correct error status.
+TEST(FormatterEndToEndTest, UnfinishedLineWrapSearching) {
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+
+  const std::string_view code("parameter int x = 1+1;\n");
+
+  std::ostringstream stream, debug_stream;
+  ExecutionControl control;
+  control.max_search_states = 2;  // Cause search to abort early.
+  control.stream = &debug_stream;
+  const auto status = FormatVerilog(code, "<filename>", style, stream,
+                                    kEnableAllLines, control);
+  EXPECT_EQ(status.code(), StatusCode::kResourceExhausted);
+  EXPECT_TRUE(absl::StartsWith(status.message(), "***"));
+}
+
+static constexpr FormatterTestCase kOnelineFormatBaselineTestCases[] = {
+    // Reference - following test cases should not be affected by the switch
+    {// Minimal useful case
+     "covergroup c @ (posedge clk); coverpoint a; endgroup\n",
+     "covergroup c @(posedge clk);\n"
+     "  coverpoint a;\n"
+     "endgroup\n"},
+    {// Multiple coverpoints
+     "covergroup foo @(posedge clk); coverpoint a; coverpoint b; "
+     "coverpoint c; coverpoint d; endgroup\n",
+     "covergroup foo @(posedge clk);\n"
+     "  coverpoint a;\n"
+     "  coverpoint b;\n"
+     "  coverpoint c;\n"
+     "  coverpoint d;\n"
+     "endgroup\n"},
+    {// Multiple bins
+     "covergroup memory @ (posedge ce); address  :coverpoint addr {"
+     "bins low={LOW}; bins high={HIGH};} endgroup\n",
+     "covergroup memory @(posedge ce);\n"
+     "  address: coverpoint addr {\n"
+     "    bins low = {LOW};\n"
+     "    bins high = {HIGH};\n"
+     "  }\n"
+     "endgroup\n"},
+    {// Multiple bins with multiple elements
+     "covergroup memory @ (posedge ce); address  :coverpoint addr {"
+     "bins low={0,127}; bins high={128,255};} endgroup\n",
+     "covergroup memory @(posedge ce);\n"
+     "  address: coverpoint addr {\n"
+     "    bins low = {0, 127};\n"
+     "    bins high = {128, 255};\n"
+     "  }\n"
+     "endgroup\n"},
+};
+
+// Tests that constructs that could be formatted as one-liners are formatted
+// correctly. This is the baseline test with default style, test cases should
+// not be affected by the setting.
+TEST(FormatterEndToEndTest, OnelineFormatBaselineTest) {
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.expand_coverpoints = false;
+  for (const auto &test_case : kOnelineFormatBaselineTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+  // Test again with the switch, should not affect formatting
+  style.expand_coverpoints = true;
+  for (const auto &test_case : kOnelineFormatBaselineTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Following two test sets are affected by the expand_coverponits switch
+// They should contain corresponding test cases
+static constexpr FormatterTestCase kOnelineFormatReferenceTestCases[] = {
+    {// Coverpoint that could fit on one line
+     "covergroup memory @ (posedge ce); a :coverpoint d {"
+     "bins l={0};} endgroup\n",
+     "covergroup memory @(posedge ce);\n"
+     "  a: coverpoint d {bins l = {0};}\n"
+     "endgroup\n"},
+    {// Fit with a reference
+     "covergroup memory @ (posedge ce); a :coverpoint d {"
+     "bins l={LOW};} endgroup\n",
+     "covergroup memory @(posedge ce);\n"
+     "  a: coverpoint d {bins l = {LOW};}\n"
+     "endgroup\n"},
+    {// Fit with multiple elements
+     "covergroup memory @ (posedge ce); a :coverpoint d {"
+     "bins l={0,8};} endgroup\n",
+     "covergroup memory @(posedge ce);\n"
+     "  a: coverpoint d {bins l = {0, 8};}\n"
+     "endgroup\n"},
+};
+
+static constexpr FormatterTestCase kOnelineFormatExpandTestCases[] = {
+    {// Coverpoint that could fit on one line
+     "covergroup memory @ (posedge ce); a :coverpoint d {"
+     "bins l={0};} endgroup\n",
+     "covergroup memory @(posedge ce);\n"
+     "  a: coverpoint d {\n"
+     "    bins l = {0};\n"
+     "  }\n"
+     "endgroup\n"},
+    {// Fit with a reference
+     "covergroup memory @ (posedge ce); a :coverpoint d {"
+     "bins l={LOW};} endgroup\n",
+     "covergroup memory @(posedge ce);\n"
+     "  a: coverpoint d {\n"
+     "    bins l = {LOW};\n"
+     "  }\n"
+     "endgroup\n"},
+    {// Fit with multiple elements
+     "covergroup memory @ (posedge ce); a :coverpoint d {"
+     "bins l={0,8};} endgroup\n",
+     "covergroup memory @(posedge ce);\n"
+     "  a: coverpoint d {\n"
+     "    bins l = {0, 8};\n"
+     "  }\n"
+     "endgroup\n"},
+};
+
+TEST(FormatterEndToEndTest, OnelineFormatReferenceTest) {
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.expand_coverpoints = false;
+
+  for (const auto &test_case : kOnelineFormatReferenceTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Tests that constructs that could be formatted as one-liners are expanded
+// correctly. This is the baseline test with default style
+TEST(FormatterEndToEndTest, OnelineFormatExpandTest) {
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.expand_coverpoints = true;
+
+  for (const auto &test_case : kOnelineFormatExpandTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+struct DimensionsAlignmentTestCase {
+  std::string_view input;
+  std::string_view expected[4];
+};
+
+static constexpr DimensionsAlignmentTestCase
+    kPortDeclarationDimensionsAlignmentTestCases[] = {
+        {"import \"DPI-C\" context function void func(\n"
+         "input bit foo,\n"
+         "input bit [2] foobar,\n"
+         "input bit [24:16] bar,\n"
+         "input bit [2:0][31:0] baz,\n"
+         "input bit [4][24:0][16:0] foobarbaz[],\n"
+         "input bit [FOOBAZ][31:24] qux[16],\n"
+         "input bit [16] quux[8:2][16][32],\n"
+         "output bit [2:0][2:0][2:0] quuz[8][16:12]\n"
+         ");\n",
+         {
+             "import \"DPI-C\" context function void func(\n"
+             "  input  bit                       foo,\n"
+             "  input  bit [     2]              foobar,\n"
+             "  input  bit [ 24:16]              bar,\n"
+             "  input  bit [   2:0][ 31:0]       baz,\n"
+             "  input  bit [     4][ 24:0][16:0] foobarbaz[   ],\n"
+             "  input  bit [FOOBAZ][31:24]       qux      [ 16],\n"
+             "  input  bit [    16]              quux     [8:2][   16][32],\n"
+             "  output bit [   2:0][  2:0][ 2:0] quuz     [  8][16:12]\n"
+             ");\n",
+             "import \"DPI-C\" context function void func(\n"
+             "  input  bit                       foo,\n"
+             "  input  bit [     2]              foobar,\n"
+             "  input  bit [ 24:16]              bar,\n"
+             "  input  bit [   2:0][ 31:0]       baz,\n"
+             "  input  bit [     4][ 24:0][16:0] foobarbaz         [     ],\n"
+             "  input  bit [FOOBAZ][31:24]       qux               [   16],\n"
+             "  input  bit [    16]              quux     [8:2][16][   32],\n"
+             "  output bit [   2:0][  2:0][ 2:0] quuz          [ 8][16:12]\n"
+             ");\n",
+             "import \"DPI-C\" context function void func(\n"
+             "  input  bit                      foo,\n"
+             "  input  bit              [    2] foobar,\n"
+             "  input  bit              [24:16] bar,\n"
+             "  input  bit      [   2:0][ 31:0] baz,\n"
+             "  input  bit [  4][  24:0][ 16:0] foobarbaz[   ],\n"
+             "  input  bit      [FOOBAZ][31:24] qux      [ 16],\n"
+             "  input  bit              [   16] quux     [8:2][   16][32],\n"
+             "  output bit [2:0][   2:0][  2:0] quuz     [  8][16:12]\n"
+             ");\n",
+             "import \"DPI-C\" context function void func(\n"
+             "  input  bit                      foo,\n"
+             "  input  bit              [    2] foobar,\n"
+             "  input  bit              [24:16] bar,\n"
+             "  input  bit      [   2:0][ 31:0] baz,\n"
+             "  input  bit [  4][  24:0][ 16:0] foobarbaz         [     ],\n"
+             "  input  bit      [FOOBAZ][31:24] qux               [   16],\n"
+             "  input  bit              [   16] quux     [8:2][16][   32],\n"
+             "  output bit [2:0][   2:0][  2:0] quuz          [ 8][16:12]\n"
+             ");\n",
+         }},
+        {"module m(\n"
+         "output bit [2:0][2:0][2:0] quuz[8][16:12],\n"
+         "input bit [16] quux[8:2][16][32],\n"
+         "input bit [FOOBAZ][31:24] qux[16],\n"
+         "input bit [4][24:0][16:0] foobaz[],\n"
+         "input bit [2:0][31:0] baz,\n"
+         "input bit [24:16] bar,\n"
+         "input bit [2] foobar,\n"
+         "input bit foo\n"
+         "); endmodule:m\n",
+         {
+             "module m (\n"
+             "    output bit [   2:0][  2:0][ 2:0] quuz  [  8][16:12],\n"
+             "    input  bit [    16]              quux  [8:2][   16][32],\n"
+             "    input  bit [FOOBAZ][31:24]       qux   [ 16],\n"
+             "    input  bit [     4][ 24:0][16:0] foobaz[   ],\n"
+             "    input  bit [   2:0][ 31:0]       baz,\n"
+             "    input  bit [ 24:16]              bar,\n"
+             "    input  bit [     2]              foobar,\n"
+             "    input  bit                       foo\n"
+             ");\n"
+             "endmodule : m\n",
+             "module m (\n"
+             "    output bit [   2:0][  2:0][ 2:0] quuz       [ 8][16:12],\n"
+             "    input  bit [    16]              quux  [8:2][16][   32],\n"
+             "    input  bit [FOOBAZ][31:24]       qux            [   16],\n"
+             "    input  bit [     4][ 24:0][16:0] foobaz         [     ],\n"
+             "    input  bit [   2:0][ 31:0]       baz,\n"
+             "    input  bit [ 24:16]              bar,\n"
+             "    input  bit [     2]              foobar,\n"
+             "    input  bit                       foo\n"
+             ");\n"
+             "endmodule : m\n",
+             "module m (\n"
+             "    output bit [2:0][   2:0][  2:0] quuz  [  8][16:12],\n"
+             "    input  bit              [   16] quux  [8:2][   16][32],\n"
+             "    input  bit      [FOOBAZ][31:24] qux   [ 16],\n"
+             "    input  bit [  4][  24:0][ 16:0] foobaz[   ],\n"
+             "    input  bit      [   2:0][ 31:0] baz,\n"
+             "    input  bit              [24:16] bar,\n"
+             "    input  bit              [    2] foobar,\n"
+             "    input  bit                      foo\n"
+             ");\n"
+             "endmodule : m\n",
+             "module m (\n"
+             "    output bit [2:0][   2:0][  2:0] quuz       [ 8][16:12],\n"
+             "    input  bit              [   16] quux  [8:2][16][   32],\n"
+             "    input  bit      [FOOBAZ][31:24] qux            [   16],\n"
+             "    input  bit [  4][  24:0][ 16:0] foobaz         [     ],\n"
+             "    input  bit      [   2:0][ 31:0] baz,\n"
+             "    input  bit              [24:16] bar,\n"
+             "    input  bit              [    2] foobar,\n"
+             "    input  bit                      foo\n"
+             ");\n"
+             "endmodule : m\n",
+         }},
+};
+
+TEST(FormatterEndToEndTest, PortDeclarationDimensionsAlignmentTest) {
+  FormatStyle style;
+  style.column_limit = 64;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+
+  // All combinations of port_declaration_right_align_{un,}packed_dimensions
+  static const bool right_align_combinations[][2] = {
+      {false, false}, {false, true}, {true, false}, {true, true}};
+
+  for (const auto &test_case : kPortDeclarationDimensionsAlignmentTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    size_t expected_index = 0;
+    for (const auto &right_align : right_align_combinations) {
+      VLOG(1) << "style variant:\n"
+              << "port_declarations_right_align_packed_dimensions: "
+              << right_align[0] << "\n"
+              << "port_declarations_right_align_unpacked_dimensions: "
+              << right_align[1] << "\n";
+      style.port_declarations_right_align_packed_dimensions = right_align[0];
+      style.port_declarations_right_align_unpacked_dimensions = right_align[1];
+
+      std::ostringstream stream;
+
+      const auto status =
+          FormatVerilog(test_case.input, "<filename>", style, stream);
+      // Require these test cases to be valid.
+      EXPECT_OK(status) << status.message();
+      EXPECT_EQ(stream.str(), test_case.expected[expected_index++])
+          << "code:\n"
+          << test_case.input;
+    }
+  }
+}
+
+// TODO(fangism): directed tests using style variations
+
+static constexpr FormatterTestCase kNestedFunctionsTestCases40ColumnsLimit[] = {
+    {"module foo;"
+     "`uvm_info(`gfn, $sformatf(\n"
+     "\"\\n  base_vseq: generate %0d pulse in channel %0d\", cfg.num_pulses, "
+     "i), UVM_DEBUG)\n"
+     "endmodule",
+     "module foo;\n"
+     "  `uvm_info(\n"
+     "      `gfn,\n"
+     "      $sformatf(\n"
+     "          \"\\n  base_vseq: generate %0d pulse in channel %0d\",\n"
+     "          cfg.num_pulses, i), UVM_DEBUG)\n"
+     "endmodule\n"},
+    {"module foo;`uvm_info(`gfn, $sformatf("
+     "\"\\n\\n\\t ----| STARTING AES MAIN SEQUENCE |----\\n %s\","
+     "cfg.convert2string()), UVM_LOW)\n"
+     "endmodule",
+     "module foo;\n"
+     "  `uvm_info(\n"
+     "      `gfn,\n"
+     "      $sformatf(\n"
+     "          \"\\n\\n\\t ----| STARTING AES MAIN SEQUENCE |----\\n %s\",\n"
+     "          cfg.convert2string()),\n"
+     "      UVM_LOW)\n"  // FIXME: Wrapped by SearchLineWraps
+     "endmodule\n"},
+};
+
+TEST(FormatterEndToEndTest, FormatNestedFunctionsTestCases40ColumnsLimit) {
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+
+  for (const auto &test_case : kNestedFunctionsTestCases40ColumnsLimit) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+static constexpr FormatterTestCase kNestedFunctionsTestCases60ColumnsLimit[] = {
+    {"module foo;"
+     "`uvm_info(`gfn, $sformatf(\n"
+     "\"\\n  base_vseq: generate %0d pulse in channel %0d\", cfg.num_pulses, "
+     "i), UVM_DEBUG)\n"
+     "endmodule",
+     "module foo;\n"
+     "  `uvm_info(\n"
+     "      `gfn,\n"
+     "      $sformatf(\n"
+     "          \"\\n  base_vseq: generate %0d pulse in channel %0d\",\n"
+     "          cfg.num_pulses, i), UVM_DEBUG)\n"
+     "endmodule\n"},
+    {"module foo;`uvm_info(`gfn, $sformatf("
+     "\"\\n\\n\\t ----| STARTING AES MAIN SEQUENCE |----\\n %s\","
+     "cfg.convert2string()), UVM_LOW)\n"
+     "endmodule",
+     "module foo;\n"
+     "  `uvm_info(\n"
+     "      `gfn,\n"
+     "      $sformatf(\n"
+     "          \"\\n\\n\\t ----| STARTING AES MAIN SEQUENCE |----\\n %s\",\n"
+     "          cfg.convert2string()), UVM_LOW)\n"
+     "endmodule\n"},
+};
+
+TEST(FormatterEndToEndTest, FormatNestedFunctionsTestCases60ColumnsLimit) {
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 60;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+
+  for (const auto &test_case : kNestedFunctionsTestCases60ColumnsLimit) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+static constexpr FormatterTestCase kNestedFunctionsTestCases80ColumnsLimit[] = {
+    {"module foo;"
+     "`uvm_info(`gfn, $sformatf(\n"
+     "\"\\n  base_vseq: generate %0d pulse in channel %0d\", cfg.num_pulses, "
+     "i), UVM_DEBUG)\n"
+     "endmodule",
+     "module foo;\n"
+     "  `uvm_info(`gfn, $sformatf(\"\\n  base_vseq: generate %0d pulse in "
+     "channel %0d\",\n"
+     "                            cfg.num_pulses, i), UVM_DEBUG)\n"
+     "endmodule\n"},
+    {"module foo;`uvm_info(`gfn, $sformatf("
+     "\"\\n\\n\\t ----| STARTING AES MAIN SEQUENCE |----\\n %s\","
+     "cfg.convert2string()), UVM_LOW)\n"
+     "endmodule",
+     "module foo;\n"
+     "  `uvm_info(`gfn, $sformatf(\n"
+     "                      \"\\n\\n\\t ----| STARTING AES MAIN SEQUENCE "
+     "|----\\n %s\",\n"
+     "                      cfg.convert2string()), UVM_LOW)\nendmodule\n"},
+    {"module x;"
+     "`uvm_fatal(`gfn, $sformatf("
+     "\"The data 0x%0h written to the signature address is formatted "
+     "incorrectly.\","
+     "signature_data))\n"
+     "endmodule",
+     "module x;\n"
+     "  `uvm_fatal(\n"
+     "      `gfn,\n"
+     "      $sformatf(\n"
+     "          \"The data 0x%0h written to the signature address is formatted "
+     "incorrectly.\",\n"
+     "          signature_data))\n"
+     "endmodule\n"},
+};
+
+TEST(FormatterEndToEndTest, FormatNestedFunctionsTestCases80ColumnsLimit) {
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 80;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+
+  for (const auto &test_case : kNestedFunctionsTestCases80ColumnsLimit) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+static constexpr FormatterTestCase kNestedFunctionsTestCases100ColumnsLimit[] =
+    {
+        {"module foo;"
+         "`uvm_info(`gfn, $sformatf(\n"
+         "\"\\n  base_vseq: generate %0d pulse in channel %0d\", "
+         "cfg.num_pulses, i), UVM_DEBUG)\n"
+         "endmodule",
+         "module foo;\n"
+         "  `uvm_info(`gfn, $sformatf(\"\\n  base_vseq: generate %0d pulse in "
+         "channel %0d\", cfg.num_pulses, i),\n"
+         "            UVM_DEBUG)\n"
+         "endmodule\n"},
+        {"module foo;`uvm_info(`gfn, $sformatf("
+         "\"\\n\\n\\t ----| STARTING AES MAIN SEQUENCE |----\\n %s\","
+         "cfg.convert2string()), UVM_LOW)\n"
+         "endmodule",
+         "module foo;\n"
+         "  `uvm_info(`gfn, $sformatf(\"\\n\\n\\t ----| STARTING AES MAIN "
+         "SEQUENCE |----\\n %s\",\n"
+         "                            cfg.convert2string()), UVM_LOW)\n"
+         "endmodule\n"},
+        {"module x;"
+         "`uvm_fatal(`gfn, $sformatf("
+         "\"The data 0x%0h written to the signature address is formatted "
+         "incorrectly.\","
+         "signature_data))\n"
+         "endmodule",
+         "module x;\n"
+         "  `uvm_fatal(`gfn, $sformatf(\n"
+         "                       \"The data 0x%0h written to the signature "
+         "address is formatted incorrectly.\",\n"
+         "                       signature_data))\n"
+         "endmodule\n"},
+        {// nested modules, three-levels
+         "module x; module y; module z;"
+         "`uvm_fatal(`gfn, $sformatf("
+         "\"The data 0x%0h written to the signature address is formatted "
+         "incorrectly.\","
+         "signature_data))\n"
+         "endmodule endmodule endmodule",
+         "module x;\n"
+         "  module y;\n"
+         "    module z;\n"
+         "      `uvm_fatal(`gfn,\n"
+         "                 $sformatf(\n"
+         "                     \"The data 0x%0h written to the signature "
+         "address is formatted incorrectly.\",\n"
+         "                     signature_data))\n"
+         "    endmodule\n"
+         "  endmodule\n"
+         "endmodule\n"},
+};
+
+TEST(FormatterEndToEndTest, FormatNestedFunctionsTestCases100ColumnsLimit) {
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 100;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+
+  for (const auto &test_case : kNestedFunctionsTestCases100ColumnsLimit) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+static constexpr FormatterTestCase noCompactIndexingAndSelectionsTestCases[]{
+    {"module m1 ();\n"
+     "  assign s1 = msg[1 : 2 + 3];\n"
+     "  assign s2 = {<<8{msg[1 : 2 + 3]}};\n"
+     "endmodule\n",
+     "module m1 ();\n"
+     "  assign s1 = msg[1 : 2 + 3];\n"
+     "  assign s2 = {<< 8{msg[1 : 2 + 3]}};\n"
+     "endmodule\n"}};
+
+TEST(FormatterEndToEndTest, compactIndexingAndSelectionsTestCases) {
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 100;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.compact_indexing_and_selections = false;
+
+  for (const auto &test_case : noCompactIndexingAndSelectionsTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+static constexpr FormatterTestCase
+    kSpaceBeforeHashInUnqualifiedTypedefTestCases[] = {
+        // unqualified parameterized type keeps a space before '#'
+        {"typedef dv_base_env_cov #(.CFG_T(tl_agent_env_cfg)) "
+         "tl_agent_env_cov;\n",
+         "typedef dv_base_env_cov #(\n"
+         "    .CFG_T(tl_agent_env_cfg)\n"
+         ") tl_agent_env_cov;\n"},
+        // ... and is inserted when absent
+        {"typedef dv_base_env_cov#(.CFG_T(tl_agent_env_cfg)) "
+         "tl_agent_env_cov;\n",
+         "typedef dv_base_env_cov #(\n"
+         "    .CFG_T(tl_agent_env_cfg)\n"
+         ") tl_agent_env_cov;\n"},
+        // single short parameter stays on one line
+        {"typedef my_class #(.P(P)) my_class_t;\n",
+         "typedef my_class #(.P(P)) my_class_t;\n"},
+        // package-qualified types are unaffected (no space before '#')
+        {"typedef foo_pkg::baz_t#(.L(L), .W(W)) bar_t;\n",
+         "typedef foo_pkg::baz_t#(\n"
+         "    .L(L),\n"
+         "    .W(W)\n"
+         ") bar_t;\n"},
+};
+
+TEST(FormatterEndToEndTest, SpaceBeforeHashInUnqualifiedTypedefTestCases) {
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 40;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+  style.class_parameter_space = true;
+
+  for (const auto &test_case : kSpaceBeforeHashInUnqualifiedTypedefTestCases) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+static constexpr FormatterTestCase kFunctionCallsWithComments[] = {
+    {// no comments
+     "module foo;\n"
+     "`uvm_info(`gfn, \"xx\",\n"
+     "cfg.num_pulses, i, UVM_DEBUG)\n"
+     "endmodule",
+     "module foo;\n"
+     "  `uvm_info(`gfn, \"xx\", cfg.num_pulses, i, UVM_DEBUG)\n"
+     "endmodule\n"},
+    {// one comment
+     "module foo;\n"
+     "`uvm_info(`gfn, \"xx\",  // yy\n"
+     "cfg.num_pulses, i, UVM_DEBUG)\n"
+     "endmodule",
+     "module foo;\n"
+     "  `uvm_info(`gfn, \"xx\",  // yy\n"
+     "            cfg.num_pulses, i, UVM_DEBUG)\n"
+     "endmodule\n"},
+    {// two comments
+     "module foo;\n"
+     "`uvm_info(`gfn, \"xx\",  "
+     "    cfg.num_pulses, // xx\n"
+     " i, UVM_DEBUG)// uuu\n"
+     "endmodule",
+     "module foo;\n"
+     "  `uvm_info(`gfn, \"xx\", cfg.num_pulses,  // xx\n"
+     "            i, UVM_DEBUG)  // uuu\n"
+     "endmodule\n"},
+
+    {// nested function calls with comments
+     "module foo;"
+     "`uvm_info(`gfn, $sformatf(\"\\n  base_vseq: generate %0d"
+     " pulse in channel %0d\", cfg.num_pulses, // comment\n"
+     " i), UVM_DEBUG)\n"
+     "endmodule",
+     "module foo;\n"
+     "  `uvm_info(`gfn, $sformatf(\"\\n  base_vseq: generate %0d pulse in "
+     "channel %0d\",\n"
+     "                            cfg.num_pulses,  // comment\n"
+     "                            i), UVM_DEBUG)\n"
+     "endmodule\n"},
+};
+
+TEST(FormatterEndToEndTest, FunctionCallsWithComments) {
+  // Use a fixed style.
+  FormatStyle style;
+  style.column_limit = 100;
+  style.indentation_spaces = 2;
+  style.wrap_spaces = 4;
+
+  for (const auto &test_case : kFunctionCallsWithComments) {
+    VLOG(1) << "code-to-format:\n" << test_case.input << "<EOF>";
+    std::ostringstream stream;
+    const auto status =
+        FormatVerilog(test_case.input, "<filename>", style, stream);
+    // Require these test cases to be valid.
+    EXPECT_OK(status) << status.message();
+    EXPECT_EQ(stream.str(), test_case.expected) << "code:\n" << test_case.input;
+  }
+}
+
+// Extracts the first non-whitespace token and prepends it with number of
+// of newlines seen in front of it. So "\n \n\n  foo" -> "3foo"
+std::string NLCountAndfirstWord(std::string_view str) {
+  std::string result;
+  int newline_count = 0;
+  std::string_view::const_iterator begin = str.begin();
+  for (/**/; begin < str.end(); ++begin) {
+    if (!isspace(*begin)) break;
+    newline_count += (*begin == '\n');
+  }
+  // Emit number of newlines seen up to first token.
+  result.append(1,
+                static_cast<char>(newline_count + '0'));  // single digit itoa
+  std::string_view::const_iterator end_str = begin;
+  for (/**/; end_str < str.end() && !isspace(*end_str); ++end_str) {
+  }
+  result.append(begin, end_str);
+  return result;
+}
+
+// Similar to NLCountAndfirstWord() but looking at the last token and trailing
+// newlines.
+std::string lastWordAndNLCount(std::string_view str) {
+  std::string result;
+  int newline_count = 0;
+  std::string_view::const_iterator back = str.end() - 1;
+  for (/**/; back >= str.begin(); --back) {
+    if (!isspace(*back)) break;
+    newline_count += (*back == '\n');
+  }
+
+  std::string_view::const_iterator start_str = back;
+  for (/**/; start_str >= str.begin() && !isspace(*start_str); --start_str) {
+  }
+  result.append(&*(start_str + 1), back - start_str);
+  // Emit number of newlines seen following last token.
+  result.append(1,
+                static_cast<char>(newline_count + '0'));  // single digit itoa
+  return result;
+}
+
+// Testing the tester...
+TEST(FormatterTestInternal, TokenExtractorAndLineCounterTestFixtureTest) {
+  std::string_view str = "\n \nhello world \n \n";
+  ASSERT_EQ(NLCountAndfirstWord(str), "2hello");
+  ASSERT_EQ(NLCountAndfirstWord(str.substr(1)), "1hello");
+  ASSERT_EQ(NLCountAndfirstWord(str.substr(3)), "0hello");
+
+  ASSERT_EQ(lastWordAndNLCount(str), "world2");
+  ASSERT_EQ(lastWordAndNLCount(str.substr(0, str.length() - 1)), "world1");
+  ASSERT_EQ(lastWordAndNLCount(str.substr(0, str.length() - 2)), "world1");
+  ASSERT_EQ(lastWordAndNLCount(str.substr(0, str.length() - 3)), "world0");
+
+  str = "aworld \n \n";  // Make sure to not overshoot begin.
+  ASSERT_EQ(lastWordAndNLCount(str.substr(1)), "world2");
+}
+
+TEST(FormatterEndToEndTest, RangeFormattingOnlyEmittingRelevantLines) {
+  // Including some empty lines to make sure the formatting
+  static constexpr std::string_view unformatted =
+      R"(     module foo (// non-port comment
+
+     // some comment
+
+  input  logic  a, input logic  b,input bit [2]
+foobar, input    bit [4] foobaz,
+    input bit [2]    quux
+
+
+        ); endmodule
+)";
+
+  std::vector<std::string_view> lines = absl::StrSplit(unformatted, '\n');
+  const int kLineCount = lines.size();
+
+  FormatStyle style;
+
+  // Go through all possible sub-ranges, format these, and compare that the
+  // output of the range output is contained inside the full format given the
+  // same sub-range.
+  for (int start_line = 0; start_line < kLineCount; ++start_line) {
+    for (int end_line = start_line; end_line < kLineCount; ++end_line) {
+      // Line numbers are 1-index based.
+      const verible::Interval<int> range = {start_line + 1, end_line + 1};
+
+      // Format full text for reference
+      std::ostringstream full_format;
+      absl::Status status =
+          FormatVerilog(unformatted, "<filename>", style, full_format, {range});
+      EXPECT_OK(status) << status.message();
+
+      // To test: range formatted.
+      std::string range_formatted;
+      status = FormatVerilogRange(unformatted, "<filename>", style,
+                                  &range_formatted, range);
+      EXPECT_OK(status) << status.message();
+      if (range.empty()) {  // Nothing to format: expect empty output.
+        EXPECT_TRUE(range_formatted.empty());
+        continue;
+      }
+
+      // Area we cover in the input (include the final newline);
+      const auto source_begin = lines[start_line].begin();
+      const auto source_end = lines[end_line - 1].end() + 1;  // include \n
+      const std::string_view range_unformatted(&*source_begin,
+                                               source_end - source_begin);
+
+      // To compare that we indeed formatted the requested reqgion, we make
+      // sure that the first and last token (simplified: non-whitespace word)
+      // in the input of the range to be formatted is
+      // exactly the first and last token that comes out of the range
+      // formatted snippet.
+      //
+      // While the whitespace might be different at the beginning and end
+      // due to formatting, the number of _newlines_ at the beginning and end
+      // should be the same, so we include the newline count in the comparison.
+
+      EXPECT_EQ(NLCountAndfirstWord(range_unformatted),
+                NLCountAndfirstWord(range_formatted))
+          << "'" << range_unformatted << "' vs. '" << range_formatted << "'";
+
+      // ... same for the last word.
+      EXPECT_EQ(lastWordAndNLCount(range_unformatted),
+                lastWordAndNLCount(range_formatted))
+          << "'" << range_unformatted << "' vs. '" << range_formatted << "'";
+
+      EXPECT_LE(range_formatted.length(), full_format.str().length());
+      EXPECT_THAT(full_format.str(), HasSubstr(range_formatted));
+    }
+  }
+}
+
+// Creates a string_view spanning a whole string literal.
+// Works correctly with strings containing null bytes.
+template <std::size_t N>
+constexpr std::string_view string_view_from_literal(const char (&s)[N]) {
+  return std::string_view(s, N - 1);
+}
+
+// The following regressions have been found by a fuzzer, so the input might
+// look a bit 'funny'. Nevertheless, they expose real bugs in the code.
+
+[[maybe_unused]] void TestForNonCrash(std::string_view input) {
+  using verible::EscapeString;
+  FormatStyle style;
+  std::ostringstream stream;
+  const auto status = FormatVerilog(input, "<filename>", style, stream);
+  // If we are here, we did at least not crash, which is all we desire for
+  // the fuzzer tests.
+  // Other issues that are reported correctly (probably due to strange inputs
+  // generated by the fuzzer) are ok, so we just log them here FYI.
+  if (!status.ok()) {
+    LOG(INFO) << "No crash, but format failed for other reason: "
+              << status.message() << "\nEscaped input: \""
+              << EscapeString(input) << "\"";
+  }
+}
+
+#if 0
+// https://github.com/chipsalliance/verible/issues/1381
+TEST(FormatterEndToEndTest, FuzzingRegression_1381) {
+  TestForNonCrash(string_view_from_literal("P#(\0\0//\0//\0,);"));
+  TestForNonCrash(string_view_from_literal("P#(\0\0//\0,,//\0,"));
+}
+#endif
+
+// https://github.com/chipsalliance/verible/issues/1384
+TEST(FormatterEndToEndTest, FuzzingRegression_UseAfterFree_1384) {
+  TestForNonCrash("`c(`c(//););");
+}
+
+// https://github.com/chipsalliance/verible/issues/1386
+TEST(FormatterEndToEndTest, FuzzingRegressionHierachyInvariant) {
+  // Original sample input from fuzzer
+  TestForNonCrash(string_view_from_literal("`c(`c()\0;);"));
+  // Lexically correct variant (`\0` -> `\n`)
+  TestForNonCrash(string_view_from_literal("`c(`c()\n;);"));
+  // Lexically correct variant (`\0` removed)
+  TestForNonCrash(string_view_from_literal("`c(`c(););"));
+}
+
+// Possibly same ? https://github.com/chipsalliance/verible/issues/1386
+TEST(FormatterEndToEndTest, FuzzingRegression_outofmemory) {
+  TestForNonCrash(string_view_from_literal("`f(1'O`f())\n"));
+}
+
+}  // namespace
+}  // namespace formatter
+}  // namespace verilog
