From 14fc3fbf059d9e972c93aacc05c1e6719d2243fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Scylla=29?= <stephane.adjemian@univ-lemans.fr> Date: Tue, 19 Sep 2017 21:56:04 +0200 Subject: [PATCH] Fixed calls to input name. --- src/@dseries/chain_.m | 26 +++++++++++++++++++++++--- src/@dseries/exist.m | 6 +++++- src/@dseries/set_names.m | 14 +++++++++++--- 3 files changed, 39 insertions(+), 7 deletions(-) diff --git a/src/@dseries/chain_.m b/src/@dseries/chain_.m index 5c85896..d875881 100644 --- a/src/@dseries/chain_.m +++ b/src/@dseries/chain_.m @@ -17,16 +17,36 @@ function o = chain_(o, p) % --*-- Unitary tests --*-- % You should have received a copy of the GNU General Public License % along with Dynare. If not, see <http://www.gnu.org/licenses/>. +noinputname = false; + +if isempty(inputname(1)) + % If method is called with dot notation (eg o.chain_(p) insteady of chain(o, p)), input names + % are not defined. + noinputname = true; +end + if vobs(o)-vobs(p) - error(['dseries::chain: dseries objects ' inputname(1) ' and ' inputname(2) ' must have the same number of variables!']) + if noinputname + error(['dseries::chain: dseries objects must have the same number of variables!']) + else + error(['dseries::chain: dseries objects ' inputname(1) ' and ' inputname(2) ' must have the same number of variables!']) + end end if frequency(o)-frequency(p) - error(['dseries::chain: dseries objects ' inputname(1) ' and ' inputname(2) ' must have common frequencies!']) + if noinputname + error(['dseries::chain: dseries objects must have common frequencies!']) + else + error(['dseries::chain: dseries objects ' inputname(1) ' and ' inputname(2) ' must have common frequencies!']) + end end if lastdate(o)<firstdate(p) - error(['dseries::chain: The last date in ' inputname(1) ' (' date2string(o.dates(end)) ') must not preceed the first date in ' inputname(2) ' (' date2string(p.dates(1)) ')!']) + if noinputname + error(['dseries::chain: The last date in first dseries object (' date2string(o.dates(end)) ') must not preceed the first date in the second dseries object (' date2string(p.dates(1)) ')!']) + else + error(['dseries::chain: The last date in ' inputname(1) ' (' date2string(o.dates(end)) ') must not preceed the first date in ' inputname(2) ' (' date2string(p.dates(1)) ')!']) + end end tdx = find(sum(bsxfun(@eq, p.dates.time, o.dates.time(end,:)),2)==2); diff --git a/src/@dseries/exist.m b/src/@dseries/exist.m index 9ccc794..bdc21f5 100644 --- a/src/@dseries/exist.m +++ b/src/@dseries/exist.m @@ -27,7 +27,11 @@ function l = exist(o, varname) % --*-- Unitary tests --*-- % along with Dynare. If not, see <http://www.gnu.org/licenses/>. if ~ischar(varname) - error(['dseries::exist: Input arguments ''' inputname(2) ''' has to be string!']) + if isempty(inputname(2)) + error(['dseries::exist: Input argument (variable name) has to be string!']) + else + error(['dseries::exist: Second input argument ''' inputname(2) ''' has to be string!']) + end end l = ~isempty(strmatch(varname, o.name, 'exact')); diff --git a/src/@dseries/set_names.m b/src/@dseries/set_names.m index 96bfb21..1707b77 100644 --- a/src/@dseries/set_names.m +++ b/src/@dseries/set_names.m @@ -1,4 +1,4 @@ -function o = set_names(o,varargin) % --*-- Unitary tests --*-- +function o = set_names(o, varargin) % --*-- Unitary tests --*-- % Specifies names of the variables in a dseries object (in place modification). % @@ -29,11 +29,19 @@ function o = set_names(o,varargin) % --*-- Unitary tests --*-- n = nargin-1; if ~isdseries(o) - error(['dseries::set_names: ' inputname(1) ' must be a dseries object!']) + if isempty(inputname(1)) + error(['dseries::set_names: First input must be a dseries object!']) + else + error(['dseries::set_names: ' inputname(1) ' must be a dseries object!']) + end end if ~isequal(vobs(o), n) - error(['dseries::set_names: The number of variables in ' inputname(1) ' does not match the number of declared names!']) + if isempty(inputname(1)) + error(['dseries::set_names: The number of variables in first input does not match the number of declared names!']) + else + error(['dseries::set_names: The number of variables in ' inputname(1) ' does not match the number of declared names!']) + end end for i=1:vobs(o) -- GitLab