Mirror of the Vim source from https://github.com/vim/vim
Revision | d19adfd545e26c20c28320cf471745777fe1207c (tree) |
---|---|
Time | 2022-08-17 00:15:03 |
Author | Bram Moolenaar <Bram@vim....> |
Commiter | Bram Moolenaar |
patch 9.0.0219: cannot make a funcref with "s:func" in a def function
Commit: https://github.com/vim/vim/commit/948a3894d98f5e2a6e7fc57189fe9c2a5919eebf
Author: Kota Kato <github@kat0h.com>
Date: Tue Aug 16 16:09:59 2022 +0100
@@ -1957,6 +1957,45 @@ | ||
1957 | 1957 | g:listarg->assert_equal([1, 2, 3]) |
1958 | 1958 | END |
1959 | 1959 | v9.CheckScriptSuccess(lines) |
1960 | + | |
1961 | + lines =<< trim END | |
1962 | + function s:func(num) | |
1963 | + return a:num * 2 | |
1964 | + endfunction | |
1965 | + | |
1966 | + def s:CallFuncref() | |
1967 | + var Funcref = function('s:func') | |
1968 | + Funcref(3)->assert_equal(6) | |
1969 | + enddef | |
1970 | + call s:CallFuncref() | |
1971 | + END | |
1972 | + v9.CheckScriptSuccess(lines) | |
1973 | + | |
1974 | + lines =<< trim END | |
1975 | + function s:func(num) | |
1976 | + return a:num * 2 | |
1977 | + endfunction | |
1978 | + | |
1979 | + def s:CallFuncref() | |
1980 | + var Funcref = function(s:func) | |
1981 | + Funcref(3)->assert_equal(6) | |
1982 | + enddef | |
1983 | + call s:CallFuncref() | |
1984 | + END | |
1985 | + v9.CheckScriptSuccess(lines) | |
1986 | + | |
1987 | + lines =<< trim END | |
1988 | + function s:func(num) | |
1989 | + return a:num * 2 | |
1990 | + endfunction | |
1991 | + | |
1992 | + def s:CallFuncref() | |
1993 | + var Funcref = s:func | |
1994 | + Funcref(3)->assert_equal(6) | |
1995 | + enddef | |
1996 | + call s:CallFuncref() | |
1997 | + END | |
1998 | + v9.CheckScriptSuccess(lines) | |
1960 | 1999 | enddef |
1961 | 2000 | |
1962 | 2001 | let SomeFunc = function('len') |
@@ -3995,7 +3995,8 @@ | ||
3995 | 3995 | { |
3996 | 3996 | if (!vim9_local) |
3997 | 3997 | { |
3998 | - if (vim9script && lead == 2 && !ASCII_ISUPPER(*lv.ll_name)) | |
3998 | + if (vim9script && lead == 2 && !ASCII_ISUPPER(*lv.ll_name) | |
3999 | + && current_script_is_vim9()) | |
3999 | 4000 | { |
4000 | 4001 | semsg(_(e_function_name_must_start_with_capital_str), start); |
4001 | 4002 | goto theend; |
@@ -736,6 +736,8 @@ | ||
736 | 736 | static int included_patches[] = |
737 | 737 | { /* Add new patch number below this line */ |
738 | 738 | /**/ |
739 | + 219, | |
740 | +/**/ | |
739 | 741 | 218, |
740 | 742 | /**/ |
741 | 743 | 217, |
@@ -8,7 +8,7 @@ | ||
8 | 8 | */ |
9 | 9 | |
10 | 10 | /* |
11 | - * vim9cmds.c: Dealing with compiled function expressions | |
11 | + * vim9expr.c: Dealing with compiled function expressions | |
12 | 12 | */ |
13 | 13 | |
14 | 14 | #define USING_FLOAT_STUFF |
@@ -451,8 +451,7 @@ | ||
451 | 451 | vim_free(name); |
452 | 452 | return FAIL; |
453 | 453 | } |
454 | - if (is_expr && ASCII_ISUPPER(*name) | |
455 | - && find_func(name, FALSE) != NULL) | |
454 | + if (is_expr && find_func(name, FALSE) != NULL) | |
456 | 455 | res = generate_funcref(cctx, name, FALSE); |
457 | 456 | else |
458 | 457 | res = compile_load_scriptvar(cctx, name, |