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:
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user