diff --git a/ParsingDriver.cc b/ParsingDriver.cc index c0b914ac103bf182d3a03802c35295c8721874ba..e0ffbf8ed460b8c4054455416a595767a387ddaa 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(); }