changeset 29322:d680d5ebafaa

maint: merge stable to default.
author Markus Mützel <markus.muetzel@gmx.de>
date Sat, 23 Jan 2021 15:38:33 +0100
parents 960ea0ccff98 (current diff) 09f99fe5190c (diff)
children 7bb6a7cbb65e
files libinterp/parse-tree/pt-assign.cc test/bug-59704/bug-59704.tst test/bug-59704/bug59704_1.m test/bug-59704/module.mk
diffstat 5 files changed, 44 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/parse-tree/pt-assign.cc	Sat Jan 23 14:30:55 2021 +0100
+++ b/libinterp/parse-tree/pt-assign.cc	Sat Jan 23 15:38:33 2021 +0100
@@ -204,6 +204,8 @@
                                            ? rhs_val1(0).list_value ()
                                            : rhs_val1);
 
+        tw.set_lvalue_list (nullptr);
+
         octave_idx_type k = 0;
 
         octave_idx_type n = rhs_val.length ();
--- a/test/bug-59704/bug-59704.tst	Sat Jan 23 14:30:55 2021 +0100
+++ b/test/bug-59704/bug-59704.tst	Sat Jan 23 15:38:33 2021 +0100
@@ -2,3 +2,8 @@
 %! o = bug59704_1 ();
 %! o.test ();
 %! assert (o.p, [])
+
+%!test
+%! o = bug59704_2 ();
+%! [~, o(1)] = size (rand (2, 5));
+%! assert (o(1), 5)
--- a/test/bug-59704/bug59704_1.m	Sat Jan 23 14:30:55 2021 +0100
+++ b/test/bug-59704/bug59704_1.m	Sat Jan 23 15:38:33 2021 +0100
@@ -6,12 +6,12 @@
 
   methods
 
-    function n = numel(this, varargin)
+    function n = numel (this, varargin)
       n = 1;
     endfunction
 
-    function test(this)
-      [~, this.p] = bug59704_1_test(this.p);
+    function test (this)
+      [~, this.p] = bug59704_1_test (this.p);
     endfunction
 
   endmethods
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/bug-59704/bug59704_2.m	Sat Jan 23 15:38:33 2021 +0100
@@ -0,0 +1,33 @@
+classdef bug59704_2 < handle
+
+  properties
+    data_
+  endproperties
+
+  methods
+
+    function obj = bug59704_2 ()
+      obj.data_ = 1001:1005;
+    endfunction
+
+    function r = subsref (obj, S)
+      ## Transform: obj(index) --> obj.data_(index)
+      if strcmp (S(1).type, '()')
+        r = subsref (obj.data_, S);
+      else
+        r = builtin('subsref', obj, S);
+      endif
+    endfunction
+
+    function obj = subsasgn (obj, S, B)
+      ## Transform: obj(index) --> obj.data_(index)
+      if strcmp (S(1).type, '()')
+        obj.data_ = subsasgn (obj.data_, S, B);
+      else
+        obj = builtin ('subsasgn', obj, S, B);
+      endif
+    endfunction
+
+  endmethods
+
+endclassdef
--- a/test/bug-59704/module.mk	Sat Jan 23 14:30:55 2021 +0100
+++ b/test/bug-59704/module.mk	Sat Jan 23 15:38:33 2021 +0100
@@ -1,6 +1,7 @@
 bug_59704_TEST_FILES = \
   %reldir%/bug59704_1.m \
   %reldir%/bug59704_1_test.m \
+  %reldir%/bug59704_2.m \
   %reldir%/bug-59661.tst
 
 TEST_FILES += $(bug_59704_TEST_FILES)