1
0
forked from aniani/vim

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.
This commit is contained in:
Bram Moolenaar
2022-05-26 22:24:43 +01:00
parent 5cb53b7afe
commit 31d9948e3a
7 changed files with 182 additions and 51 deletions

View File

@@ -1121,6 +1121,9 @@ def Test_assignment_dict()
var dict4: dict<any> = {one: 1, two: '2'}
var dict5: dict<blob> = {one: 0z01, two: 0z02}
# check the type is OK
var events: dict<string> = v:event
# overwrite
dict3['key'] = 'another'
assert_equal(dict3, {key: 'another'})
@@ -2105,6 +2108,32 @@ def Test_var_declaration_fails()
va foo = 123
END
v9.CheckDefAndScriptFailure(lines, 'E1065:', 1)
lines =<< trim END
var foo: func(number
END
v9.CheckDefAndScriptFailure(lines, 'E110:', 1)
lines =<< trim END
var foo: func(number): func(
END
v9.CheckDefAndScriptFailure(lines, 'E110:', 1)
for type in ['num_ber',
'anys', 'ani',
'bools', 'boel',
'blobs', 'blub',
'channels', 'channol',
'dicts', 'duct',
'floats', 'floot',
'funcs', 'funk',
'jobs', 'jop',
'lists', 'last'
'numbers', 'numbar',
'strings', 'strung',
'voids', 'viod']
v9.CheckDefAndScriptFailure([$'var foo: {type}'], 'E1010:', 1)
endfor
enddef
def Test_var_declaration_inferred()
@@ -2118,6 +2147,34 @@ def Test_var_declaration_inferred()
echo GetList()->extend(['x'])
END
v9.CheckScriptFailure(lines, 'E1013:', 6)
lines =<< trim END
vim9script
def GetNr(): number
return 5
enddef
def TestOne()
var some = [function('len'), GetNr]
g:res = typename(some)
enddef
TestOne()
assert_equal('list<func(): number>', g:res)
def TestTwo()
var some = [function('len'), GetNr]
g:res = typename(some)
enddef
TestTwo()
assert_equal('list<func(): number>', g:res)
unlet g:res
# FIXME: why is the type different?
var first = [function('len'), GetNr]
assert_equal('list<func(...): number>', typename(first))
var second = [GetNr, function('len')]
assert_equal('list<func(...): number>', typename(second))
END
v9.CheckScriptSuccess(lines)
enddef
def Test_script_local_in_legacy()

View File

@@ -4051,6 +4051,63 @@ def Test_too_many_arguments()
echo [0, 1, 2]->map((_) => 123)
END
v9.CheckDefAndScriptFailure(lines, ['E176', 'E1106: One argument too many'], 1)
lines =<< trim END
vim9script
def OneArgument(arg: string)
echo arg
enddef
var Ref = OneArgument
Ref('a', 'b')
END
v9.CheckScriptFailure(lines, 'E118:')
enddef
def Test_funcref_with_base()
var lines =<< trim END
vim9script
def TwoArguments(str: string, nr: number)
echo str nr
enddef
var Ref = TwoArguments
Ref('a', 12)
'b'->Ref(34)
END
v9.CheckScriptSuccess(lines)
lines =<< trim END
vim9script
def TwoArguments(str: string, nr: number)
echo str nr
enddef
var Ref = TwoArguments
'a'->Ref('b')
END
v9.CheckScriptFailure(lines, 'E1013: Argument 2: type mismatch, expected number but got string', 6)
lines =<< trim END
vim9script
def TwoArguments(str: string, nr: number)
echo str nr
enddef
var Ref = TwoArguments
123->Ref(456)
END
v9.CheckScriptFailure(lines, 'E1013: Argument 1: type mismatch, expected string but got number')
lines =<< trim END
vim9script
def TwoArguments(nr: number, str: string)
echo str nr
enddef
var Ref = TwoArguments
123->Ref('b')
def AndNowCompiled()
456->Ref('x')
enddef
AndNowCompiled()
END
v9.CheckScriptSuccess(lines)
enddef
def Test_closing_brace_at_start_of_line()