Mercurial > vim
comparison src/eval.c @ 19922:1f42c49c3d29 v8.2.0517
patch 8.2.0517: Vim9: cannot separate "func" and "func(): void"
Commit: https://github.com/vim/vim/commit/4c68375057c25e99656bc996d3fa5c6b0b6a7e6a
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Apr 5 21:38:23 2020 +0200
patch 8.2.0517: Vim9: cannot separate "func" and "func(): void"
Problem: Vim9: cannot separate "func" and "func(): void".
Solution: Use VAR_ANY for "any" and VAR_UNKNOWN for "no type".
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 05 Apr 2020 21:45:25 +0200 |
parents | 435726a03481 |
children | aadd1cae2ff5 |
comparison
equal
deleted
inserted
replaced
19921:05ac81e3e873 | 19922:1f42c49c3d29 |
---|---|
1270 && tv2->v_type != VAR_BOOL && tv2->v_type != VAR_SPECIAL) | 1270 && tv2->v_type != VAR_BOOL && tv2->v_type != VAR_SPECIAL) |
1271 { | 1271 { |
1272 switch (tv1->v_type) | 1272 switch (tv1->v_type) |
1273 { | 1273 { |
1274 case VAR_UNKNOWN: | 1274 case VAR_UNKNOWN: |
1275 case VAR_ANY: | |
1275 case VAR_VOID: | 1276 case VAR_VOID: |
1276 case VAR_DICT: | 1277 case VAR_DICT: |
1277 case VAR_FUNC: | 1278 case VAR_FUNC: |
1278 case VAR_PARTIAL: | 1279 case VAR_PARTIAL: |
1279 case VAR_BOOL: | 1280 case VAR_BOOL: |
2965 case VAR_CHANNEL: | 2966 case VAR_CHANNEL: |
2966 if (verbose) | 2967 if (verbose) |
2967 emsg(_("E909: Cannot index a special variable")); | 2968 emsg(_("E909: Cannot index a special variable")); |
2968 return FAIL; | 2969 return FAIL; |
2969 case VAR_UNKNOWN: | 2970 case VAR_UNKNOWN: |
2971 case VAR_ANY: | |
2970 case VAR_VOID: | 2972 case VAR_VOID: |
2971 if (evaluate) | 2973 if (evaluate) |
2972 return FAIL; | 2974 return FAIL; |
2973 // FALLTHROUGH | 2975 // FALLTHROUGH |
2974 | 2976 |
3071 } | 3073 } |
3072 | 3074 |
3073 switch (rettv->v_type) | 3075 switch (rettv->v_type) |
3074 { | 3076 { |
3075 case VAR_UNKNOWN: | 3077 case VAR_UNKNOWN: |
3078 case VAR_ANY: | |
3076 case VAR_VOID: | 3079 case VAR_VOID: |
3077 case VAR_FUNC: | 3080 case VAR_FUNC: |
3078 case VAR_PARTIAL: | 3081 case VAR_PARTIAL: |
3079 case VAR_FLOAT: | 3082 case VAR_FLOAT: |
3080 case VAR_BOOL: | 3083 case VAR_BOOL: |
3666 | 3669 |
3667 return OK; | 3670 return OK; |
3668 } | 3671 } |
3669 | 3672 |
3670 /* | 3673 /* |
3671 * Return the function name of the partial. | 3674 * Return the function name of partial "pt". |
3672 */ | 3675 */ |
3673 char_u * | 3676 char_u * |
3674 partial_name(partial_T *pt) | 3677 partial_name(partial_T *pt) |
3675 { | 3678 { |
3676 if (pt->pt_name != NULL) | 3679 if (pt->pt_name != NULL) |
3854 | 3857 |
3855 case VAR_FUNC: | 3858 case VAR_FUNC: |
3856 return tv1->vval.v_string == tv2->vval.v_string; | 3859 return tv1->vval.v_string == tv2->vval.v_string; |
3857 | 3860 |
3858 case VAR_UNKNOWN: | 3861 case VAR_UNKNOWN: |
3862 case VAR_ANY: | |
3859 case VAR_VOID: | 3863 case VAR_VOID: |
3860 break; | 3864 break; |
3861 } | 3865 } |
3862 | 3866 |
3863 // VAR_UNKNOWN can be the result of a invalid expression, let's say it | 3867 // VAR_UNKNOWN can be the result of a invalid expression, let's say it |
4568 } | 4572 } |
4569 break; | 4573 break; |
4570 | 4574 |
4571 case VAR_NUMBER: | 4575 case VAR_NUMBER: |
4572 case VAR_UNKNOWN: | 4576 case VAR_UNKNOWN: |
4577 case VAR_ANY: | |
4573 case VAR_VOID: | 4578 case VAR_VOID: |
4574 *tofree = NULL; | 4579 *tofree = NULL; |
4575 r = tv_get_string_buf(tv, numbuf); | 4580 r = tv_get_string_buf(tv, numbuf); |
4576 break; | 4581 break; |
4577 | 4582 |
5420 channel_unref(varp->vval.v_channel); | 5425 channel_unref(varp->vval.v_channel); |
5421 break; | 5426 break; |
5422 #endif | 5427 #endif |
5423 case VAR_NUMBER: | 5428 case VAR_NUMBER: |
5424 case VAR_FLOAT: | 5429 case VAR_FLOAT: |
5430 case VAR_ANY: | |
5425 case VAR_UNKNOWN: | 5431 case VAR_UNKNOWN: |
5426 case VAR_VOID: | 5432 case VAR_VOID: |
5427 case VAR_BOOL: | 5433 case VAR_BOOL: |
5428 case VAR_SPECIAL: | 5434 case VAR_SPECIAL: |
5429 break; | 5435 break; |
5484 #ifdef FEAT_JOB_CHANNEL | 5490 #ifdef FEAT_JOB_CHANNEL |
5485 channel_unref(varp->vval.v_channel); | 5491 channel_unref(varp->vval.v_channel); |
5486 varp->vval.v_channel = NULL; | 5492 varp->vval.v_channel = NULL; |
5487 #endif | 5493 #endif |
5488 case VAR_UNKNOWN: | 5494 case VAR_UNKNOWN: |
5495 case VAR_ANY: | |
5489 case VAR_VOID: | 5496 case VAR_VOID: |
5490 break; | 5497 break; |
5491 } | 5498 } |
5492 varp->v_lock = 0; | 5499 varp->v_lock = 0; |
5493 } | 5500 } |
5563 #endif | 5570 #endif |
5564 case VAR_BLOB: | 5571 case VAR_BLOB: |
5565 emsg(_("E974: Using a Blob as a Number")); | 5572 emsg(_("E974: Using a Blob as a Number")); |
5566 break; | 5573 break; |
5567 case VAR_UNKNOWN: | 5574 case VAR_UNKNOWN: |
5575 case VAR_ANY: | |
5568 case VAR_VOID: | 5576 case VAR_VOID: |
5569 internal_error_no_abort("tv_get_number(UNKNOWN)"); | 5577 internal_error_no_abort("tv_get_number(UNKNOWN)"); |
5570 break; | 5578 break; |
5571 } | 5579 } |
5572 if (denote == NULL) // useful for values that must be unsigned | 5580 if (denote == NULL) // useful for values that must be unsigned |
5617 # endif | 5625 # endif |
5618 case VAR_BLOB: | 5626 case VAR_BLOB: |
5619 emsg(_("E975: Using a Blob as a Float")); | 5627 emsg(_("E975: Using a Blob as a Float")); |
5620 break; | 5628 break; |
5621 case VAR_UNKNOWN: | 5629 case VAR_UNKNOWN: |
5630 case VAR_ANY: | |
5622 case VAR_VOID: | 5631 case VAR_VOID: |
5623 internal_error_no_abort("tv_get_float(UNKNOWN)"); | 5632 internal_error_no_abort("tv_get_float(UNKNOWN)"); |
5624 break; | 5633 break; |
5625 } | 5634 } |
5626 return 0; | 5635 return 0; |
5740 return buf; | 5749 return buf; |
5741 } | 5750 } |
5742 #endif | 5751 #endif |
5743 break; | 5752 break; |
5744 case VAR_UNKNOWN: | 5753 case VAR_UNKNOWN: |
5754 case VAR_ANY: | |
5745 case VAR_VOID: | 5755 case VAR_VOID: |
5746 emsg(_(e_inval_string)); | 5756 emsg(_(e_inval_string)); |
5747 break; | 5757 break; |
5748 } | 5758 } |
5749 return NULL; | 5759 return NULL; |
5889 to->vval.v_dict = from->vval.v_dict; | 5899 to->vval.v_dict = from->vval.v_dict; |
5890 ++to->vval.v_dict->dv_refcount; | 5900 ++to->vval.v_dict->dv_refcount; |
5891 } | 5901 } |
5892 break; | 5902 break; |
5893 case VAR_UNKNOWN: | 5903 case VAR_UNKNOWN: |
5904 case VAR_ANY: | |
5894 case VAR_VOID: | 5905 case VAR_VOID: |
5895 internal_error_no_abort("copy_tv(UNKNOWN)"); | 5906 internal_error_no_abort("copy_tv(UNKNOWN)"); |
5896 break; | 5907 break; |
5897 } | 5908 } |
5898 } | 5909 } |
5968 to->vval.v_dict = dict_copy(from->vval.v_dict, deep, copyID); | 5979 to->vval.v_dict = dict_copy(from->vval.v_dict, deep, copyID); |
5969 if (to->vval.v_dict == NULL) | 5980 if (to->vval.v_dict == NULL) |
5970 ret = FAIL; | 5981 ret = FAIL; |
5971 break; | 5982 break; |
5972 case VAR_UNKNOWN: | 5983 case VAR_UNKNOWN: |
5984 case VAR_ANY: | |
5973 case VAR_VOID: | 5985 case VAR_VOID: |
5974 internal_error_no_abort("item_copy(UNKNOWN)"); | 5986 internal_error_no_abort("item_copy(UNKNOWN)"); |
5975 ret = FAIL; | 5987 ret = FAIL; |
5976 } | 5988 } |
5977 --recurse; | 5989 --recurse; |