mirror of
https://github.com/neovim/neovim.git
synced 2025-10-26 12:27:24 +00:00
Merge #8961 from ZyX-I/fix-8956
This commit is contained in:
@@ -605,13 +605,10 @@ function msgpack#eval(s, special_objs) abort
|
||||
call add(expr, dec)
|
||||
endif
|
||||
endif
|
||||
elseif s =~# '-\?\%(inf\|nan\)'
|
||||
if s[0] is# '-'
|
||||
call add(expr, '-')
|
||||
let s = s[1:]
|
||||
endif
|
||||
call add(expr, s:MSGPACK_SPECIAL_OBJECTS[s[0:2]])
|
||||
let s = s[3:]
|
||||
elseif s =~# '\v^\-%(inf|nan)'
|
||||
call add(expr, '-')
|
||||
call add(expr, s:MSGPACK_SPECIAL_OBJECTS[s[1:3]])
|
||||
let s = s[4:]
|
||||
elseif stridx('="+', s[0]) != -1
|
||||
let match = matchlist(s, '\v\C^(\=|\+\((\-?\d+)\)|)(\"%(\\.|[^\\"]+)*\")')
|
||||
if empty(match)
|
||||
|
||||
@@ -581,6 +581,8 @@ describe('autoload/msgpack.vim', function()
|
||||
eval_eq('binary', {'', 'abc', '', '', 'def'}, '"\\nabc\\n\\n\\ndef"')
|
||||
eval_eq('binary', {''}, '""')
|
||||
eval_eq('binary', {'"'}, '"\\""')
|
||||
eval_eq('binary', {'py3 print(sys.version_info)'},
|
||||
'"py3 print(sys.version_info)"')
|
||||
end)
|
||||
|
||||
it('correctly loads strings', function()
|
||||
@@ -595,6 +597,8 @@ describe('autoload/msgpack.vim', function()
|
||||
eval_eq('string', {'', 'abc', '', '', 'def'}, '="\\nabc\\n\\n\\ndef"')
|
||||
eval_eq('string', {''}, '=""')
|
||||
eval_eq('string', {'"'}, '="\\""')
|
||||
eval_eq('string', {'py3 print(sys.version_info)'},
|
||||
'="py3 print(sys.version_info)"')
|
||||
end)
|
||||
|
||||
it('correctly loads ext values', function()
|
||||
@@ -625,6 +629,9 @@ describe('autoload/msgpack.vim', function()
|
||||
'+(-1)"\\nabc\\n\\n\\ndef"')
|
||||
eval_eq('ext', {-1, {''}}, '+(-1)""')
|
||||
eval_eq('ext', {-1, {'"'}}, '+(-1)"\\""')
|
||||
|
||||
eval_eq('ext', {42, {'py3 print(sys.version_info)'}},
|
||||
'+(42)"py3 print(sys.version_info)"')
|
||||
end)
|
||||
|
||||
it('correctly loads floats', function()
|
||||
@@ -676,6 +683,13 @@ describe('autoload/msgpack.vim', function()
|
||||
eval_eq('map', {{{_TYPE={}, _VAL={{1, 2}}}, {_TYPE={}, _VAL={{3, 4}}}},
|
||||
{1, 2}},
|
||||
'{{1: 2}: {3: 4}, 1: 2}')
|
||||
|
||||
eval_eq('map', {{{_TYPE={}, _VAL={
|
||||
{{_TYPE={}, _VAL={'py3 print(sys.version_info)'}},
|
||||
2}}},
|
||||
{_TYPE={}, _VAL={{3, 4}}}},
|
||||
{1, 2}},
|
||||
'{{"py3 print(sys.version_info)": 2}: {3: 4}, 1: 2}')
|
||||
end)
|
||||
|
||||
it('correctly loads arrays', function()
|
||||
@@ -684,6 +698,9 @@ describe('autoload/msgpack.vim', function()
|
||||
eval_eq('array', {{_TYPE={}, _VAL=1}}, '[TRUE]')
|
||||
eval_eq('array', {{{_TYPE={}, _VAL={{1, 2}}}}, {_TYPE={}, _VAL={{3, 4}}}},
|
||||
'[[{1: 2}], {3: 4}]')
|
||||
|
||||
eval_eq('array', {{_TYPE={}, _VAL={'py3 print(sys.version_info)'}}},
|
||||
'["py3 print(sys.version_info)"]')
|
||||
end)
|
||||
|
||||
it('errors out when needed', function()
|
||||
@@ -711,6 +728,11 @@ describe('autoload/msgpack.vim', function()
|
||||
exc_exec('call msgpack#eval("0x", {})'))
|
||||
eq('name-unknown:Unknown name FOO: FOO',
|
||||
exc_exec('call msgpack#eval("FOO", {})'))
|
||||
|
||||
eq('name-unknown:Unknown name py3: py3 print(sys.version_info)',
|
||||
exc_exec('call msgpack#eval("py3 print(sys.version_info)", {})'))
|
||||
eq('name-unknown:Unknown name o: o',
|
||||
exc_exec('call msgpack#eval("-info", {})'))
|
||||
end)
|
||||
end)
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user