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"(
