diff options
-rw-r--r-- | runtime/doc/eval.txt | 15 | ||||
-rw-r--r-- | src/nvim/eval.c | 15 | ||||
-rw-r--r-- | src/nvim/testdir/Makefile | 3 | ||||
-rw-r--r-- | src/nvim/testdir/test_alot.vim | 4 | ||||
-rw-r--r-- | src/nvim/testdir/test_assign.vim | 9 | ||||
-rw-r--r-- | src/nvim/version.c | 4 | ||||
-rw-r--r-- | test/functional/legacy/055_list_and_dict_types_spec.lua | 23 | ||||
-rw-r--r-- | test/functional/legacy/101_hlsearch_spec.lua | 2 |
8 files changed, 20 insertions, 55 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 0ca41370e9..efb8da0cfa 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -103,18 +103,9 @@ to Float, printf() for Float to String and float2nr() for Float to Number. *E891* *E892* *E893* *E894* When expecting a Float a Number can also be used, but nothing else. - *E706* *sticky-type-checking* -You will get an error if you try to change the type of a variable. You need -to |:unlet| it first to avoid this error. String and Number are considered -equivalent though, as well are Float and Number. Consider this sequence of -commands: > - :let l = "string" - :let l = 44 " changes type from String to Number - :let l = [1, 2, 3] " error! l is still a Number - :let l = 4.4 " changes type from Number to Float - :let l = "string" " error! - - + *no-type-checking* +You will not get an error if you try to change the type of a variable. + 1.2 Function references ~ *Funcref* *E695* *E718* A Funcref variable is obtained with the |function()| function. It can be used diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 47d44b148a..a43a389478 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -18886,19 +18886,6 @@ set_var ( || tv_check_lock(v->di_tv.v_lock, name, false)) { return; } - if (v->di_tv.v_type != tv->v_type - && !((v->di_tv.v_type == VAR_STRING - || v->di_tv.v_type == VAR_NUMBER) - && (tv->v_type == VAR_STRING - || tv->v_type == VAR_NUMBER)) - && !((v->di_tv.v_type == VAR_NUMBER - || v->di_tv.v_type == VAR_FLOAT) - && (tv->v_type == VAR_NUMBER - || tv->v_type == VAR_FLOAT)) - ) { - EMSG2(_("E706: Variable type mismatch for: %s"), name); - return; - } // Handle setting internal v: variables separately where needed to // prevent changing the type. @@ -18908,7 +18895,7 @@ set_var ( if (copy || tv->v_type != VAR_STRING) v->di_tv.vval.v_string = vim_strsave(get_tv_string(tv)); else { - /* Take over the string to avoid an extra alloc/free. */ + // Take over the string to avoid an extra alloc/free. v->di_tv.vval.v_string = tv->vval.v_string; tv->vval.v_string = NULL; } diff --git a/src/nvim/testdir/Makefile b/src/nvim/testdir/Makefile index 4b0b5e8d26..30f5170565 100644 --- a/src/nvim/testdir/Makefile +++ b/src/nvim/testdir/Makefile @@ -33,14 +33,11 @@ SCRIPTS := \ # Tests using runtest.vim.vim. # Keep test_alot*.res as the last one, sort the others. NEW_TESTS = \ - test_cursor_func.res \ test_hardcopy.res \ test_help_tagjump.res \ test_langmap.res \ - test_menu.res \ test_syntax.res \ test_timers.res \ - test_unlet.res \ test_viml.res \ test_alot.res diff --git a/src/nvim/testdir/test_alot.vim b/src/nvim/testdir/test_alot.vim index 1d1da94bac..ad9b2cce8b 100644 --- a/src/nvim/testdir/test_alot.vim +++ b/src/nvim/testdir/test_alot.vim @@ -1,3 +1,7 @@ " A series of tests that can run in one Vim invocation. " This makes testing go faster, since Vim doesn't need to restart. +source test_assign.vim +source test_cursor_func.vim +source test_menu.vim +source test_unlet.vim diff --git a/src/nvim/testdir/test_assign.vim b/src/nvim/testdir/test_assign.vim new file mode 100644 index 0000000000..3d2e7a8998 --- /dev/null +++ b/src/nvim/testdir/test_assign.vim @@ -0,0 +1,9 @@ +" Test for assignment + +func Test_no_type_checking() + let v = 1 + let v = [1,2,3] + let v = {'a':1, 'b':2} + let v = 3.4 + let v = 'hello' +endfunc diff --git a/src/nvim/version.c b/src/nvim/version.c index 87bbb12b50..70c6af2a12 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -151,9 +151,9 @@ static int included_patches[] = { 1551, 1550, // 1549, - // 1548, + 1548, // 1547, - // 1546, + 1546, // 1545 NA // 1544 NA // 1543 NA diff --git a/test/functional/legacy/055_list_and_dict_types_spec.lua b/test/functional/legacy/055_list_and_dict_types_spec.lua index dee138e6d8..b9e5a8bc03 100644 --- a/test/functional/legacy/055_list_and_dict_types_spec.lua +++ b/test/functional/legacy/055_list_and_dict_types_spec.lua @@ -112,29 +112,6 @@ describe('list and dictionary types', function() expect('\n101101') end) - it('changing var type should fail', function() - source([[ - lang C - " The list from the first test repeated after splitting the tests. - let l = [1, 'as''d', [1, 2, function("strlen")], {'a': 1},] - " The dict from the first test repeated after splitting the tests. - let d = {'c': 'ccc', '1': 99, '3': 33, '-1': {'a': 1}} - try - let d = [] - catch - $put =v:exception[:14] . v:exception[-1:-1] - endtry - try - let l = {} - catch - $put =v:exception[:14] . v:exception[-1:-1] - endtry]]) - expect([[ - - Vim(let):E706: d - Vim(let):E706: l]]) - end) - it('removing items with :unlet', function() source([[ lang C diff --git a/test/functional/legacy/101_hlsearch_spec.lua b/test/functional/legacy/101_hlsearch_spec.lua index 0d88e99278..fa29e5fbe8 100644 --- a/test/functional/legacy/101_hlsearch_spec.lua +++ b/test/functional/legacy/101_hlsearch_spec.lua @@ -61,6 +61,6 @@ describe('v:hlsearch', function() 0:not highlighted 1:highlighted 0:not highlighted - Vim(let):E706:]]) + Vim(let):E745:]]) end) end) |