1
0
forked from aniani/vim
Commit Graph

385 Commits

Author SHA1 Message Date
Christian Brabandt
e4a450a87b patch 9.0.2157: Vim9: incorrectly parses :def func definitions
Problem:  Vim9: incorrectly parses :def func definitions
Solution: check for more context when parsing function args

Signed-off-by: Christian Brabandt <cb@256bit.org>
Incorrectly parses def function definitions

Vim currently allows to define the following vim9 function:
  def Func(f=
  )
  enddef

It currently thinks a Lambda is following the `=` but it doesn't check,
that there is actually an expression following. So when such a think is
encountered, remember that an expression should be following.

If no expression is coming in the next few lines, fail parsing the
function arguments, which will Vim no longer accept such a function.

Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-11 17:50:08 +01:00
Yegappan Lakshmanan
668971958c patch 9.0.2152: Using type unknown for List/Dict containers
Problem:  Using type unknown for List/Dict containers
Solution: Use 'any' instead

fixes: #13582
closes: #13625

Signed-off-by: Yegappan Lakshmanan <yegappan@yahoo.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
2023-12-05 15:51:50 +01:00
Ernie Rael
3ec6c1fe3b patch 9.0.2057: Vim9: no strict type checks for funcrefs varargs
Problem:  Vim9: no strict type checks for funcrefs varargs
Solution: Perform strict type checking when declaring funcrefs
          with vararg declaration, add tests

closes: #13397

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-10-21 11:45:38 +02:00
Ernie Rael
96952b2e98 patch 9.0.2043: Vim9: issue with funcref assignmentand varargs
Problem:  Vim9: issue with funcref assignmentand varargs
Solution: Fix funcref type checking

closes: #13351

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Ernie Rael <errael@raelity.com>
2023-10-17 18:15:01 +02:00
Yegappan Lakshmanan
29bb67f1be patch 9.0.2019: Vim9: no support for funcrefs
Problem:  Vim9: no support for funcrefs
Solution: Add support for object/class funcref members

closes: #11981 #12417 #12960 #12324 #13333

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: Yegappan Lakshmanan <yegappan@yahoo.com>
2023-10-14 11:18:50 +02:00
Bram Moolenaar
d4a9b7f614 patch 9.0.1573: error for function name has wrong line number
Problem:    Error for function name has wrong line number.
Solution:   Set the line number before giving the error.
2023-05-23 14:48:42 +01:00
Bram Moolenaar
2ba51236fb patch 9.0.1559: function argument types not always checked
Problem:    Function argument types not always checked and using v:none may
            cause an error.
