This is small but very significant change for me :)
Thanks Bram!

On Sun, Mar 13, 2016 at 3:04 AM, Bram Moolenaar <[email protected]> wrote:
>
> Patch 7.4.1546
> Problem:    Sticky type checking is more annoying than useful.
> Solution:   Remove the error for changing a variable type.
> Files:      src/eval.c, src/testdir/test_assign.vim,
>             src/testdir/test_alot.vim, runtime/doc/eval.txt
>
>
> *** ../vim-7.4.1545/src/eval.c  2016-03-12 15:22:50.410535232 +0100
> --- src/eval.c  2016-03-12 18:54:37.146859030 +0100
> ***************
> *** 22091,22112 ****
>         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
> --- 22091,22096 ----
> *** ../vim-7.4.1545/src/testdir/test_assign.vim 2016-03-12 19:02:19.518044054 
> +0100
> --- src/testdir/test_assign.vim 2016-03-12 18:59:21.815894278 +0100
> ***************
> *** 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
> *** ../vim-7.4.1545/src/testdir/test_alot.vim   2016-03-10 22:19:40.880775414 
> +0100
> --- src/testdir/test_alot.vim   2016-03-12 18:58:24.180494454 +0100
> ***************
> *** 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
> *** ../vim-7.4.1545/runtime/doc/eval.txt        2016-03-12 15:22:50.414535191 
> +0100
> --- runtime/doc/eval.txt        2016-03-12 19:00:27.671208554 +0100
> ***************
> *** 102,125 ****
>   "foo" is converted to 0, which means FALSE.  To test for a non-empty string,
>   use empty(): >
>         :if !empty("foo")
> ! <                             *E745* *E728* *E703* *E729* *E730* *E731*
> ! List, Dictionary and Funcref types are not automatically converted.
>
>                                                         *E805* *E806* *E808*
>   When mixing Number and Float the Number is converted to Float.        
> Otherwise
>   there is no automatic conversion of Float.  You can use str2float() for 
> String
>   to Float, printf() for Float to String and float2nr() for Float to Number.
>
> !                                               *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!
>
>
>   1.2 Function references ~
> --- 101,120 ----
>   "foo" is converted to 0, which means FALSE.  To test for a non-empty string,
>   use empty(): >
>         :if !empty("foo")
> ! <
> !               *E745* *E728* *E703* *E729* *E730* *E731* *E908* *E910* *E913*
> ! List, Dictionary, Funcref and Job types are not automatically converted.
>
>                                                         *E805* *E806* *E808*
>   When mixing Number and Float the Number is converted to Float.        
> Otherwise
>   there is no automatic conversion of Float.  You can use str2float() for 
> String
>   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.
> !
> !                                               *no-type-checking*
> ! You will not get an error if you try to change the type of a variable.
>
>
>   1.2 Function references ~
> *** ../vim-7.4.1545/src/version.c       2016-03-12 16:28:13.885691425 +0100
> --- src/version.c       2016-03-12 19:02:01.430232366 +0100
> ***************
> *** 745,746 ****
> --- 745,748 ----
>   {   /* Add new patch number below this line */
> + /**/
> +     1546,
>   /**/
>
> --
> The startling truth finally became apparent, and it was this: Numbers
> written on restaurant checks within the confines of restaurants do not follow
> the same mathematical laws as numbers written on any other pieces of paper in
> any other parts of the Universe.  This single statement took the scientific
> world by storm.  So many mathematical conferences got held in such good
> restaurants that many of the finest minds of a generation died of obesity and
> heart failure, and the science of mathematics was put back by years.
>                 -- Douglas Adams, "The Hitchhiker's Guide to the Galaxy"
>
>  /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
> ///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
> \\\  an exciting new programming language -- http://www.Zimbu.org        ///
>  \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///
>
> --
> --
> You received this message from the "vim_dev" maillist.
> Do not top-post! Type your reply below the text you are replying to.
> For more information, visit http://www.vim.org/maillist.php
>
> ---
> You received this message because you are subscribed to the Google Groups 
> "vim_dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.



-- 
Takuya Fujiwara

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui