* Bug 14435 fixed: better error reporting in extract overloads 86/21586/11
authormottelet <stephane.mottelet@utc.fr>
Wed, 7 Oct 2020 10:14:55 +0000 (12:14 +0200)
committerCedric Delamarre <cdl@esi-group.com>
Thu, 15 Oct 2020 08:08:07 +0000 (10:08 +0200)
commit6401ce890ada3bd7ff0a5236ac3571f068d944d8
tree27b1ea113f45e7ba9fa7443c23442e68c783a273
parent9f303472f22869e0a2146a5c4c70ed4ddaf20753
* Bug 14435 fixed: better error reporting in extract overloads

http://bugzilla.scilab.org/show_bug.cgi?id=14435

When you overload extraction on a MList or a TList, error reporting
should be handled by the overload, this is not the case:

t=tlist(["user","x"],0);
function varargout = %user_e(i,x)
  if or(i==["a" "b"])
    mprintf("Extract field %s\n",i);
   else
    error(msprintf("Error: field %s is undefined !\n\n",i));
   end
end

--> t.a
Extract field a

--> t.z
at line     5 of function %user_e

Undefined operation for the given operands.
check or define function %l_e for overloading.

I don't see the error message of the overload, it has been
superseeded. Moreover, it is incorrect (we are not overloading an
operator).

With the proposed patch we have:

--> t.z
at line     5 of function %user_e

Error: field z is undefined !

--> t("z")
at line     5 of function %user_e

Error: field z is undefined !

Change-Id: Idc8fa19579c38093019a97e8542f10ed4782ed8f
scilab/CHANGES.md
scilab/modules/ast/src/cpp/ast/runvisitor.cpp
scilab/modules/ast/src/cpp/types/mlist.cpp
scilab/modules/ast/src/cpp/types/overload.cpp
scilab/modules/ast/src/cpp/types/tlist.cpp
scilab/modules/ast/tests/nonreg_tests/bug_14435.tst [new file with mode: 0644]