changeset 26527:cd73f8e9235f

maint: Merge stable to default.
author John W. Eaton <jwe@octave.org>
date Sat, 12 Jan 2019 09:15:22 -0500
parents 8b0c9dc0799a (current diff) 75c7aafca6bb (diff)
children 8c3e727c44b5
files libgui/src/m-editor/file-editor-tab.cc libgui/src/m-editor/file-editor.cc libinterp/octave-value/ov-base.cc libinterp/octave-value/ov-base.h libinterp/octave-value/ov-class.cc
diffstat 30 files changed, 149 insertions(+), 82 deletions(-) [+]
line wrap: on
line diff
--- a/doc/interpreter/contributors.in	Fri Jan 11 15:22:59 2019 -0500
+++ b/doc/interpreter/contributors.in	Sat Jan 12 09:15:22 2019 -0500
@@ -149,6 +149,7 @@
 Ryan Hinton
 Roman Hodek
 A. Scottedward Hodel
+Júlio Hoffimann
 Richard Allan Holcombe
 Tom Holroyd
 David Hoover
--- a/libgui/languages/be_BY.ts	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/be_BY.ts	Sat Jan 12 09:15:22 2019 -0500
@@ -2445,7 +2445,7 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Convert Line Endings to &amp;Mac (CR)</source>
+        <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -5281,7 +5281,7 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Mac (CR)</source>
+        <source>Legacy Mac (CR)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
--- a/libgui/languages/ca_ES.ts	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/ca_ES.ts	Sat Jan 12 09:15:22 2019 -0500
@@ -1458,8 +1458,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Convert Line Endings to &amp;Mac (CR)</source>
-        <translation>Converteix a la fi de línia de &amp;Mac (CR)</translation>
+        <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
+        <translation type="unfinished">Converteix a la fi de línia de Legacy &amp;Mac (CR)</translation>
     </message>
     <message>
         <location line="+3"/>
@@ -4319,8 +4319,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Mac (CR)</source>
-        <translation>Mac (CR)</translation>
+        <source>Legacy Mac (CR)</source>
+        <translation type="unfinished">Legacy Mac (CR)</translation>
     </message>
     <message>
         <location line="+5"/>
--- a/libgui/languages/de_DE.ts	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/de_DE.ts	Sat Jan 12 09:15:22 2019 -0500
@@ -801,8 +801,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Convert Line Endings to &amp;Mac (CR)</source>
-        <translation>Zeilenenden für &amp;Mac umwandeln (CR)</translation>
+        <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
+        <translation type="unfinished">Zeilenenden für Legacy &amp;Mac umwandeln (CR)</translation>
     </message>
     <message>
         <location line="+3"/>
@@ -3687,8 +3687,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Mac (CR)</source>
-        <translation>Mac (CR)</translation>
+        <source>Legacy Mac (CR)</source>
+        <translation type="unfinished">Legacy Mac (CR)</translation>
     </message>
     <message>
         <location line="+5"/>
--- a/libgui/languages/en_US.ts	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/en_US.ts	Sat Jan 12 09:15:22 2019 -0500
@@ -780,7 +780,7 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Convert Line Endings to &amp;Mac (CR)</source>
+        <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -3555,7 +3555,7 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Mac (CR)</source>
+        <source>Legacy Mac (CR)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
--- a/libgui/languages/es_ES.ts	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/es_ES.ts	Sat Jan 12 09:15:22 2019 -0500
@@ -803,8 +803,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Convert Line Endings to &amp;Mac (CR)</source>
-        <translation>Convertir caracteres de find e línea a &amp;Mac (CR)</translation>
+        <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
+        <translation type="unfinished">Convertir caracteres de find e línea a Legacy &amp;Mac (CR)</translation>
     </message>
     <message>
         <location line="+3"/>
@@ -3908,8 +3908,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Mac (CR)</source>
-        <translation>Mac (CR)</translation>
+        <source>Legacy Mac (CR)</source>
+        <translation type="unfinished">Legacy Mac (CR)</translation>
     </message>
     <message>
         <location line="+5"/>
--- a/libgui/languages/eu_ES.ts	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/eu_ES.ts	Sat Jan 12 09:15:22 2019 -0500
@@ -2433,8 +2433,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Convert Line Endings to &amp;Mac (CR)</source>
-        <translation type="unfinished">Lerro-amaiera &quot;&amp;Mac (CR)&quot;-era aldatu</translation>
+        <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
+        <translation type="unfinished">Lerro-amaiera &quot;Legacy &amp;Mac (CR)&quot;-era aldatu</translation>
     </message>
     <message>
         <location line="+3"/>
