[m-users.] ROTD-2024-06-28 and use of new format_call pragma
Sean Charles (emacstheviking)
objitsu at gmail.com
Sun Jun 30 07:01:01 AEST 2024
Brilliant.
Thanks Zoltan,
If only Microsoft support was this effective.
> On 29 Jun 2024, at 17:22, Zoltan Somogyi <zoltan.somogyi at runbox.com> wrote:
>
>
> On 2024-06-29 19:56 +10:00 AEST, "Sean Charles (emacstheviking)" <objitsu at gmail.com> wrote:
>> First of all, a huge big massive thank you to everybody involved in that ROTD, I read the entire release notes over breakfast, what a fantastic amount of work and effort has been expended over it. Very much appreciated here. Again, thank you.
>
> The "release notes" of a release-of-the-day consist of the
> continuously updated list of changes since the last stable release.
> In this case, that consists of everything done in the last two years
> and about five months.
>
>> The function chromakey/1 is the source of my problem because it is used by all of the above to actually map the source format string into the final format string, and thus, when we look at the implementation code:
>>
>> format(Format, Args, !IO) :- format_to(io.stdout_stream, Format, Args, !IO).
>> error(Format, Args, !IO) :- format_to(io.stderr_stream, Format, Args, !IO).
>>
>> :- pred format_to(output_stream::in, string::in, list(poly_type)::in, io::di, io::uo) is det.
>> :- pragma format_call(pred(format_to/5), format_string_values(2, 3)).
>>
>> format_to(Stream, Format, Args, !IO) :-
>> [52] io.format(Stream, chromakey(Format), Args, !IO).
>>
>> [67] format(Format, Args) = string.format(chromakey(Format), Args).
>>
>> The errors I get are:
>>
>> aio.m:052: Error: unknown format string in call to predicate `io.format'/5.
>> aio.m:052: Error: unknown list of values to be formatted in call to predicate
>> aio.m:052: `io.format'/5.
>> aio.m:067: Error: unknown format string in call to function `string.format'/2.
>> aio.m:067: Error: unknown list of values to be formatted in call to function
>> aio.m:067: `string.format'/2.
>> ** Error making `Mercury/cs/aio.c'.
>>
>> Am I stuck with this error in these two places or is there someway I can rearrange the code?
>
> No, you are not stuck.
>
> Actually, the error messages above are themselves buggy: the issue
> they report is a warning, not an error, so their first words are misleading.
> And this warning can be overridden. You probably want it overridden
> only on lines 52 and 67, which you can do by wrapping up the goals
> on those lines (represented by Goal below) with a scope that disables this warning:
>
> disable_warning [unknown_format_calls] ( Goal )
>
> Zoltan.
More information about the users
mailing list