Merge pull request #2384 from henryhchchc/master
Checking the validity of line range before generating code actions
diff --git a/verible/verilog/tools/ls/autoexpand.cc b/verible/verilog/tools/ls/autoexpand.cc
index c48e2c8..0f9d5c4 100644
--- a/verible/verilog/tools/ls/autoexpand.cc
+++ b/verible/verilog/tools/ls/autoexpand.cc
@@ -1689,6 +1689,7 @@
const BufferTracker *const tracker, const CodeActionParams &p) {
Interval<size_t> line_range{static_cast<size_t>(p.range.start.line),
static_cast<size_t>(p.range.end.line)};
+ if (!line_range.valid()) return {};
if (!tracker) return {};
const auto current = tracker->current();
if (!current) return {}; // Can only expand if we have latest version
diff --git a/verible/verilog/tools/ls/autoexpand_test.cc b/verible/verilog/tools/ls/autoexpand_test.cc
index 4b313a0..2b05f09 100644
--- a/verible/verilog/tools/ls/autoexpand_test.cc
+++ b/verible/verilog/tools/ls/autoexpand_test.cc
@@ -3600,6 +3600,43 @@
);
}
+TEST(Autoexpand, InvalidLineRange) {
+ TestTextEdits(
+ R"(
+module foo ( /*AUTOARG*/);
+ /*AUTOINPUT*/
+ /*AUTOOUTPUT*/
+
+ /* qux AUTO_TEMPLATE
+ bar AUTO_TEMPLATE (
+ .o1(out_a[]),
+ .o2(out_b[])
+ ); */
+ bar b ( /*AUTOINST*/);
+endmodule
+)",
+ R"(
+module foo ( /*AUTOARG*/);
+ /*AUTOINPUT*/
+ /*AUTOOUTPUT*/
+
+ /* qux AUTO_TEMPLATE
+ bar AUTO_TEMPLATE (
+ .o1(out_a[]),
+ .o2(out_b[])
+ ); */
+ bar b ( /*AUTOINST*/);
+endmodule
+)",
+ TestRun{.edit_fn = [](SymbolTableHandler *symbol_table_handler,
+ BufferTracker *tracker) {
+ return AutoExpandCodeActionToTextEdits(
+ symbol_table_handler, tracker,
+ {.start = {.line = 5}, .end = {.line = 1}},
+ "Expand with invalid range");
+ }}.repeat());
+}
+
TEST(Autoexpand, InstanceNotModule) {
TestTextEdits(
R"(