@@ -5504,8 +5504,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Mac (CR)</source>
-        <translation>Mac (CR)</translation>
+        <source>Legacy Mac (CR)</source>
+        <translation type="unfinished">Legacy Mac (CR)</translation>
     </message>
     <message>
         <location line="+5"/>
--- a/libgui/languages/fr_FR.ts	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/fr_FR.ts	Sat Jan 12 09:15:22 2019 -0500
@@ -794,8 +794,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Convert Line Endings to &amp;Mac (CR)</source>
-        <translation>Convertir les Fins de Lignes en &amp;Mac (CR)</translation>
+        <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
+        <translation type="unfinished">Convertir les Fins de Lignes en Legacy &amp;Mac (CR)</translation>
     </message>
     <message>
         <location line="+3"/>
@@ -3884,8 +3884,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Mac (CR)</source>
-        <translation>Mac (CR)</translation>
+        <source>Legacy Mac (CR)</source>
+        <translation type="unfinished">Legacy Mac (CR)</translation>
     </message>
     <message>
         <location line="+5"/>
--- a/libgui/languages/it_IT.ts	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/it_IT.ts	Sat Jan 12 09:15:22 2019 -0500
@@ -1463,8 +1463,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Convert Line Endings to &amp;Mac (CR)</source>
-        <translation>A capo in stile &amp;Mac (CR)</translation>
+        <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
+        <translation type="unfinished">A capo in stile Legacy &amp;Mac (CR)</translation>
     </message>
     <message>
         <location line="+3"/>
@@ -4353,8 +4353,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Mac (CR)</source>
-        <translation>Mac (CR)</translation>
+        <source>Legacy Mac (CR)</source>
+        <translation type="unfinished">Legacy Mac (CR)</translation>
     </message>
     <message>
         <location line="+5"/>
--- a/libgui/languages/ja_JP.ts	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/ja_JP.ts	Sat Jan 12 09:15:22 2019 -0500
@@ -1455,8 +1455,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Convert Line Endings to &amp;Mac (CR)</source>
-        <translation>行末文字を Mac 仕様にする (CR) (&amp;M)</translation>
+        <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
+        <translation type="unfinished">行末文字を Legacy Mac 仕様にする (CR) (&amp;M)</translation>
     </message>
     <message>
         <location line="+3"/>
@@ -4360,8 +4360,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Mac (CR)</source>
-        <translation>Mac (CR)</translation>
+        <source>Legacy Mac (CR)</source>
+        <translation type="unfinished">Legacy Mac (CR)</translation>
     </message>
     <message>
         <location line="+5"/>
--- a/libgui/languages/lt_LT.ts	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/lt_LT.ts	Sat Jan 12 09:15:22 2019 -0500
@@ -1446,7 +1446,7 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Convert Line Endings to &amp;Mac (CR)</source>
+        <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -4221,7 +4221,7 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Mac (CR)</source>
+        <source>Legacy Mac (CR)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
--- a/libgui/languages/nl_NL.ts	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/nl_NL.ts	Sat Jan 12 09:15:22 2019 -0500
@@ -2450,8 +2450,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Convert Line Endings to &amp;Mac (CR)</source>
-        <translation>Zet regeleindes om naar &amp;Mac (CR)</translation>
+        <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
+        <translation type="unfinished">Zet regeleindes om naar Legacy &amp;Mac (CR)</translation>
     </message>
     <message>
         <location line="+3"/>
@@ -5539,8 +5539,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Mac (CR)</source>
-        <translation>Mac (CR)</translation>
+        <source>Legacy Mac (CR)</source>
+        <translation type="unfinished">Legacy Mac (CR)</translation>
     </message>
     <message>
         <location line="+5"/>
--- a/libgui/languages/pt_BR.ts	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/pt_BR.ts	Sat Jan 12 09:15:22 2019 -0500
@@ -793,8 +793,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Convert Line Endings to &amp;Mac (CR)</source>
-        <translation>Converter Finais de Linha para &amp;Mac (CR)</translation>
+        <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
+        <translation type="unfinished">Converter Finais de Linha para Legacy &amp;Mac (CR)</translation>
     </message>
     <message>
         <location line="+3"/>
@@ -3884,8 +3884,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Mac (CR)</source>
-        <translation>Mac (CR)</translation>
+        <source>Legacy Mac (CR)</source>
+        <translation type="unfinished">Legacy Mac (CR)</translation>
     </message>
     <message>
         <location line="+5"/>
