diff --git a/SymbolTable.cc b/SymbolTable.cc index d92661e6..dff6b9e1 100644 --- a/SymbolTable.cc +++ b/SymbolTable.cc @@ -657,10 +657,16 @@ SymbolTable::addAdlParameter(const string &basename, int lag) throw (FrozenExcep try { - return addSymbol(varname.str(), eParameter); + int symb_id = addSymbol(varname.str(), eParameter); + adl_params.push_back(symb_id); + return symb_id; } catch (AlreadyDeclaredException &e) { + int symb_id = getID(varname.str()); + if (find(adl_params.begin(), adl_params.end(), symb_id) != adl_params.end()) + return symb_id; + cerr << "ERROR: you should rename your variable called " << varname.str() << ", this name is internally used by Dynare" << endl; exit(EXIT_FAILURE); } diff --git a/SymbolTable.hh b/SymbolTable.hh index bca56d5f..81070b00 100644 --- a/SymbolTable.hh +++ b/SymbolTable.hh @@ -153,6 +153,9 @@ private: //! Stores the list of observed exogenous variables vector varexobs; + //! Stores list of parameters declared in adl substitution + vector adl_params; + public: SymbolTable(); //! Thrown when trying to access an unknown symbol (by name)