From f12001705a8c7da2b198abff7df594c98a366b6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emma=20S=C3=B6derberg?= <emma.m.soderberg@gmail.com> Date: Tue, 26 Jun 2018 18:18:41 +0200 Subject: [PATCH] Adds enter/exit to incremental construction state for circular NTAs. Entering the construction state avoids change propagation for edits occuring during evaluation of circular NTAs. --- src/template/ast/ASTNode.tt | 2 ++ src/template/ast/Circular.tt | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/src/template/ast/ASTNode.tt b/src/template/ast/ASTNode.tt index f1bf99b4..4b397a3e 100644 --- a/src/template/ast/ASTNode.tt +++ b/src/template/ast/ASTNode.tt @@ -425,7 +425,9 @@ $if(RewriteEnabled) $include(ASTNode.incHookGetChildEnterEval) $ASTNode rewritten = node.rewrittenNode(); if (rewritten != node) { + $include(State.incHookConstructionStart) rewritten.setParent(this); + $include(State.incHookConstructionEnd) node = rewritten; } $include(ASTNode.incHookGetChildExitEval) diff --git a/src/template/ast/Circular.tt b/src/template/ast/Circular.tt index b2eb5f5b..b64f8c23 100644 --- a/src/template/ast/Circular.tt +++ b/src/template/ast/Circular.tt @@ -55,7 +55,9 @@ $endif #(signature)_value = $BottomValue; $if(#getNTA) if (#(signature)_value != null) { + $include(State.incHookConstructionStart) #(signature)_value.setParent(#ntaParent); + $include(State.incHookConstructionEnd) } $endif } @@ -81,7 +83,9 @@ $endif #(signature)_value = new_#(signature)_value; $if(#getNTA) if (#(signature)_value != null) { + $include(State.incHookConstructionStart) #(signature)_value.setParent(#ntaParent); + $include(State.incHookConstructionEnd) } $endif #tracePrintStartingCycle @@ -128,7 +132,9 @@ $endif #(signature)_value = new_#(signature)_value; $if(#getNTA) if (#(signature)_value != null) { + $include(State.incHookConstructionStart) #(signature)_value.setParent(#ntaParent); + $include(State.incHookConstructionEnd) } $endif $TracePrintReturnNewValue -- GitLab