summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-03-12 19:03:59 +0100
committerBram Moolenaar <Bram@vim.org>2016-03-12 19:03:59 +0100
commitf6f32c38bf3319144a84a01a154c8c91939e7acf (patch)
treeefc1285b32b8d994767094aab02e25639191da89
parentb4ebf9ae3b93d082ab3b9f4aab2f6729f77fa46a (diff)
patch 7.4.1546v7.4.1546
Problem: Sticky type checking is more annoying than useful. Solution: Remove the error for changing a variable type.
-rw-r--r--runtime/doc/eval.txt27
-rw-r--r--src/eval.c16
-rw-r--r--src/testdir/test_alot.vim1
-rw-r--r--src/testdir/test_assign.vim9
-rw-r--r--src/version.c2
5 files changed, 26 insertions, 29 deletions
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 0bb4b83b2a..370d64b443 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt* For Vim version 7.4. Last change: 2016 Mar 08
+*eval.txt* For Vim version 7.4. Last change: 2016 Mar 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -113,16 +113,8 @@ to Float, printf() for Float to String and float2nr() for Float to Number.
*E891* *E892* *E893* *E894* *E907* *E911* *E914*
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 ~
@@ -1969,6 +1961,7 @@ islocked( {expr}) Number TRUE if {expr} is locked
isnan( {expr}) Number TRUE if {expr} is NaN
items( {dict}) List key-value pairs in {dict}
job_getchannel( {job}) Channel get the channel handle for {job}
+job_info( {job}) Dict get information about {job}
job_setoptions( {job}, {options}) none set options for {job}
job_start( {command} [, {options}]) Job start a job
job_status( {job}) String get the status of {job}
@@ -4473,10 +4466,18 @@ job_getchannel({job}) *job_getchannel()*
<
{only available when compiled with the |+job| feature}
+job_info({job}) *job_info()*
+ Returns a Dictionary with information about {job}:
+ "status" what |job_status()| returns
+ "channel" what |job_getchannel()| returns
+ "exitval" only valid when "status" is "dead"
+ "exit-cb" function to be called on exit
+ "stoponexit" |job-stoponexit|
+
job_setoptions({job}, {options}) *job_setoptions()*
Change options for {job}. Supported are:
- "stoponexit" |job-stoponexit|
- "exit-cb" |job-exit-cb|
+ "stoponexit" |job-stoponexit|
+ "exit-cb" |job-exit-cb|
job_start({command} [, {options}]) *job_start()*
Start a job and return a Job object. Unlike |system()| and
diff --git a/src/eval.c b/src/eval.c
index f4843e2c02..765d9b99dd 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -22091,22 +22091,6 @@ set_var(
if (var_check_ro(v->di_flags, name, FALSE)
|| 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))
-#ifdef FEAT_FLOAT
- && !((v->di_tv.v_type == VAR_NUMBER
- || v->di_tv.v_type == VAR_FLOAT)
- && (tv->v_type == VAR_NUMBER
- || tv->v_type == VAR_FLOAT))
-#endif
- )
- {
- EMSG2(_("E706: Variable type mismatch for: %s"), name);
- return;
- }
/*
* Handle setting internal v: variables separately where needed to
diff --git a/src/testdir/test_alot.vim b/src/testdir/test_alot.vim
index 46be515847..6071756902 100644
--- a/src/testdir/test_alot.vim
+++ b/src/testdir/test_alot.vim
@@ -1,6 +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_backspace_opt.vim
source test_cursor_func.vim
source test_delete.vim
diff --git a/src/testdir/test_assign.vim b/src/testdir/test_assign.vim
new file mode 100644
index 0000000000..c1f036a0f2
--- /dev/null
+++ b/src/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/version.c b/src/version.c
index 0652ab8d47..fc9cebea1b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -744,6 +744,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1546,
+/**/
1545,
/**/
1544,