--- a/libgui/languages/pt_PT.ts	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/pt_PT.ts	Sat Jan 12 09:15:22 2019 -0500
@@ -1452,8 +1452,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Convert Line Endings to &amp;Mac (CR)</source>
-        <translation type="unfinished">Converter Fins de Linha para &amp;Mac (CR)</translation>
+        <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
+        <translation type="unfinished">Converter Fins de Linha para Legacy &amp;Mac (CR)</translation>
     </message>
     <message>
         <location line="+3"/>
@@ -4509,8 +4509,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Mac (CR)</source>
-        <translation>Mac (CR)</translation>
+        <source>Legacy Mac (CR)</source>
+        <translation type="unfinished">Legacy Mac (CR)</translation>
     </message>
     <message>
         <location line="+5"/>
--- a/libgui/languages/ru_RU.ts	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/ru_RU.ts	Sat Jan 12 09:15:22 2019 -0500
@@ -1455,8 +1455,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Convert Line Endings to &amp;Mac (CR)</source>
-        <translation type="unfinished">Конец строки &amp;Mac (CR)</translation>
+        <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
+        <translation type="unfinished">Конец строки Legacy &amp;Mac (CR)</translation>
     </message>
     <message>
         <location line="+3"/>
@@ -4303,8 +4303,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Mac (CR)</source>
-        <translation>Mac (CR)</translation>
+        <source>Legacy Mac (CR)</source>
+        <translation type="unfinished">Legacy Mac (CR)</translation>
     </message>
     <message>
         <location line="+5"/>
--- a/libgui/languages/translators	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/translators	Sat Jan 12 09:15:22 2019 -0500
@@ -2,19 +2,23 @@
 # to be able to inform them about generic translation file changes.
 # The generic file that can be used as a template for new
 # translation files is en_US.ts
-be_BY Mihas Varantsou <meequz@gmail.com>
-ca_ES Salva Ardid <jsardid@gmail.com>
-de_DE Andreas Weber <andy.weber.aw@googlemail.com>
-es_ES Valentin Ortega-Clavero <arcanos3030@gmail.com>, José Luis García Pallero <jgpallero@gmail.com>
-eu_ES Ander Aurrekoetxea <zaurreko@gmail.com>
-fr_FR David Bateman <dbateman@free.fr>, Catalin Codreanu <codreanu.catalin@gmail.com>
-it_IT Massimiliano Fasi <massimiliano.fasi@gmail.com>, Marco Caliari <marco.caliari@univr.it>
-ja_JP Tatsuro Matsuoka <tmacchant@yahoo.co.jp>
-lt_LT Danius V. <danius-v@inbox.lt>
-nl_NL Philip Nienhuis <prnienhuis@users.sf.net>
-pt_BR Júlio Hoffimann Mendes <julio.hoffimann@gmail.com>, Felipe G. Nievinski <fgnievinski@gmail.com>
-pt_PT Carnë Draug <carandraug@octave.org>
-ru_RU Andriy Shinkarchuck <adriano32.gnu@gmail.com>, Dmitry Roshchin <dmitry@roshchin.org>
-uk_UA Andriy Shinkarchuck <adriano32.gnu@gmail.com>
-nl_NL Sander van Rijn <svr003@gmail.com>
-zh_CN Jeff Bai <aosc@members.fsf.org>
+
+be_BY  N.N.
+ca_ES  Salva Ardid <jsardid@gmail.com>
+de_DE  Andreas Weber <andy.weber.aw@googlemail.com>
+es_ES  Valentin Ortega-Clavero <arcanos3030@gmail.com>
+       José Luis García Pallero <jgpallero@gmail.com>
+eu_ES  Ander Aurrekoetxea <zaurreko@gmail.com>
+fr_FR  David Bateman <dbateman@free.fr>
+       Catalin Codreanu <codreanu.catalin@gmail.com>
+       Pantxo Diribarne <pantxo.diribarne@gmail.com>
+it_IT  Massimiliano Fasi <massimiliano.fasi@gmail.com>
+       Marco Caliari <marco.caliari@univr.it>
+ja_JP  Tatsuro Matsuoka <tmacchant@yahoo.co.jp>
+lt_LT  Danius V. <danius-v@inbox.lt>
+nl_NL  Philip Nienhuis <prnienhuis@users.sf.net>
+pt_BR  Felipe G. Nievinski <fgnievinski@gmail.com>
+pt_PT  Carnë Draug <carandraug@octave.org>
+ru_RU  Andriy Shinkarchuck <adriano32.gnu@gmail.com>
+uk_UA  Andriy Shinkarchuck <adriano32.gnu@gmail.com>
+zh_CN  Jeff Bai <aosc@members.fsf.org>
--- a/libgui/languages/uk_UA.ts	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/uk_UA.ts	Sat Jan 12 09:15:22 2019 -0500
@@ -1446,7 +1446,7 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Convert Line Endings to &amp;Mac (CR)</source>
+        <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -4221,7 +4221,7 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Mac (CR)</source>
+        <source>Legacy Mac (CR)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
--- a/libgui/languages/zh_CN.ts	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/languages/zh_CN.ts	Sat Jan 12 09:15:22 2019 -0500
@@ -1457,8 +1457,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Convert Line Endings to &amp;Mac (CR)</source>
-        <translation>将行尾转为 &amp;Mac 风格 (CR)</translation>
+        <source>Convert Line Endings to Legacy &amp;Mac (CR)</source>
+        <translation type="unfinished">将行尾转为 Legacy &amp;Mac 风格 (CR)</translation>
     </message>
     <message>
         <location line="+3"/>
