Consider the following wrong code :
list count = [ 0, 1, 2, 3 ];
list other_count = [ count ];
default
{
state_entry()
{
llSay(0, (string) other_count);
}
}
If compiled into LSO, it produces a clean compile-time error :
Function Args:
Local List:
(1, 17) : ERROR : Lists can't contain lists
If compiled into Mono, it produces a call trace at run time :
[3:27] Object[script:New Script]: Script run-time error
[3:27] Object[script:New Script]: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> LindenLab.SecondLife.ListInListException: An application exception has occured.
plus a dozen cryptic lines.
If possible, such an error should be catched at compile time and not at run time. In any case, a simpler error message should be used, as the problem might be hard to debug for the scripter with such indications.
The same problem is handled cleanly if both lists are defined locally, both in LSO and in Mono.