So you've made Debug.warn and Debug.error variadic? Great!

On Apr 21, 2006, at 12:27 PM, P T Withington wrote:

> Since no one commented, I implemented this (for legals), to see how
> it works.  If there is popular demand, it could be migrated to 3.x.
>
> The underlying implementation of Debug.format now detects the case of
> the 'control' string either not being a string, or there being
> multiple arguments and no format directives in the control string.
> In either of those cases, it will simply emit each of the arguments
> separated by spaces.
>
> If there is a control string with format directives, it will warn if
> the number of arguments does not match the number of directives.
>
> On 2006-04-19, at 12:14 EDT, P T Withington wrote:
>
>> The debugger has always had a method Debug.write that can be used
>> to output to the debugger console.  It takes any number of
>> arguments and outputs them, separated by spaces.  It uses the
>> Debug.__String method to present objects, which makes them
>> 'inspectable' in the output window (you can click on them to invoke
>> Debug.inspect on the object).
>>
>> In 3.2 (and perhaps earlier) there is a new method, Debug.format,
>> that acts more like printf.  It takes a 'control' string, and any
>> number of arguments and formats the arguments according to the
>> format directives in the control string.  For the most part it
>> supports the same directives as printf, but there is an additional
>> one, %w, which outputs the argument as if it were printed by
>> Debug.write, thus making it inspectable.  [In the Legal's branch,
>> objects that are formatted by %s are also inspectable, but their
>> presentation is as if they were printed by toString.]
>>
>> Debug.warn and Debug.error take arguments like Debug.format and
>> create warnings or error messages on the debugger console.  They
>> are labeled with a tag (WARNING: or ERROR:) and presented in orange
>> or red.  They have the additional feature that if backtracing is
>> enabled, they capture a backtrace, which can be seen by inspecting
>> (clicking on) the message.
>>
>> In recent weeks I have had several bug reports that Debug.warn and
>> Debug.error do not work.  Apparently this is because the caller
>> expected them to be like Debug.write and simply take a list of
>> arguments that are output separated by spaces.  What they see is
>> only their first argument being printed (because it is interpreted
>> as a control string with no format directives).
>>
>> It occurred to me today that I could have them check for the case
>> of multiple arguments with no format controls in the first argument
>> and operate in 'Debug.write compatibility mode' if that is the
>> case.  Would this be useful?  Too complex to document?  Are there
>> pitfalls?  Is there a use case where ignoring the extra arguments
>> is really what is desired?
>>
>> Your comments solicited.
>
> _______________________________________________
> Laszlo-dev mailing list
> [email protected]
> http://www.openlaszlo.org/mailman/listinfo/laszlo-dev

_______________________________________________
Laszlo-dev mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-dev

Reply via email to