diff --git a/src/backends/lalr.c b/src/backends/lalr.c
index 86e358b7a01de04a9d1ebfabdfce3392a5465a8f..79a2eca50c1690fab329870bf3e8f7e994927ad3 100644
--- a/src/backends/lalr.c
+++ b/src/backends/lalr.c
@@ -342,6 +342,7 @@ int h_lalr_compile(HAllocator* mm__, HParser* parser, const void* params)
             // would lead to certain parse failure, by means of h_nothing_p()
             // for instance. in that case, the below code correctly adds no
             // reduce action.
+            assert(!h_stringmap_empty(fs)); // XXX
 
             // for each lookahead symbol, put action into table cell
             if(terminals_put(table->tmap[state], fs, action) < 0)