[m-rev.] for review: allow string.base_string_to_int to parse int.min_int literals
Julien Fischer
juliensf at csse.unimelb.edu.au
Thu Jan 14 15:56:42 AEDT 2010
On Thu, 14 Jan 2010, Ian MacLarty wrote:
> On Thu, Jan 14, 2010 at 11:10:57AM +1100, Julien Fischer wrote:
>>
>> On Thu, 14 Jan 2010, Ralph Becket wrote:
>>
>>> Ian MacLarty, Thursday, 14 January 2010:
>>>> On Thu, Jan 14, 2010 at 8:33 AM, Julien Fischer
>>>>> I think the intent of Ralph's question is: can you now use the literal
>>>>> -9223372036854775808 on 64-bit machines?
>>>>
>>>> Yes, that should also now be possible, although I haven't tested that
>>>> case. I'll test that before I commit, but I'm not sure if I could add
>>>> that test to the test suite so that it would also work on 32 bit
>>>> machines (?).
>>>
>>> Another case for conditional compilation :-)
>>
>> Hardly! Just call int.bits_per_int/0 and then adapt the test
>> accordingly depending on the returned value.
>>
>
> I changed the test case to the following, which gives the same results
> on 64 and 32 bit machines:
>
> Index: tests/general/base_string_to_int_test.m
> ===================================================================
> RCS file: /home/mercury1/repository/tests/general/base_string_to_int_test.m,v
> retrieving revision 1.1
> diff -u -r1.1 base_string_to_int_test.m
> --- tests/general/base_string_to_int_test.m 1 Jul 2004 06:20:14 -0000 1.1
> +++ tests/general/base_string_to_int_test.m 14 Jan 2010 01:19:27 -0000
> @@ -21,7 +21,7 @@
>
> :- implementation.
>
> -:- import_module int, list, string.
> +:- import_module int, list, require, string.
>
> %-----------------------------------------------------------------------------%
>
> @@ -35,8 +35,19 @@
> test("123abc", !IO),
> test("abc", !IO),
> test("+abc", !IO),
> - test("-abc", !IO).
> -
> + test("-abc", !IO),
> + ( int.bits_per_int = 32 ->
> + MinIntStr = "-2147483648"
> + ; int.bits_per_int = 64 ->
> + MinIntStr = "-9223372036854775808"
> + ;
> + error("unknown architecture")
> + ),
> + ( string.base_string_to_int(10, MinIntStr, int.min_int) ->
> + io.write_string("min_int ok.\n", !IO)
> + ;
> + io.write_string("min_int failed.\n", !IO)
> + ).
>
> :- pred test(string::in, io::di, io::uo) is det.
That's fine.
Julien.
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to: mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions: mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
More information about the reviews
mailing list