From 98f190d3bad226f85dfd3bfa673596371ccf7913 Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Sun, 6 Dec 2015 20:30:48 -0800 Subject: [PATCH] When the parse stack is split, mark all reductions as fragile --- src/runtime/parser.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/runtime/parser.c b/src/runtime/parser.c index 784aa2d7..16656feb 100644 --- a/src/runtime/parser.c +++ b/src/runtime/parser.c @@ -313,6 +313,14 @@ static bool ts_parser__reduce(TSParser *self, int head, TSSymbol symbol, } } + if (ts_stack_head_count(self->stack) > 1) { + for (size_t i = 0, size = self->reduce_parents.size; i < size; i++) { + TSTree **parent = vector_get(&self->reduce_parents, i); + (*parent)->options.fragile_left = true; + (*parent)->options.fragile_right = true; + } + } + return removed_heads < revealed_heads; }