From 5836eb2a1dedfb02655ee306ca6f7464d789f6dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Reuh=20Fildadut?= Date: Tue, 30 Apr 2024 22:53:41 +0200 Subject: [PATCH] [internal] fix merge() merging unrelated branches --- anselme/ast/Branched.lua | 2 +- anselme/ast/Environment.lua | 1 + anselme/ast/abstract/Node.lua | 5 +++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/anselme/ast/Branched.lua b/anselme/ast/Branched.lua index 6f868b2..c4c5108 100644 --- a/anselme/ast/Branched.lua +++ b/anselme/ast/Branched.lua @@ -37,8 +37,8 @@ Branched = ast.abstract.Runtime { if val and state.source_branch then self.value[state.source_branch.branch_id] = val self.value[state.branch_id] = nil - val:merge(state, cache) end + self:get(state):merge(state, cache) end, _format = function(self, state, ...) diff --git a/anselme/ast/Environment.lua b/anselme/ast/Environment.lua index cbff40b..7a9364a 100644 --- a/anselme/ast/Environment.lua +++ b/anselme/ast/Environment.lua @@ -57,6 +57,7 @@ local VariableMetadata = ast.abstract.Runtime { end, _merge = function(self, state, cache) + self.symbol:merge(state, cache) if not self.symbol.confined_to_branch then self.branched:merge(state, cache) end diff --git a/anselme/ast/abstract/Node.lua b/anselme/ast/abstract/Node.lua index 57f0093..add4d48 100644 --- a/anselme/ast/abstract/Node.lua +++ b/anselme/ast/abstract/Node.lua @@ -288,10 +288,11 @@ Node = class { if not cache[self] then cache[self] = true self:_merge(state, cache) - self:traverse(traverse.merge, state, cache) end end, - _merge = function(self, state, cache) end, + _merge = function(self, state, cache) + self:traverse(traverse.merge, state, cache) + end, -- return string that uniquely represent this node -- the actual hash is computed in :_hash, don't redefine :hash directly