[m-rev.] for review: Fix some handling of ill-formed sequences in string module.
    Zoltan Somogyi 
    zoltan.somogyi at runbox.com
       
    Wed Jul 27 12:32:40 AEST 2022
    
    
  
2022-07-27 11:34 GMT+10:00 "Peter Wang" <novalazy at gmail.com>:
>> >    Fix the Mercury implementation of string.contains_char to continue
>> >    searching for the character past any ill-formed code unit sequences.
>> 
>> Do we even need the Mercury implementation since there are foreign_proc
>> implementations for all three target languages?
>> 
> 
> Not really, but we have them for other predicates as well.
Were those left over from when they were the definition in Erlang grades?
>  ### Changes to the `string` module
> 
> +* We have fixed the behaviour of the following predicates when called on a
> +  string containing ill-formed code unit sequences:
> +
> +   - pred `all_match/2`
> +   - pred `index_next_repl/5`
> +   - pred `unsafe_index_next_repl/5`
> +   - pred `prev_index_repl/5`
> +   - pred `unsafe_prev_index_repl/5`
I would s/fixed/clarified/.
> --- a/library/string.m
> +++ b/library/string.m
> @@ -576,14 +576,15 @@
>      % all_match(TestPred, String):
>      %
>      % True iff String is empty or contains only code points that satisfy
> -    % TestPred.
> +    % TestPred. False if String contains an ill-formed code unit sequence.
>      %
That doesn't work, because the second sentence adds a condition for False
that the "iff" in the first sentence rules out. How about
True iff all code points in String satisfy Pred, and String contains no ill-formed
code unit sequences.
The other two comment changes are fine.
The NEWS update mentions two other predicates: why no update
to them?
Zoltan.
    
    
More information about the reviews
mailing list