From dc99d81c4512d3c0db76e63741abfdc1e7694d5b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org>
Date: Mon, 6 Dec 2021 16:20:17 +0100
Subject: [PATCH] Explain why expectation() operators need not be substituted
 in equations marked [static]

By the way, also perform a small code simplification.
---
 src/DynamicModel.cc | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/DynamicModel.cc b/src/DynamicModel.cc
index 90a1d1f6..d975801e 100644
--- a/src/DynamicModel.cc
+++ b/src/DynamicModel.cc
@@ -5512,11 +5512,13 @@ DynamicModel::substituteExpectation(bool partial_information_model)
   // Substitute in equations
   for (auto &equation : equations)
     {
-      auto substeq = dynamic_cast<BinaryOpNode *>(equation->substituteExpectation(subst_table, neweqs, partial_information_model));
-      assert(substeq);
-      equation = substeq;
+      equation = dynamic_cast<BinaryOpNode *>(equation->substituteExpectation(subst_table, neweqs, partial_information_model));
+      assert(equation);
     }
 
+  /* No need to substitute in static_only_equations, since expectation()
+     operators in [static] equations are forbidden at the parsing level. */
+
   // Add new equations
   for (auto &neweq : neweqs)
     {
-- 
GitLab