@@ -4373,8 +4373,8 @@
     </message>
     <message>
         <location line="+5"/>
-        <source>Mac (CR)</source>
-        <translation>Mac (CR)</translation>
+        <source>Legacy Mac (CR)</source>
+        <translation type="unfinished">Legacy Mac (CR)</translation>
     </message>
     <message>
         <location line="+5"/>
--- a/libgui/src/m-editor/file-editor-tab.cc	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/src/m-editor/file-editor-tab.cc	Sat Jan 12 09:15:22 2019 -0500
@@ -697,7 +697,14 @@
 
           }
 
-        if (update_apis || ! _lexer_apis->loadPrepared (_prep_apis_file))
+        // make sure the apis file is usable
+        QFile f (_prep_apis_file);
+        bool apis_usable = f.open (QIODevice::ReadWrite);
+        if (apis_usable)
+          f.close ();
+
+        if (apis_usable &&
+            (update_apis || ! _lexer_apis->loadPrepared (_prep_apis_file)))
           {
             // either we have decided to update the apis file or
             // no prepared info was loaded, prepare and save if possible
--- a/libgui/src/m-editor/file-editor.cc	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/src/m-editor/file-editor.cc	Sat Jan 12 09:15:22 2019 -0500
@@ -1849,7 +1849,7 @@
 
     m_conv_eol_mac_action
       = add_action (m_edit_fmt_menu,
-                    tr ("Convert Line Endings to &Mac (CR)"),
+                    tr ("Convert Line Endings to Legacy &Mac (CR)"),
                     SLOT (request_conv_eol_mac (bool)));
 
     m_edit_nav_menu = m_edit_menu->addMenu (tr ("Navi&gation"));
--- a/libgui/src/settings-dialog.ui	Fri Jan 11 15:22:59 2019 -0500
+++ b/libgui/src/settings-dialog.ui	Sat Jan 12 09:15:22 2019 -0500
@@ -2014,7 +2014,7 @@
                       </item>
                       <item>
                        <property name="text">
-                        <string>Mac (CR)</string>
+                        <string>Legacy Mac (CR)</string>
                        </property>
                       </item>
                       <item>
--- a/libinterp/octave-value/ov-base.cc	Fri Jan 11 15:22:59 2019 -0500
+++ b/libinterp/octave-value/ov-base.cc	Sat Jan 12 09:15:22 2019 -0500
@@ -1461,6 +1461,22 @@
   return m;
 }
 
+bool
+called_from_builtin (void)
+{
+  octave::call_stack& cs = octave::__get_call_stack__ ("called_from_builtin");
+
+  octave_function *fcn = cs.caller ();
+
+  // FIXME: we probably need a better check here, or some other
+  // mechanism to avoid overloaded functions when builtin is used.
+  // For example, what if someone overloads the builtin function?
+  // Also, are there other places where using builtin is not properly
+  // avoiding dispatch?
+
+  return (fcn && fcn->name () == "builtin");
+}
+
 void
 install_base_type_conversions (octave::type_info& ti)
 {
--- a/libinterp/octave-value/ov-base.h	Fri Jan 11 15:22:59 2019 -0500
+++ b/libinterp/octave-value/ov-base.h	Sat Jan 12 09:15:22 2019 -0500
@@ -884,4 +884,8 @@
                const std::list<octave_value_list>& idx,
                const std::string& who);
 
+// Tells whether some regular octave_value_base methods are being called from
+// within the "builtin" function.
+extern OCTINTERP_API bool called_from_builtin (void);
+
 #endif