Solution:   Check argument types once the function type is known.  Do not give
            an error for using v:none as an argument. (closes #12200)
2023-05-15 16:22:38 +01:00
Bram Moolenaar
cf2610c82b patch 9.0.1556: Vim9: error for missing "return" after "throw"
Problem:    Vim9: error for missing "return" after "throw".
Solution:   Set had_return flag for "throw". (closes #12262)
2023-05-14 19:59:59 +01:00
Bram Moolenaar
2ed57ac367 patch 9.0.1436: cannot compare a typed variable with v:none
Problem:    Cannot compare a typed variable with v:none.
Solution:   Allow for "x is v:none" and "x isnot v:none". (issue #12194)
2023-04-01 22:05:38 +01:00
Bram Moolenaar
3f45d67a15 patch 9.0.1363: crash when :def function has :break in skipped block
Problem:    Crash when :def function has :break in skipped block. (Ernie Rael)
Solution:   Don't generate a jump for a skipped :break. (closes #12077)
2023-02-27 22:06:51 +00:00
Bram Moolenaar
94722c5107 patch 9.0.1257: code style is not check in test scripts
Problem:    Code style is not check in test scripts.
Solution:   Add basic code style check for test files.
2023-01-28 19:19:03 +00:00
Bram Moolenaar
47bba53bdb patch 9.0.1224: cannot call a :def function with a number for float argument
Problem:    Cannot call a :def function with a number for a float argument.
Solution:   Accept a number as well, convert it to a float.
2023-01-20 18:49:46 +00:00
Bram Moolenaar
36818a9daa patch 9.0.1138: crash when expecting varargs but it is something else
Problem:    Crash when expecting varargs but it is something else.
Solution:   Only use the member when the type is a list. (closes #11774)
2023-01-03 12:33:26 +00:00
Bram Moolenaar
39c82ea656 patch 9.0.1130: unexpected output when autoloading a script
Problem:    Unexpected output when autoloading a script for an interactive
            operation.
Solution:   Reset "KeyTyped" while loading a script and when handling a nested
            function. (closes #11773)
2023-01-02 13:08:01 +00:00
Bram Moolenaar
0d89d8ae89 patch 9.0.1119: type of arguments not checked when calling a partial
Problem:    Type of arguments not checked when calling a partial.
Solution:   Give an error for a wrong argument type. (closes #11753)
2022-12-31 14:01:24 +00:00
Bram Moolenaar
56310d38d8 patch 9.0.1104: invalid memory access when checking function argument types
Problem:    Invalid memory access when checking function argument types.
Solution:   Do not check beyond the number of arguments. (closes #11755)
2022-12-27 17:25:05 +00:00
mityu
500c444283 patch 9.0.0992: Vim9 script: get E1096 when comment follows return
Problem:    Vim9 script: get E1096 when comment follows return.
Solution:   Adjust condition for return without expression. (closes #11654)
2022-12-02 18:12:05 +00:00
Bram Moolenaar
3558afe9e9 patch 9.0.0742: reading past end of the line when compiling a function
Problem:    Reading past end of the line when compiling a function with
            errors.
Solution:   Do not return an invalid pointer.  Fix skipping redirection.
2022-10-13 16:12:57 +01:00
Bram Moolenaar
cfb4d4f312 patch 9.0.0630: in Vim9 script a numbered function cannot be called
Problem:    In Vim9 script a numbered function cannot be called.
Solution:   Do not require "g:" before a numbered function name.
            (closes #11254)
2022-09-30 19:19:04 +01:00
Bram Moolenaar
259a741044 patch 9.0.0557: valgrind reports possibly leaked memory
Problem:    Valgrind reports possibly leaked memory.
Solution:   Move the problematic test function to the "fails" test file to
            avoid obscuring real memory leaks.
2022-09-23 16:11:37 +01:00
Bram Moolenaar
f8addf1ca1 patch 9.0.0554: using freed memory when command follows lambda
Problem:    Using freed memory when command follows lambda.
Solution:   Don't free what is still in use. (closes #11201)
2022-09-23 12:44:25 +01:00
Bram Moolenaar
f5f4e85f01 patch 9.0.0553: no error for "|" after "{" in lamda
Problem:    No error for "|" after "{" in lamda.
Solution:   Check for invalid "|". (closes #11199)
2022-09-22 22:03:14 +01:00
Bram Moolenaar
766ae5b252 patch 9.0.0460: loop variable can't be found
Problem:    Loop variable can't be found.
Solution:   Adjust block_id of the loop variable each round.
2022-09-14 00:30:51 +01:00
Bram Moolenaar
c069edeab2 patch 9.0.0441: closure in for loop test fails on some systems
Problem:    Closure in for loop test fails on some systems.
Solution:   Do not wait for the ruler to show up. (issue #11106)
2022-09-11 12:01:04 +01:00
Bram Moolenaar
f5fec05c7f patch 9.0.0440: crash when using mkdir() with "R" flag in compiled function
Problem:    Crash when using mkdir() with "R" flag in compiled function.
Solution:   Reserve a variable for deferred function calls.  Handle more than
            one argument.
2022-09-11 11:49:22 +01:00
Bram Moolenaar
6de2296e5e patch 9.0.0432: crash when using for loop variable in closure
Problem:    Crash when using for loop variable in closure.
Solution:   Check that the variable wasn't deleted. (issue #11094)
2022-09-09 21:35:36 +01:00
Bakudankun
375141e1f8 patch 9.0.0430: cannot use repeat() with a blob
Problem:    Cannot use repeat() with a blob.
Solution:   Implement blob repeat. (closes #11090)
2022-09-09 18:46:47 +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
Dominique Pelle
f240395fca patch 9.0.0334: test does not properly clean up
Problem:    Test does not properly clean up.
Solution:   Fix typo in argument of delete(). (Dominique Pellé, closes #11010)
2022-08-30 18:42:16 +01:00
Bram Moolenaar
3b0d70f4ff patch 9.0.0323: using common name in tests leads to flaky tests
Problem:    Using common name in tests leads to flaky tests.
Solution:   Rename files and directories to be more specific.
2022-08-29 22:31:20 +01:00
Bram Moolenaar
2984ed31d9 patch 9.0.0230: no error for comma missing in list in :def function
Problem:    No error for comma missing in list in :def function.
Solution:   Check for missing comma. (closes #10943)
2022-08-20 14:51:17 +01:00
Bram Moolenaar
62e0e2e54b patch 9.0.0229: Vim9: error message for missing type is not clear
Problem:    Vim9: error message for missing type is not clear.
Solution:   Mention the context. (issue #10944)
2022-08-20 12:07:58 +01:00
Bram Moolenaar
1889f499a4 patch 9.0.0221: accessing freed memory if compiling nested function fails
Problem:    Accessing freed memory if compiling nested function fails.
Solution:   Mess up the variable name so that it won't be found.
2022-08-16 19:34:44 +01:00
Kota Kato
948a3894d9 patch 9.0.0219: cannot make a funcref with "s:func" in a def function
Problem:    Cannot make a funcref with "s:func" in a def function in legacy
            script.
Solution:   Allow for using a lower case function name after "s:". (Kota Kato,
            closes #10926)
2022-08-16 16:09:59 +01:00
Bram Moolenaar
ad6d9cc679 patch 9.0.0174: no error for using "#{ comment" in a compiled function
Problem:    No error for using "#{ comment" in a compiled function.
Solution:   Make error checking for "#{" consistent. (closes #10855)
2022-08-08 21:43:11 +01:00
Bram Moolenaar
bd683e3a79 patch 9.0.0056: wrong line number reported when :cexpr fails in :def function
Problem:    Wrong line number reported when :cexpr fails in :def function.
Solution:   Set line_number before executing :cexpr. (closes #10735)
2022-07-18 17:49:03 +01:00
Bram Moolenaar
31d9948e3a patch 8.2.5026: Vim9: a few lines not covered by tests
Problem:    Vim9: a few lines not covered by tests.
Solution:   Delete dead code.  Add a few test cases. make "12->func()" work.
2022-05-26 22:24:43 +01:00
Bram Moolenaar
bce69d65dd patch 8.2.4998: Vim9: crash when using multiple funcref()
Problem:    Vim9: crash when using multiple funcref().
Solution:   Check if varargs type is NULL. (closes #10467)
2022-05-22 13:45:52 +01:00
Bram Moolenaar
d881d15984 patch 8.2.4948: cannot use Perl heredoc in nested :def function
Problem:    Cannot use Perl heredoc in nested :def function. (Virginia
            Senioria)
Solution:   Only concatenate heredoc lines when not in a nested function.
            (closes #10415)
2022-05-13 13:50:36 +01:00
Bram Moolenaar
a7583c42cd patch 8.2.4912: using execute() to define a lambda doesn't work
Problem:    Using execute() to define a lambda doesn't work. (Ernie Rael)
Solution:   Put the getline function in evalarg. (closes #10375)
2022-05-07 21:14:05 +01:00
Bram Moolenaar
ec89223478 patch 8.2.4892: test failures because of changed error messages
Problem:    Test failures because of changed error messages.
Solution:   Adjust the exptected error messages.
2022-05-06 17:53:06 +01:00
Yegappan Lakshmanan
7c7e19cf50 patch 8.2.4716: memory allocation failure not tested when defining a function
Problem:    Memory allocation failure not tested when defining a function.
Solution:   Add a test. (Yegappan Lakshmanan, closes #10127)
2022-04-09 11:09:07 +01:00
Bram Moolenaar
a915fa0103 patch 8.2.4612: Vim9: cannot use a recursive call in a nested function
Problem:    Vim9: cannot use a recursive call in a nested function. (Sergey
            Vlasov)
Solution:   Define the funcref before compiling the function. (closes #9989)
2022-03-23 11:29:15 +00:00
Bram Moolenaar
efd73ae5d2 patch 8.2.4601: Vim9: not enough test coverage for executing :def function
Problem:    Vim9: not enough test coverage for executing :def function.
Solution:   Add a few more tests.
2022-03-20 18:51:00 +00:00
Bram Moolenaar
1d9cef769d patch 8.2.4586: Vim9: no error for using lower case name for "func" argument
Problem:    Vim9: no error for using lower case name for "func" argument.
            (Ernie Rael)
Solution:   Check the name as soon as the type is known.
2022-03-17 16:30:03 +00:00
Bram Moolenaar
21dc8f1527 patch 8.2.4580: Vim9: incorrect error for shadowing variable
Problem:    Vim9: incorrect error for shadowing variable.
Solution:   Do not pass the context when compiling a referenced function.
2022-03-16 17:54:17 +00:00
Bram Moolenaar
1a572e9b3b patch 8.2.4572: Vim9: return type "any" is changed to first returned type
Problem:    Vim9: return type "any" is sometimes changed to first returned
            type.  (Virginia Senioria)
Solution:   Do not change the return type if declared as "any". (closes #9949)
2022-03-15 12:28:10 +00:00
Bram Moolenaar
badf04f5c2 patch 8.2.4554: Vim9: using null values not sufficiently tested
Problem:    Vim9: using null values not sufficiently tested.
Solution:   Add more tests.  Fix uncovered problem.
2022-03-12 21:28:22 +00:00
Bram Moolenaar
fb43cfc2c6 patch 8.2.4548: script-local function is deleted when used in a funcref
Problem:    Script-local function is deleted when used in a funcref.
Solution:   Do not consider a function starting with "<SNR>" reference
            counted. (closes #9916, closes #9820)
2022-03-11 18:54:17 +00:00
Bram Moolenaar
ed0c62e7b1 patch 8.2.4529: Vim9: comparing partial with function fails
Problem:    Vim9: comparing partial with function fails.
Solution:   Support this comparison.  Avoid a crash. (closes #9909)
            Add more test cases.
2022-03-08 19:43:55 +00:00