keep track of all times an undeclared variable is encountered
parent
a9de8dd0a0
commit
ff3b2d0ae3
|
@ -359,10 +359,13 @@ ParsingDriver::add_model_variable(string *name)
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
symb_id = mod_file->symbol_table.getID(*name);
|
symb_id = mod_file->symbol_table.getID(*name);
|
||||||
|
if (undeclared_model_vars.find(*name) != undeclared_model_vars.end())
|
||||||
|
model_error("Unknown symbol: " + *name);
|
||||||
}
|
}
|
||||||
catch (SymbolTable::UnknownSymbolNameException &e)
|
catch (SymbolTable::UnknownSymbolNameException &e)
|
||||||
{
|
{
|
||||||
declare_exogenous(new string (*name));
|
declare_exogenous(new string (*name));
|
||||||
|
undeclared_model_vars.insert(*name);
|
||||||
symb_id = mod_file->symbol_table.getID(*name);
|
symb_id = mod_file->symbol_table.getID(*name);
|
||||||
}
|
}
|
||||||
delete name;
|
delete name;
|
||||||
|
@ -2590,6 +2593,9 @@ ParsingDriver::add_model_var_or_external_function(string *function_name, bool in
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // e.g. model_var(lag) => ADD MODEL VARIABLE WITH LEAD (NumConstNode)/LAG (UnaryOpNode)
|
{ // e.g. model_var(lag) => ADD MODEL VARIABLE WITH LEAD (NumConstNode)/LAG (UnaryOpNode)
|
||||||
|
if (undeclared_model_vars.find(*function_name) != undeclared_model_vars.end())
|
||||||
|
model_error("Unknown symbol: " + *function_name);
|
||||||
|
|
||||||
if (stack_external_function_args.top().size() != 1)
|
if (stack_external_function_args.top().size() != 1)
|
||||||
error(string("Symbol ") + *function_name + string(" is being treated as if it were a function (i.e., has received more than one argument)."));
|
error(string("Symbol ") + *function_name + string(" is being treated as if it were a function (i.e., has received more than one argument)."));
|
||||||
|
|
||||||
|
|
|
@ -184,6 +184,8 @@ private:
|
||||||
//! Temporary storage for current restriction number in svar_identification block
|
//! Temporary storage for current restriction number in svar_identification block
|
||||||
map<int,int> svar_Qi_restriction_nbr;
|
map<int,int> svar_Qi_restriction_nbr;
|
||||||
map<int,int> svar_Ri_restriction_nbr;
|
map<int,int> svar_Ri_restriction_nbr;
|
||||||
|
//! Stores undeclared model variables
|
||||||
|
set<string> undeclared_model_vars;
|
||||||
//! Temporary storage for restriction type
|
//! Temporary storage for restriction type
|
||||||
enum SvarRestrictionType
|
enum SvarRestrictionType
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue