Bram Moolenaar
806a273f3c
patch 9.0.0379: cleaning up after writefile() is a hassle
...
Problem: Cleaning up after writefile() is a hassle.
Solution: Add the 'D' flag to defer deleting the written file. Very useful
in tests.
2022-09-04 15:40:36 +01:00
Bram Moolenaar
1d84f7608f
patch 9.0.0370: cleaning up afterwards can make a function messy
...
Problem: Cleaning up afterwards can make a function messy.
Solution: Add the :defer command.
2022-09-03 21:35:53 +01:00
Yegappan Lakshmanan
ee47eaceaa
patch 9.0.0003: functions are global while they could be local
...
Problem: Functions are global while they could be local.
Solution: Add "static". Add a few tests. (Yegappan Lakshmanan,
closes #10612 )
2022-06-29 12:55:36 +01:00
Bram Moolenaar
f79d9dd43f
patch 8.2.4989: cannot specify a function name for :defcompile
...
Problem: Cannot specify a function name for :defcompile.
Solution: Implement a function name argument for :defcompile.
2022-05-21 15:39:02 +01:00
Bram Moolenaar
a6c18d38ca
patch 8.2.4657: errors for functions are sometimes hard to read
...
Problem: Errors for functions are sometimes hard to read.
Solution: Use printable_func_name() in more places.
2022-03-31 20:02:56 +01:00
Bram Moolenaar
c0ceeeb839
patch 8.2.4650: "import autoload" only works with using 'runtimepath'
...
Problem: "import autoload" only works with using 'runtimepath'.
Solution: Also support a relative and absolute file name.
2022-03-30 21:12:27 +01:00
Bram Moolenaar
c2f17f7e64
patch 8.2.4429: using script-local function from the wrong script
...
Problem: Using script-local function from the wrong script when using a
partial. (Yegappan Lakshmanan)
Solution: Include the script ID in the partial name.
2022-02-21 13:13:50 +00:00
Bram Moolenaar
a749a42ed2
patch 8.2.4360: Vim9: allowing use of "s:" leads to inconsistencies
...
Problem: Vim9: allowing use of "s:" leads to inconsistencies.
Solution: Disallow using "s:" in Vim9 script at the script level.
2022-02-12 19:52:25 +00:00
Bram Moolenaar
848faddb87
patch 8.2.4260: Vim9: can still use a global function without g:
...
Problem: Vim9: can still use a global function without g: at the script
level.
Solution: Also check for g: at the script level. (issue #9637 )
2022-01-30 15:28:30 +00:00
Bram Moolenaar
acc4b5648b
patch 8.2.4202: Vim9: cannot export function that exists globally
...
Problem: Vim9: cannot export function that exists globally.
Solution: When checking if a function already exists only check for
script-local functions. (closes #9615 )
2022-01-24 13:54:45 +00:00
Bram Moolenaar
937610bc9f
patch 8.2.4145: confusing error when using name of import for a function
...
Problem: Confusing error when using name of import for a function.
Solution: Pass a flag to trans_function_name().
2022-01-19 17:21:29 +00:00
Bram Moolenaar
d9d2fd0aa3
patch 8.2.4086: "cctx" argument of find_func_even_dead() is unused
...
Problem: "cctx" argument of find_func_even_dead() is unused.
Solution: Remove the argument.
2022-01-13 21:15:21 +00:00
Bram Moolenaar
9f1a39a5d1
patch 8.2.4040: keeping track of allocated lines is too complicated
...
Problem: Keeping track of allocated lines in user functions is too
complicated.
Solution: Instead of freeing individual lines keep them all until the end.
2022-01-08 15:39:39 +00:00
Bram Moolenaar
9c23f9bb5f
patch 8.2.3902: Vim9: double free with nested :def function
...
Problem: Vim9: double free with nested :def function.
Solution: Pass "line_to_free" from compile_def_function() and make sure
cmdlinep is valid.
2021-12-26 14:23:22 +00:00
Yegappan Lakshmanan
e7f4abd38b
patch 8.2.3889: duplicate code for translating script-local function name
...
Problem: Duplicate code for translating script-local function name.
Solution: Move the code to get_scriptlocal_funcname(). (Yegappan Lakshmanan,
closes #9393 )
2021-12-24 20:47:38 +00:00
Bram Moolenaar
2ef9156b42
patch 8.2.3783: confusing error for using a variable as a function
...
Problem: Confusing error for using a variable as a function.
Solution: If a function is not found but there is a variable, give a more
useful error. (issue #9310 )
2021-12-11 16:14:07 +00:00
Bram Moolenaar
2336c376d5
patch 8.2.3753: Vim9: function unreferenced while called is never deleted
...
Problem: Vim9: function unreferenced while called is never deleted.
Solution: Delete a function when no longer referenced.
2021-12-06 15:06:54 +00:00
Yegappan Lakshmanan
8658c759f0
patch 8.2.3725: cannot use a lambda for 'completefunc' and 'omnifunc'
...
Problem: Cannot use a lambda for 'completefunc' and 'omnifunc'.
Solution: Implement lambda support. (Yegappan Lakshmanan, closes #9257 )
2021-12-03 11:09:29 +00:00
Bram Moolenaar
eba3b7f664
patch 8.2.3705: cannot pass a lambda name to function() or funcref()
...
Problem: Cannot pass a lambda name to function() or funcref(). (Yegappan
Lakshmanan)
Solution: Handle a lambda name differently.
2021-11-30 18:25:08 +00:00
Bram Moolenaar
32b3f82010
patch 8.2.2306: Vim9: when using function reference type is not checked
...
Problem: Vim9: when using function reference type is not checked.
Solution: When using a function reference lookup the type and check the
argument types. (issue #7629 )
2021-01-06 21:59:39 +01:00
Bram Moolenaar
cef1270dec
patch 8.2.2298: Vim9: comment right after "(" of function not recognized
...
Problem: Vim9: comment right after "(" of function not recognized.
Solution: Do not skip over white space before calling get_function_args().
(closes #7613 )
2021-01-04 14:09:43 +01:00
Bram Moolenaar
cd45ed03bf
patch 8.2.2188: Vim9: crash when calling global function from :def function
...
Problem: Vim9: crash when calling global function from :def function.
Solution: Set the outer context. Define the partial for the context on the
original function. Use a refcount to keep track of which ufunc is
using a dfunc. (closes #7525 )
2020-12-22 17:35:54 +01:00
Bram Moolenaar
5082471f91
patch 8.2.2172: Vim9: number of arguments is not always checked
...
Problem: Vim9: number of arguments is not always checked. (Yegappan
Lakshmanan)
Solution: Check number of arguments when calling function by name.
2020-12-20 21:10:17 +01:00
Bram Moolenaar
f112f30a82
patch 8.2.2170: Vim9: a global function defined in a :def function fails
...
Problem: Vim9: a global function defined in a :def function fails if it
uses the context.
Solution: Create a partial to store the closure context. (see #7410 )
2020-12-20 17:47:52 +01:00
Bram Moolenaar
6abdcf8285
patch 8.2.2033: Vim9: :def without argument gives compilation error
...
Problem: Vim9: :def without argument gives compilation error.
Solution: Add the DEF instruction. (closes #7344 )
2020-11-22 18:15:44 +01:00
Bram Moolenaar
0ba48e8c27
patch 8.2.2001: Vim9: :def function does not apply 'maxfuncdepth'
...
Problem: Vim9: :def function does not apply 'maxfuncdepth'.
Solution: Use 'maxfuncdepth'. (issue #7313 )
2020-11-17 18:23:19 +01:00
Bram Moolenaar
b4d16cb11d
patch 8.2.1956: Vim9: cannot specify argument types for lambda
...
Problem: Vim9: cannot specify argument types for lambda.
Solution: Allow adding argument types. Check arguments when calling a
function reference.
2020-11-05 18:45:46 +01:00
Bram Moolenaar
fbbcd00367
patch 8.2.1846: Vim9: block variables are not found in compiled function
...
Problem: Vim9: variables declared in a local block are not found in
when a function is compiled.
Solution: Look for script variables in sn_all_vars.
2020-10-15 12:46:44 +02:00
Bram Moolenaar
a05e524f3a
patch 8.2.1712: Vim9: leaking memory when calling a lambda
...
Problem: Vim9: leaking memory when calling a lambda.
Solution: Decrement function reference from ISN_DCALL.
2020-09-19 18:19:19 +02:00
Bram Moolenaar
0f769815c8
patch 8.2.1667: local function name cannot shadow a global function name
...
Problem: Local function name cannot shadow a global function name.
Solution: Ignore global functions when checking a script-local or scoped
function name. (closes #6926 )
2020-09-12 18:32:34 +02:00
Bram Moolenaar
66250c932e
patch 8.2.1491: Vim9: crash when compiling heredoc lines start with comment
...
Problem: Vim9: crash when compiling heredoc lines start with comment.
Solution: Skip over NULL pointers. Do not remove comment and empty lines
when fetching function lines. (closes #6743 )
2020-08-20 15:02:42 +02:00
Bram Moolenaar
ce6583568f
patch 8.2.1332: Vim9: memory leak when using nested global function
...
Problem: Vim9: memory leak when using nested global function.
Solution: Delete the function when deleting the instruction. Disable test
that still causes a leak.
2020-07-31 23:47:12 +02:00
Bram Moolenaar
38ddf333f6
patch 8.2.1329: Vim9: cannot define global function inside :def function
...
Problem: Vim9: cannot define global function inside :def function.
Solution: Assign to global variable instead of local. (closes #6584 )
2020-07-31 22:05:04 +02:00
Bram Moolenaar
682d0a1546
patch 8.2.1251: Vim9: warning for pointer usage, test failure undetected
...
Problem: Vim9: warning for pointer usage, test failure undetected.
Solution: Fix pointer indirection. Give error when executing function
failed for any reason. Fix instruction names.
2020-07-19 20:48:59 +02:00
Bram Moolenaar
e6b5324e3a
patch 8.2.1110: Vim9: line continuation does not work in function arguments
...
Problem: Vim9: line continuation does not work in function arguments.
Solution: Pass "evalarg" to get_func_tv(). Fix seeing double quoted string
as comment.
2020-07-01 17:28:33 +02:00
Bram Moolenaar
e40fbc2ca9
patch 8.2.1071: Vim9: no line break allowed inside a lambda
...
Problem: Vim9: no line break allowed inside a lambda.
Solution: Handle line break inside a lambda in Vim9 script.
2020-06-27 18:06:45 +02:00
Bram Moolenaar
801ab06934
patch 8.2.1054: not so easy to pass a lua function to Vim
...
Problem: Not so easy to pass a lua function to Vim.
Solution: Convert a Lua function and closure to a Vim funcref. (Prabir
Shrestha, closes #6246 )
2020-06-25 19:27:56 +02:00
Bram Moolenaar
822ba24743
patch 8.2.0818: Vim9: using a discovery phase doesn't work well
...
Problem: Vim9: using a discovery phase doesn't work well.
Solution: Remove the discovery phase, instead compile a function only when
it is used. Add :defcompile to compile def functions earlier.
2020-05-24 23:00:18 +02:00
Bram Moolenaar
09689a0284
patch 8.2.0725: Vim9: cannot call a function declared later in Vim9 script
...
Problem: Vim9: cannot call a function declared later in Vim9 script.
Solution: Make two passes through the script file.
2020-05-09 22:50:08 +02:00
Bram Moolenaar
04b1269783
patch 8.2.0695: Vim9: cannot define a function inside a function
...
Problem: Vim9: cannot define a function inside a function.
Solution: Initial support for :def inside :def.
2020-05-04 23:24:44 +02:00
Bram Moolenaar
4c17ad94ec
patch 8.2.0650: Vim9: script function can be deleted
...
Problem: Vim9: script function can be deleted.
Solution: Disallow deleting script function. Delete functions when sourcing
a script again.
2020-04-27 22:47:51 +02:00
Bram Moolenaar
a26b9700d7
patch 8.2.0595: Vim9: not all commands using ends_excmd() tested
...
Problem: Vim9: not all commands using ends_excmd() tested.
Solution: Find # comment after regular commands. Add more tests. Report
error for where it was caused.
2020-04-18 19:53:28 +02:00
Bram Moolenaar
5e774c7579
patch 8.2.0563: Vim9: cannot split a function line
...
Problem: Vim9: cannot split a function line.
Solution: Continue in next line so long as the function isn't done.
2020-04-12 21:53:00 +02:00
Bram Moolenaar
5cab73f8cc
patch 8.2.0223: some instructions not yet tested
...
Problem: Some instructions not yet tested.
Solution: Disassemble more instructions. Move tests to a new file. Compile
call to s:function().
2020-02-06 19:25:19 +01:00
Bram Moolenaar
8a7d6542b3
patch 8.2.0149: maintaining a Vim9 branch separately is more work
...
Problem: Maintaining a Vim9 branch separately is more work.
Solution: Merge the Vim9 script changes.
2020-01-26 15:56:19 +01:00
Bram Moolenaar
4c054e9fb2
patch 8.1.2282: crash when passing many arguments through a partial
...
Problem: Crash when passing many arguments through a partial. (Andy
Massimino)
Solution: Check the number of arguments. (closes #5186 )
2019-11-10 00:13:50 +01:00
Bram Moolenaar
0e57dd859e
patch 8.1.2047: cannot check the current state
...
Problem: Cannot check the current state.
Solution: Add the state() function.
2019-09-16 22:56:03 +02:00
Bram Moolenaar
c6538bcc1c
patch 8.1.1800: function call functions have too many arguments
...
Problem: Function call functions have too many arguments.
Solution: Pass values in a funcexe_T struct.
2019-08-03 18:17:11 +02:00
Bram Moolenaar
660a10ad41
patch 8.1.1689: profiling code is spread out
...
Problem: Profiling code is spread out.
Solution: Move more profiling code to profiler.c. (Yegappan Lakshmanan,
closes #4668 )
2019-07-14 15:48:38 +02:00
Bram Moolenaar
fa55cfc69d
patch 8.1.1684: profiling functionality is spread out
...
Problem: Profiling functionality is spread out.
Solution: Put profiling functionality in profiling.c. (Yegappan Lakshmanan,
closes #4666 )
2019-07-13 22:59:32 +02:00