From 588846d3e78f7b0acb29b4ebd04414585783053a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Ry=C3=BBk=29?=
 <stepan@adjemian.eu>
Date: Wed, 8 Mar 2023 19:19:46 +0100
Subject: [PATCH] Improve error message.

---
 src/@dseries/subsasgn.m | 36 ++++++++++++++++++++----------------
 1 file changed, 20 insertions(+), 16 deletions(-)

diff --git a/src/@dseries/subsasgn.m b/src/@dseries/subsasgn.m
index a4eb972..e4a9dcc 100644
--- a/src/@dseries/subsasgn.m
+++ b/src/@dseries/subsasgn.m
@@ -66,25 +66,29 @@ switch length(S)
             end
             return
         end
-        if ~isequal(length(S(1).subs),vobs(B))
-            error('dseries::subsasgn: Wrong syntax!')
-        end
-        if ~isequal(S(1).subs(:),B.name)
-            for i = 1:vobs(B)
-                if ~isequal(S(1).subs{i},B.name{i})
-                    % Rename a variable.
-                    id = find(strcmp(S(1).subs{i},A.name));
-                    if isempty(id)
-                        % Add a new variable a change its name.
-                        B.name(i) = S(1).subs(i);
-                        B.tex(i) = {name2tex(S(1).subs{i})};
-                    else
-                        % Rename variable and change its content.
-                        B.name(i) = A.name(id);
-                        B.tex(i) = A.tex(id);
+        if isdseries(B)
+            if ~isequal(length(S(1).subs),vobs(B))
+                error('dseries::subsasgn: Wrong syntax!')
+            end
+            if ~isequal(S(1).subs(:),B.name)
+                for i = 1:vobs(B)
+                    if ~isequal(S(1).subs{i},B.name{i})
+                        % Rename a variable.
+                        id = find(strcmp(S(1).subs{i},A.name));
+                        if isempty(id)
+                            % Add a new variable a change its name.
+                            B.name(i) = S(1).subs(i);
+                            B.tex(i) = {name2tex(S(1).subs{i})};
+                        else
+                            % Rename variable and change its content.
+                            B.name(i) = A.name(id);
+                            B.tex(i) = A.tex(id);
+                        end
                     end
                 end
             end
+        else
+            error('dseries::subsasgn: Can only assign dseries object.')
         end
       case '.'
         if isequal(S(1).subs,'init') && isdates(B) && isequal(length(B),1)
-- 
GitLab