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..d0eb424
--- /dev/null
+++ b/verible/verilog/formatting/formatter-test-utils.h
@@ -0,0 +1,70 @@
+// 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 <cstddef>
+#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..6c2eb7b
--- /dev/null
+++ b/verible/verilog/formatting/formatter_align_test.cc
@@ -0,0 +1,5067 @@
+// 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/formatting/basic-format-style.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..55fa226
--- /dev/null
+++ b/verible/verilog/formatting/formatter_class_package_test.cc
@@ -0,0 +1,979 @@
+// 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/verilog/formatting/format-style.h"
+#include "verible/verilog/formatting/formatter-test-utils.h"
+#include "verible/verilog/formatting/formatter.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..c539107
--- /dev/null
+++ b/verible/verilog/formatting/formatter_disable_test.cc
@@ -0,0 +1,5819 @@
+// 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/verilog/formatting/format-style.h"
+#include "verible/verilog/formatting/formatter-test-utils.h"
+#include "verible/verilog/formatting/formatter.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..b5e1565
--- /dev/null
+++ b/verible/verilog/formatting/formatter_function_task_test.cc
@@ -0,0 +1,2239 @@
+// 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/verilog/formatting/format-style.h"
+#include "verible/verilog/formatting/formatter-test-utils.h"
+#include "verible/verilog/formatting/formatter.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..3c98d4e
--- /dev/null
+++ b/verible/verilog/formatting/formatter_issue_regression_test.cc
@@ -0,0 +1,321 @@
+// 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 {
+
+using testing::HasSubstr;
+
+// 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..9b98660
--- /dev/null
+++ b/verible/verilog/formatting/formatter_macro_test.cc
@@ -0,0 +1,560 @@
+// 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/verilog/formatting/format-style.h"
+#include "verible/verilog/formatting/formatter-test-utils.h"
+#include "verible/verilog/formatting/formatter.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..1f827f1
--- /dev/null
+++ b/verible/verilog/formatting/formatter_module_test.cc
@@ -0,0 +1,3030 @@
+// 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/verilog/formatting/format-style.h"
+#include "verible/verilog/formatting/formatter-test-utils.h"
+#include "verible/verilog/formatting/formatter.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 16e0572..aad3e60 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);
 }
 
 }  // namespace
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..4b3e3af
--- /dev/null
+++ b/verible/verilog/formatting/formatter_wrap_style_test.cc
@@ -0,0 +1,3406 @@
+// 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 <memory>
+#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
