diff -r 756c7a550542 libinterp/octave-value/ov-classdef.cc --- a/libinterp/octave-value/ov-classdef.cc Tue Feb 28 16:54:08 2017 -0800 +++ b/libinterp/octave-value/ov-classdef.cc Sat Mar 04 11:05:04 2017 +0100 @@ -1817,16 +1817,25 @@ // Look into superclasses Cell super_classes = get ("SuperClasses").cell_value (); + cdef_class cls1; + int nfnd = 0; for (int i = 0; i < super_classes.numel (); i++) { cdef_class cls = lookup_class (super_classes(i)); - cdef_method meth = cls.find_method (nm); - - if (meth.ok ()) - return meth; + if (cls.find_method (nm).ok ()) + { + nfnd++; + if (nfnd == 1) + cls1 = cls; + if (nfnd == 2) + error ("method %s: conflicting definitions in classes '%s' and '%s'", + nm.c_str (), cls1.get_name ().c_str (), cls.get_name ().c_str ()); + } } + if (nfnd == 1) + return cls1.find_method (nm); } return cdef_method ();