Mirror of the Vim source from https://github.com/vim/vim
Revisão | fdfe44ac6a1aca3900af8cb786b9d528a816ce0a (tree) |
---|---|
Hora | 2020-02-18 06:15:07 |
Autor | Bram Moolenaar <Bram@vim....> |
Commiter | Bram Moolenaar |
patch 8.2.0271: the "num64" feature is available everywhere
Commit: https://github.com/vim/vim/commit/82f654e092ac5b86316bc1b30c0b07a849813186
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Feb 17 22:12:50 2020 +0100
@@ -3545,9 +3545,7 @@ | ||
3545 | 3545 | "mzscheme", |
3546 | 3546 | #endif |
3547 | 3547 | #endif |
3548 | -#ifdef FEAT_NUM64 | |
3549 | 3548 | "num64", |
3550 | -#endif | |
3551 | 3549 | #ifdef FEAT_OLE |
3552 | 3550 | "ole", |
3553 | 3551 | #endif |
@@ -285,16 +285,12 @@ | ||
285 | 285 | * +eval Built-in script language and expression evaluation, |
286 | 286 | * ":let", ":if", etc. |
287 | 287 | * +float Floating point variables. |
288 | - * +num64 64-bit Number. | |
289 | 288 | */ |
290 | 289 | #ifdef FEAT_NORMAL |
291 | 290 | # define FEAT_EVAL |
292 | 291 | # if defined(HAVE_FLOAT_FUNCS) || defined(MSWIN) || defined(MACOS_X) |
293 | 292 | # define FEAT_FLOAT |
294 | 293 | # endif |
295 | -# if defined(HAVE_STDINT_H) || defined(MSWIN) || (VIM_SIZEOF_LONG >= 8) | |
296 | -# define FEAT_NUM64 | |
297 | -# endif | |
298 | 294 | #endif |
299 | 295 | |
300 | 296 | #ifdef FEAT_EVAL |
@@ -4246,10 +4246,8 @@ | ||
4246 | 4246 | # define TMP_LEN 350 // On my system 1e308 is the biggest number possible. |
4247 | 4247 | // That sounds reasonable to use as the maximum |
4248 | 4248 | // printable. |
4249 | -# elif defined(FEAT_NUM64) | |
4249 | +# else | |
4250 | 4250 | # define TMP_LEN 66 |
4251 | -# else | |
4252 | -# define TMP_LEN 34 | |
4253 | 4251 | # endif |
4254 | 4252 | char tmp[TMP_LEN]; |
4255 | 4253 |
@@ -4374,11 +4372,7 @@ | ||
4374 | 4372 | if (length_modifier == 'l' && *p == 'l') |
4375 | 4373 | { |
4376 | 4374 | // double l = long long |
4377 | -# ifdef FEAT_NUM64 | |
4378 | 4375 | length_modifier = 'L'; |
4379 | -# else | |
4380 | - length_modifier = 'l'; // treat it as a single 'l' | |
4381 | -# endif | |
4382 | 4376 | p++; |
4383 | 4377 | } |
4384 | 4378 | } |
@@ -4394,7 +4388,7 @@ | ||
4394 | 4388 | default: break; |
4395 | 4389 | } |
4396 | 4390 | |
4397 | -# if defined(FEAT_EVAL) && defined(FEAT_NUM64) | |
4391 | +# if defined(FEAT_EVAL) | |
4398 | 4392 | switch (fmt_spec) |
4399 | 4393 | { |
4400 | 4394 | case 'd': case 'u': case 'o': case 'x': case 'X': |
@@ -4516,11 +4510,9 @@ | ||
4516 | 4510 | long int long_arg = 0; |
4517 | 4511 | unsigned long int ulong_arg = 0; |
4518 | 4512 | |
4519 | -# ifdef FEAT_NUM64 | |
4520 | 4513 | // only defined for length modifier ll |
4521 | 4514 | varnumber_T llong_arg = 0; |
4522 | 4515 | uvarnumber_T ullong_arg = 0; |
4523 | -# endif | |
4524 | 4516 | |
4525 | 4517 | // only defined for b conversion |
4526 | 4518 | uvarnumber_T bin_arg = 0; |
@@ -4581,19 +4573,17 @@ | ||
4581 | 4573 | else if (long_arg < 0) |
4582 | 4574 | arg_sign = -1; |
4583 | 4575 | break; |
4584 | -# ifdef FEAT_NUM64 | |
4585 | 4576 | case 'L': |
4586 | 4577 | llong_arg = |
4587 | -# if defined(FEAT_EVAL) | |
4578 | +# if defined(FEAT_EVAL) | |
4588 | 4579 | tvs != NULL ? tv_nr(tvs, &arg_idx) : |
4589 | -# endif | |
4580 | +# endif | |
4590 | 4581 | va_arg(ap, varnumber_T); |
4591 | 4582 | if (llong_arg > 0) |
4592 | 4583 | arg_sign = 1; |
4593 | 4584 | else if (llong_arg < 0) |
4594 | 4585 | arg_sign = -1; |
4595 | 4586 | break; |
4596 | -# endif | |
4597 | 4587 | } |
4598 | 4588 | } |
4599 | 4589 | else |
@@ -4622,18 +4612,16 @@ | ||
4622 | 4612 | if (ulong_arg != 0) |
4623 | 4613 | arg_sign = 1; |
4624 | 4614 | break; |
4625 | -# ifdef FEAT_NUM64 | |
4626 | 4615 | case 'L': |
4627 | 4616 | ullong_arg = |
4628 | -# if defined(FEAT_EVAL) | |
4617 | +# if defined(FEAT_EVAL) | |
4629 | 4618 | tvs != NULL ? (uvarnumber_T) |
4630 | 4619 | tv_nr(tvs, &arg_idx) : |
4631 | -# endif | |
4620 | +# endif | |
4632 | 4621 | va_arg(ap, uvarnumber_T); |
4633 | 4622 | if (ullong_arg != 0) |
4634 | 4623 | arg_sign = 1; |
4635 | 4624 | break; |
4636 | -# endif | |
4637 | 4625 | } |
4638 | 4626 | } |
4639 | 4627 |
@@ -4687,17 +4675,13 @@ | ||
4687 | 4675 | ; |
4688 | 4676 | else if (length_modifier == 'L') |
4689 | 4677 | { |
4690 | -# ifdef FEAT_NUM64 | |
4691 | -# ifdef MSWIN | |
4678 | +# ifdef MSWIN | |
4692 | 4679 | f[f_l++] = 'I'; |
4693 | 4680 | f[f_l++] = '6'; |
4694 | 4681 | f[f_l++] = '4'; |
4695 | -# else | |
4682 | +# else | |
4696 | 4683 | f[f_l++] = 'l'; |
4697 | 4684 | f[f_l++] = 'l'; |
4698 | -# endif | |
4699 | -# else | |
4700 | - f[f_l++] = 'l'; | |
4701 | 4685 | # endif |
4702 | 4686 | } |
4703 | 4687 | else |
@@ -4735,11 +4719,9 @@ | ||
4735 | 4719 | case 'l': str_arg_l += sprintf( |
4736 | 4720 | tmp + str_arg_l, f, long_arg); |
4737 | 4721 | break; |
4738 | -# ifdef FEAT_NUM64 | |
4739 | 4722 | case 'L': str_arg_l += sprintf( |
4740 | 4723 | tmp + str_arg_l, f, llong_arg); |
4741 | 4724 | break; |
4742 | -# endif | |
4743 | 4725 | } |
4744 | 4726 | } |
4745 | 4727 | else |
@@ -4754,11 +4736,9 @@ | ||
4754 | 4736 | case 'l': str_arg_l += sprintf( |
4755 | 4737 | tmp + str_arg_l, f, ulong_arg); |
4756 | 4738 | break; |
4757 | -# ifdef FEAT_NUM64 | |
4758 | 4739 | case 'L': str_arg_l += sprintf( |
4759 | 4740 | tmp + str_arg_l, f, ullong_arg); |
4760 | 4741 | break; |
4761 | -# endif | |
4762 | 4742 | } |
4763 | 4743 | } |
4764 | 4744 |
@@ -1245,42 +1245,33 @@ | ||
1245 | 1245 | typedef long_u hash_T; // Type for hi_hash |
1246 | 1246 | |
1247 | 1247 | |
1248 | -#ifdef FEAT_NUM64 | |
1249 | 1248 | // Use 64-bit Number. |
1250 | -# ifdef MSWIN | |
1251 | -# ifdef PROTO | |
1252 | -typedef long varnumber_T; | |
1253 | -typedef unsigned long uvarnumber_T; | |
1254 | -# define VARNUM_MIN LONG_MIN | |
1255 | -# define VARNUM_MAX LONG_MAX | |
1256 | -# define UVARNUM_MAX ULONG_MAX | |
1257 | -# else | |
1258 | -typedef __int64 varnumber_T; | |
1259 | -typedef unsigned __int64 uvarnumber_T; | |
1260 | -# define VARNUM_MIN _I64_MIN | |
1261 | -# define VARNUM_MAX _I64_MAX | |
1262 | -# define UVARNUM_MAX _UI64_MAX | |
1263 | -# endif | |
1264 | -# elif defined(HAVE_STDINT_H) | |
1265 | -typedef int64_t varnumber_T; | |
1266 | -typedef uint64_t uvarnumber_T; | |
1267 | -# define VARNUM_MIN INT64_MIN | |
1268 | -# define VARNUM_MAX INT64_MAX | |
1269 | -# define UVARNUM_MAX UINT64_MAX | |
1270 | -# else | |
1249 | +#ifdef MSWIN | |
1250 | +# ifdef PROTO | |
1271 | 1251 | typedef long varnumber_T; |
1272 | 1252 | typedef unsigned long uvarnumber_T; |
1273 | 1253 | # define VARNUM_MIN LONG_MIN |
1274 | 1254 | # define VARNUM_MAX LONG_MAX |
1275 | 1255 | # define UVARNUM_MAX ULONG_MAX |
1256 | +# else | |
1257 | +typedef __int64 varnumber_T; | |
1258 | +typedef unsigned __int64 uvarnumber_T; | |
1259 | +# define VARNUM_MIN _I64_MIN | |
1260 | +# define VARNUM_MAX _I64_MAX | |
1261 | +# define UVARNUM_MAX _UI64_MAX | |
1276 | 1262 | # endif |
1263 | +#elif defined(HAVE_STDINT_H) | |
1264 | +typedef int64_t varnumber_T; | |
1265 | +typedef uint64_t uvarnumber_T; | |
1266 | +# define VARNUM_MIN INT64_MIN | |
1267 | +# define VARNUM_MAX INT64_MAX | |
1268 | +# define UVARNUM_MAX UINT64_MAX | |
1277 | 1269 | #else |
1278 | -// Use 32-bit Number. | |
1279 | -typedef int varnumber_T; | |
1280 | -typedef unsigned int uvarnumber_T; | |
1281 | -# define VARNUM_MIN INT_MIN | |
1282 | -# define VARNUM_MAX INT_MAX | |
1283 | -# define UVARNUM_MAX UINT_MAX | |
1270 | +typedef long varnumber_T; | |
1271 | +typedef unsigned long uvarnumber_T; | |
1272 | +# define VARNUM_MIN LONG_MIN | |
1273 | +# define VARNUM_MAX LONG_MAX | |
1274 | +# define UVARNUM_MAX ULONG_MAX | |
1284 | 1275 | #endif |
1285 | 1276 | |
1286 | 1277 | typedef double float_T; |
@@ -382,9 +382,7 @@ | ||
382 | 382 | endfunc |
383 | 383 | |
384 | 384 | function Test_printf_64bit() |
385 | - if has('num64') | |
386 | - call assert_equal("123456789012345", printf('%d', 123456789012345)) | |
387 | - endif | |
385 | + call assert_equal("123456789012345", printf('%d', 123456789012345)) | |
388 | 386 | endfunc |
389 | 387 | |
390 | 388 | function Test_printf_spec_s() |
@@ -423,12 +421,8 @@ | ||
423 | 421 | call assert_equal(" 0b1111011", printf('%#10b', 123)) |
424 | 422 | call assert_equal("0B01111011", printf('%#010B', 123)) |
425 | 423 | call assert_equal("1001001100101100000001011010010", printf('%b', 1234567890)) |
426 | - if has('num64') | |
427 | - call assert_equal("11100000100100010000110000011011101111101111001", printf('%b', 123456789012345)) | |
428 | - call assert_equal("1111111111111111111111111111111111111111111111111111111111111111", printf('%b', -1)) | |
429 | - else | |
430 | - call assert_equal("11111111111111111111111111111111", printf('%b', -1)) | |
431 | - endif | |
424 | + call assert_equal("11100000100100010000110000011011101111101111001", printf('%b', 123456789012345)) | |
425 | + call assert_equal("1111111111111111111111111111111111111111111111111111111111111111", printf('%b', -1)) | |
432 | 426 | endfunc |
433 | 427 | |
434 | 428 | func Test_substitute_expr() |
@@ -24,11 +24,6 @@ | ||
24 | 24 | w |
25 | 25 | " Check if the file size is 4,000,000,000 bytes. |
26 | 26 | let fsize=getfsize(fname) |
27 | - if has('num64') | |
28 | - call assert_true(fsize == 4000000000) | |
29 | - else | |
30 | - " getfsize() returns -2 if a Number is 32 bits. | |
31 | - call assert_true(fsize == -2) | |
32 | - endif | |
27 | + call assert_true(fsize == 4000000000) | |
33 | 28 | call delete(fname) |
34 | 29 | endfunc |
@@ -1295,9 +1295,8 @@ | ||
1295 | 1295 | \ '2147483647'], getline(1, '$')) |
1296 | 1296 | bwipe! |
1297 | 1297 | |
1298 | - if has('num64') | |
1299 | - new | |
1300 | - a | |
1298 | + new | |
1299 | + a | |
1301 | 1300 | -9223372036854775808 |
1302 | 1301 | -9223372036854775807 |
1303 | 1302 |
@@ -1312,22 +1311,21 @@ | ||
1312 | 1311 | abc |
1313 | 1312 | |
1314 | 1313 | . |
1315 | - sort n | |
1316 | - call assert_equal(['', | |
1317 | - \ 'abc', | |
1318 | - \ '', | |
1319 | - \ '-9223372036854775808', | |
1320 | - \ '-9223372036854775808', | |
1321 | - \ '-9223372036854775807', | |
1322 | - \ '-9223372036854775806', | |
1323 | - \ '-1', | |
1324 | - \ '0', | |
1325 | - \ '1', | |
1326 | - \ '9223372036854775806', | |
1327 | - \ '9223372036854775807', | |
1328 | - \ '9223372036854775807'], getline(1, '$')) | |
1329 | - bwipe! | |
1330 | - endif | |
1314 | + sort n | |
1315 | + call assert_equal(['', | |
1316 | + \ 'abc', | |
1317 | + \ '', | |
1318 | + \ '-9223372036854775808', | |
1319 | + \ '-9223372036854775808', | |
1320 | + \ '-9223372036854775807', | |
1321 | + \ '-9223372036854775806', | |
1322 | + \ '-1', | |
1323 | + \ '0', | |
1324 | + \ '1', | |
1325 | + \ '9223372036854775806', | |
1326 | + \ '9223372036854775807', | |
1327 | + \ '9223372036854775807'], getline(1, '$')) | |
1328 | + bwipe! | |
1331 | 1329 | endfunc |
1332 | 1330 | |
1333 | 1331 |
@@ -1416,10 +1416,6 @@ | ||
1416 | 1416 | "------------------------------------------------------------------------------- |
1417 | 1417 | |
1418 | 1418 | func Test_num64() |
1419 | - if !has('num64') | |
1420 | - return | |
1421 | - endif | |
1422 | - | |
1423 | 1419 | call assert_notequal( 4294967296, 0) |
1424 | 1420 | call assert_notequal(-4294967296, 0) |
1425 | 1421 | call assert_equal( 4294967296, 0xFFFFffff + 1) |
@@ -1692,27 +1688,15 @@ | ||
1692 | 1688 | " Test special cases: division or modulus with 0. |
1693 | 1689 | let x = 1 |
1694 | 1690 | let x /= 0 |
1695 | - if has('num64') | |
1696 | - call assert_equal(0x7FFFFFFFFFFFFFFF, x) | |
1697 | - else | |
1698 | - call assert_equal(0x7fffffff, x) | |
1699 | - endif | |
1691 | + call assert_equal(0x7FFFFFFFFFFFFFFF, x) | |
1700 | 1692 | |
1701 | 1693 | let x = -1 |
1702 | 1694 | let x /= 0 |
1703 | - if has('num64') | |
1704 | - call assert_equal(-0x7FFFFFFFFFFFFFFF, x) | |
1705 | - else | |
1706 | - call assert_equal(-0x7fffffff, x) | |
1707 | - endif | |
1695 | + call assert_equal(-0x7FFFFFFFFFFFFFFF, x) | |
1708 | 1696 | |
1709 | 1697 | let x = 0 |
1710 | 1698 | let x /= 0 |
1711 | - if has('num64') | |
1712 | - call assert_equal(-0x7FFFFFFFFFFFFFFF - 1, x) | |
1713 | - else | |
1714 | - call assert_equal(-0x7FFFFFFF - 1, x) | |
1715 | - endif | |
1699 | + call assert_equal(-0x7FFFFFFFFFFFFFFF - 1, x) | |
1716 | 1700 | |
1717 | 1701 | let x = 1 |
1718 | 1702 | let x %= 0 |
@@ -436,11 +436,7 @@ | ||
436 | 436 | #else |
437 | 437 | "-netbeans_intg", |
438 | 438 | #endif |
439 | -#ifdef FEAT_NUM64 | |
440 | 439 | "+num64", |
441 | -#else | |
442 | - "-num64", | |
443 | -#endif | |
444 | 440 | #ifdef FEAT_GUI_MSWIN |
445 | 441 | # ifdef FEAT_OLE |
446 | 442 | "+ole", |
@@ -743,6 +739,8 @@ | ||
743 | 739 | static int included_patches[] = |
744 | 740 | { /* Add new patch number below this line */ |
745 | 741 | /**/ |
742 | + 271, | |
743 | +/**/ | |
746 | 744 | 270, |
747 | 745 | /**/ |
748 | 746 | 269, |