From 2c8f3c6e9a8647c59e05fca2d1e69bb5c8393ff2 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sat, 4 Sep 2021 22:29:10 -0400 Subject: [PATCH] Avoid infinite loop with self-referential rules --- lib/imbecile/parser/item_set.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/imbecile/parser/item_set.rb b/lib/imbecile/parser/item_set.rb index 0c7515a..619c222 100644 --- a/lib/imbecile/parser/item_set.rb +++ b/lib/imbecile/parser/item_set.rb @@ -44,7 +44,11 @@ class Imbecile this_eval_items = eval_items eval_items = Set.new this_eval_items.each do |item| - eval_items += item.closed_items + item.closed_items.each do |new_item| + unless @items.include?(new_item) + eval_items << new_item + end + end end @items += eval_items end