From 58a21322e2dd3ce47853b43d086f42890da11a37 Mon Sep 17 00:00:00 2001
From: Houtan Bastani <houtan@dynare.org>
Date: Mon, 3 Apr 2017 14:52:20 +0200
Subject: [PATCH] preprocessor: allow variables to pass undeclared as exogenous
 variables when nostrict flag is passed

---
 ParsingDriver.cc | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/ParsingDriver.cc b/ParsingDriver.cc
index c0b914ac..e0ffbf8e 100644
--- a/ParsingDriver.cc
+++ b/ParsingDriver.cc
@@ -749,9 +749,24 @@ ParsingDriver::end_model()
 {
   if (model_errors.size() > 0)
     {
-      for (vector<pair<string, string> >::const_iterator it = model_errors.begin(); it != model_errors.end(); it++)
-        cerr << it->second;
-      exit(EXIT_FAILURE);
+      bool exit_after_write = false;
+      bool exit_after_write_undeclared_vars = true;
+      for (vector<pair<string, string> >::const_iterator it = model_errors.begin();
+           it != model_errors.end(); it++)
+        {
+          if (it->first == "")
+            exit_after_write = true;
+
+          if (mod_file->symbol_table.getType(it->first) == eExogenous)
+            {
+              exit_after_write_undeclared_vars = false;
+              cerr << "(Changed to warning): ";
+            }
+
+          cerr << it->second;
+        }
+      if (exit_after_write || exit_after_write_undeclared_vars)
+        exit(EXIT_FAILURE);
     }
   reset_data_tree();
 }
-- 
GitLab