--- a/libinterp/octave-value/ov-class.cc	Fri Jan 11 15:22:59 2019 -0500
+++ b/libinterp/octave-value/ov-class.cc	Sat Jan 12 09:15:22 2019 -0500
@@ -294,7 +294,7 @@
 Matrix
 octave_class::size (void)
 {
-  if (in_class_method ())
+  if (in_class_method () || called_from_builtin ())
     return octave_base_value::size ();
 
   Matrix retval (1, 2, 1.0);
@@ -334,7 +334,7 @@
 octave_idx_type
 octave_class::numel (const octave_value_list& idx)
 {
-  if (in_class_method ())
+  if (in_class_method () || called_from_builtin ())
     return octave_base_value::numel (idx);
 
   octave_idx_type retval = -1;
@@ -374,7 +374,7 @@
 {
   octave_value_list retval;
 
-  if (in_class_method ())
+  if (in_class_method () || called_from_builtin ())
     {
       // FIXME: this block of code is the same as the body of
       // octave_struct::subsref.  Maybe it could be shared instead of
@@ -535,7 +535,7 @@
 {
   octave_value retval;
 
-  if (! in_class_method ())
+  if (! (in_class_method () || called_from_builtin ()))
     {
       octave::symbol_table& symtab
         = octave::__get_symbol_table__ ("octave_class::subsasgn_common");
--- a/libinterp/octave-value/ov-classdef.cc	Fri Jan 11 15:22:59 2019 -0500
+++ b/libinterp/octave-value/ov-classdef.cc	Sat Jan 12 09:15:22 2019 -0500
@@ -865,7 +865,7 @@
 
   cdef_class cls = object.get_class ();
 
-  if (! in_class_method (cls))
+  if (! in_class_method (cls) && ! called_from_builtin ())
     {
       cdef_method meth = cls.find_method ("subsref");
 
@@ -924,7 +924,7 @@
 
   cdef_class cls = object.get_class ();
 
-  if (! in_class_method (cls))
+  if (! in_class_method (cls) && ! called_from_builtin ())
     {
       cdef_method meth = cls.find_method ("subsasgn");
 
@@ -979,7 +979,7 @@
 
   cdef_class cls = object.get_class ();
 
-  if (! in_class_method (cls))
+  if (! in_class_method (cls) && ! called_from_builtin ())
     {
       cdef_method meth = cls.find_method ("numel");
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/bug-54995/@testclass/subsref.m	Sat Jan 12 09:15:22 2019 -0500
@@ -0,0 +1,3 @@
+function val = subsref (obj, S)
+  val = builtin ("subsref", obj, S);
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/bug-54995/@testclass/testclass.m	Sat Jan 12 09:15:22 2019 -0500
@@ -0,0 +1,4 @@
+function obj = testclass ()
+  obj = struct ("x", eye (4));
+  obj = class(obj, "testclass");
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/bug-54995/bug-54995.tst	Sat Jan 12 09:15:22 2019 -0500
@@ -0,0 +1,21 @@
+## Copyright (C) 2018 Guillaume Flandin
+##
+## This file is part of Octave.
+##
+## Octave is free software: you can redistribute it and/or modify it
+## under the terms of the GNU General Public License as published by
+## the Free Software Foundation, either version 3 of the License, or
+## (at your option) any later version.
+##
+## Octave is distributed in the hope that it will be useful, but
+## WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with Octave; see the file COPYING.  If not, see
+## <https://www.gnu.org/licenses/>.
+
+%!test <*54995>
+%! obj = testclass ();
+%! assert (obj.x(1), 1);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/bug-54995/module.mk	Sat Jan 12 09:15:22 2019 -0500
@@ -0,0 +1,6 @@
+bug_54995_TEST_FILES = \
+  %reldir%/@testclass/testclass.m \
+  %reldir%/@testclass/subsref.m \
+  %reldir%/bug-54995.tst
+
+TEST_FILES += $(bug_54995_TEST_FILES)
--- a/test/module.mk	Fri Jan 11 15:22:59 2019 -0500
+++ b/test/module.mk	Sat Jan 12 09:15:22 2019 -0500
@@ -75,6 +75,7 @@
 include %reldir%/bug-52075/module.mk
 include %reldir%/bug-52722/module.mk
 include %reldir%/bug-53027/module.mk
+include %reldir%/bug-54995/module.mk
 include %reldir%/class-concat/module.mk
 include %reldir%/classdef/module.mk
 include %reldir%/classdef-multiple-inheritance/module.mk