aboutsummaryrefslogtreecommitdiff
path: root/test/unit/viml/expressions/parser_spec.lua
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2017-11-19 20:20:06 +0300
committerZyX <kp-pav@yandex.ru>2017-11-19 20:20:06 +0300
commita94255a7ac22649311f858e39b217543d0d7e5e8 (patch)
treeb9046e4aa38a8afc00a338161ecef0ccec9238da /test/unit/viml/expressions/parser_spec.lua
parent53fa435a1f081e1d7e1890e3ecd978b85c39e0eb (diff)
downloadrneovim-a94255a7ac22649311f858e39b217543d0d7e5e8.tar.gz
rneovim-a94255a7ac22649311f858e39b217543d0d7e5e8.tar.bz2
rneovim-a94255a7ac22649311f858e39b217543d0d7e5e8.zip
tests: Use single test file for unit and functional parser tests
Diffstat (limited to 'test/unit/viml/expressions/parser_spec.lua')
-rw-r--r--test/unit/viml/expressions/parser_spec.lua8180
1 files changed, 19 insertions, 8161 deletions
diff --git a/test/unit/viml/expressions/parser_spec.lua b/test/unit/viml/expressions/parser_spec.lua
index eca76aa9cd..24f681f438 100644
--- a/test/unit/viml/expressions/parser_spec.lua
+++ b/test/unit/viml/expressions/parser_spec.lua
@@ -226,6 +226,9 @@ local function format_check(expr, format_check_data, opts)
if #expr > 10 then
print(digits2)
end
+ if zdata.ast.len then
+ print((' len = %u,'):format(zdata.ast.len))
+ end
print(' ast = ' .. format_luav(zdata.ast.ast, ' ') .. ',')
if zdata.ast.err then
print(' err = {')
@@ -414,14 +417,21 @@ eastnodelist2lua = function(pstate, eastnode, checked_nodes)
return ret
end
-local function east2lua(pstate, east)
+local function east2lua(str, pstate, east)
local checked_nodes = {}
+ local len = tonumber(pstate.pos.col)
+ if pstate.pos.line == 1 then
+ len = tonumber(pstate.reader.lines.items[0].size)
+ end
+ if type(str) == 'string' and len == #str then
+ len = nil
+ end
return {
err = east.err.msg ~= nil and {
msg = ffi.string(east.err.msg),
- arg = ('%s'):format(
- ffi.string(east.err.arg, east.err.arg_len)),
+ arg = ffi.string(east.err.arg, east.err.arg_len),
} or nil,
+ len = len,
ast = eastnodelist2lua(pstate, east.root, checked_nodes),
}
end
@@ -463,7 +473,7 @@ describe('Expressions parser', function()
local pstate = new_pstate({str})
local east = lib.viml_pexpr_parse(pstate, flags)
- local ast = east2lua(pstate, east)
+ local ast = east2lua(str, pstate, east)
local hls = phl2lua(pstate)
if exp_ast == nil then
format_check_data[flags] = {ast=ast, hl_fs=hls_to_hl_fs(hls)}
@@ -509,15 +519,6 @@ describe('Expressions parser', function()
format_check(str, format_check_data, opts)
end
end
- local function check_parsing(...)
- return _check_parsing({flags={0, 1, 2, 3}, funcname='check_parsing'}, ...)
- end
- local function check_asgn_parsing(...)
- return _check_parsing({
- flags={4, 5, 6, 7},
- funcname='check_asgn_parsing',
- }, ...)
- end
local function hl(group, str, shift)
return function(next_col)
if nvim_hl_defs['NVim' .. group] == nil then
@@ -531,8152 +532,9 @@ describe('Expressions parser', function()
str)), (col + #str)
end
end
- itp('works with + and @a', function()
- check_parsing('@a', {
- ast = {
- 'Register(name=a):0:0:@a',
- },
- }, {
- hl('Register', '@a'),
- })
- check_parsing('+@a', {
- ast = {
- {
- 'UnaryPlus:0:0:+',
- children = {
- 'Register(name=a):0:1:@a',
- },
- },
- },
- }, {
- hl('UnaryPlus', '+'),
- hl('Register', '@a'),
- })
- check_parsing('@a+@b', {
- ast = {
- {
- 'BinaryPlus:0:2:+',
- children = {
- 'Register(name=a):0:0:@a',
- 'Register(name=b):0:3:@b',
- },
- },
- },
- }, {
- hl('Register', '@a'),
- hl('BinaryPlus', '+'),
- hl('Register', '@b'),
- })
- check_parsing('@a+@b+@c', {
- ast = {
- {
- 'BinaryPlus:0:5:+',
- children = {
- {
- 'BinaryPlus:0:2:+',
- children = {
- 'Register(name=a):0:0:@a',
- 'Register(name=b):0:3:@b',
- },
- },
- 'Register(name=c):0:6:@c',
- },
- },
- },
- }, {
- hl('Register', '@a'),
- hl('BinaryPlus', '+'),
- hl('Register', '@b'),
- hl('BinaryPlus', '+'),
- hl('Register', '@c'),
- })
- check_parsing('+@a+@b', {
- ast = {
- {
- 'BinaryPlus:0:3:+',
- children = {
- {
- 'UnaryPlus:0:0:+',
- children = {
- 'Register(name=a):0:1:@a',
- },
- },
- 'Register(name=b):0:4:@b',
- },
- },
- },
- }, {
- hl('UnaryPlus', '+'),
- hl('Register', '@a'),
- hl('BinaryPlus', '+'),
- hl('Register', '@b'),
- })
- check_parsing('+@a++@b', {
- ast = {
- {
- 'BinaryPlus:0:3:+',
- children = {
- {
- 'UnaryPlus:0:0:+',
- children = {
- 'Register(name=a):0:1:@a',
- },
- },
- {
- 'UnaryPlus:0:4:+',
- children = {
- 'Register(name=b):0:5:@b',
- },
- },
- },
- },
- },
- }, {
- hl('UnaryPlus', '+'),
- hl('Register', '@a'),
- hl('BinaryPlus', '+'),
- hl('UnaryPlus', '+'),
- hl('Register', '@b'),
- })
- check_parsing('@a@b', {
- ast = {
- {
- 'OpMissing:0:2:',
- children = {
- 'Register(name=a):0:0:@a',
- 'Register(name=b):0:2:@b',
- },
- },
- },
- err = {
- arg = '@b',
- msg = 'E15: Missing operator: %.*s',
- },
- }, {
- hl('Register', '@a'),
- hl('InvalidRegister', '@b'),
- }, {
- [1] = {
- ast = {
- err = REMOVE_THIS,
- ast = {
- 'Register(name=a):0:0:@a'
- },
- },
- hl_fs = {
- [2] = REMOVE_THIS,
- },
- },
- })
- check_parsing(' @a \t @b', {
- ast = {
- {
- 'OpMissing:0:3:',
- children = {
- 'Register(name=a):0:0: @a',
- 'Register(name=b):0:3: \t @b',
- },
- },
- },
- err = {
- arg = '@b',
- msg = 'E15: Missing operator: %.*s',
- },
- }, {
- hl('Register', '@a', 1),
- hl('InvalidSpacing', ' \t '),
- hl('Register', '@b'),
- }, {
- [1] = {
- ast = {
- err = REMOVE_THIS,
- ast = {
- 'Register(name=a):0:0: @a'
- },
- },
- hl_fs = {
- [2] = REMOVE_THIS,
- [3] = REMOVE_THIS,
- },
- },
- })
- check_parsing('+', {
- ast = {
- 'UnaryPlus:0:0:+',
- },
- err = {
- arg = '',
- msg = 'E15: Expected value, got EOC: %.*s',
- },
- }, {
- hl('UnaryPlus', '+'),
- })
- check_parsing(' +', {
- ast = {
- 'UnaryPlus:0:0: +',
- },
- err = {
- arg = '',
- msg = 'E15: Expected value, got EOC: %.*s',
- },
- }, {
- hl('UnaryPlus', '+', 1),
- })
- check_parsing('@a+ ', {
- ast = {
- {
- 'BinaryPlus:0:2:+',
- children = {
- 'Register(name=a):0:0:@a',
- },
- },
- },
- err = {
- arg = '',
- msg = 'E15: Expected value, got EOC: %.*s',
- },
- }, {
- hl('Register', '@a'),
- hl('BinaryPlus', '+'),
- })
- end)
- itp('works with @a, + and parenthesis', function()
- check_parsing('(@a)', {
- ast = {
- {
- 'Nested:0:0:(',
- children = {
- 'Register(name=a):0:1:@a',
- },
- },
- },
- }, {
- hl('NestingParenthesis', '('),
- hl('Register', '@a'),
- hl('NestingParenthesis', ')'),
- })
- check_parsing('()', {
- ast = {
- {
- 'Nested:0:0:(',
- children = {
- 'Missing:0:1:',
- },
- },
- },
- err = {
- arg = ')',
- msg = 'E15: Expected value, got parenthesis: %.*s',
- },
- }, {
- hl('NestingParenthesis', '('),
- hl('InvalidNestingParenthesis', ')'),
- })
- check_parsing(')', {
- ast = {
- {
- 'Nested:0:0:',
- children = {
- 'Missing:0:0:',
- },
- },
- },
- err = {
- arg = ')',
- msg = 'E15: Expected value, got parenthesis: %.*s',
- },
- }, {
- hl('InvalidNestingParenthesis', ')'),
- })
- check_parsing('+)', {
- ast = {
- {
- 'Nested:0:1:',
- children = {
- {
- 'UnaryPlus:0:0:+',
- children = {
- 'Missing:0:1:',
- },
- },
- },
- },
- },
- err = {
- arg = ')',
- msg = 'E15: Expected value, got parenthesis: %.*s',
- },
- }, {
- hl('UnaryPlus', '+'),
- hl('InvalidNestingParenthesis', ')'),
- })
- check_parsing('+@a(@b)', {
- ast = {
- {
- 'UnaryPlus:0:0:+',
- children = {
- {
- 'Call:0:3:(',
- children = {
- 'Register(name=a):0:1:@a',
- 'Register(name=b):0:4:@b',
- },
- },
- },
- },
- },
- }, {
- hl('UnaryPlus', '+'),
- hl('Register', '@a'),
- hl('CallingParenthesis', '('),
- hl('Register', '@b'),
- hl('CallingParenthesis', ')'),
- })
- check_parsing('@a+@b(@c)', {
- ast = {
- {
- 'BinaryPlus:0:2:+',
- children = {
- 'Register(name=a):0:0:@a',
- {
- 'Call:0:5:(',
- children = {
- 'Register(name=b):0:3:@b',
- 'Register(name=c):0:6:@c',
- },
- },
- },
- },
- },
- }, {
- hl('Register', '@a'),
- hl('BinaryPlus', '+'),
- hl('Register', '@b'),
- hl('CallingParenthesis', '('),
- hl('Register', '@c'),
- hl('CallingParenthesis', ')'),
- })
- check_parsing('@a()', {
- ast = {
- {
- 'Call:0:2:(',
- children = {
- 'Register(name=a):0:0:@a',
- },
- },
- },
- }, {
- hl('Register', '@a'),
- hl('CallingParenthesis', '('),
- hl('CallingParenthesis', ')'),
- })
- check_parsing('@a ()', {
- ast = {
- {
- 'OpMissing:0:2:',
- children = {
- 'Register(name=a):0:0:@a',
- {
- 'Nested:0:2: (',
- children = {
- 'Missing:0:4:',
- },
- },
- },
- },
- },
- err = {
- arg = '()',
- msg = 'E15: Missing operator: %.*s',
- },
- }, {
- hl('Register', '@a'),
- hl('InvalidSpacing', ' '),
- hl('NestingParenthesis', '('),
- hl('InvalidNestingParenthesis', ')'),
- }, {
- [1] = {
- ast = {
- err = REMOVE_THIS,
- ast = {
- 'Register(name=a):0:0:@a',
- },
- },
- hl_fs = {
- [2] = REMOVE_THIS,
- [3] = REMOVE_THIS,
- [4] = REMOVE_THIS,
- },
- },
- })
- check_parsing('@a + (@b)', {
- ast = {
- {
- 'BinaryPlus:0:2: +',
- children = {
- 'Register(name=a):0:0:@a',
- {
- 'Nested:0:4: (',
- children = {
- 'Register(name=b):0:6:@b',
- },
- },
- },
- },
- },
- }, {
- hl('Register', '@a'),
- hl('BinaryPlus', '+', 1),
- hl('NestingParenthesis', '(', 1),
- hl('Register', '@b'),
- hl('NestingParenthesis', ')'),
- })
- check_parsing('@a + (+@b)', {
- ast = {
- {
- 'BinaryPlus:0:2: +',
- children = {
- 'Register(name=a):0:0:@a',
- {
- 'Nested:0:4: (',
- children = {
- {
- 'UnaryPlus:0:6:+',
- children = {
- 'Register(name=b):0:7:@b',
- },
- },
- },
- },
- },
- },
- },
- }, {
- hl('Register', '@a'),
- hl('BinaryPlus', '+', 1),
- hl('NestingParenthesis', '(', 1),
- hl('UnaryPlus', '+'),
- hl('Register', '@b'),
- hl('NestingParenthesis', ')'),
- })
- check_parsing('@a + (@b + @c)', {
- ast = {
- {
- 'BinaryPlus:0:2: +',
- children = {
- 'Register(name=a):0:0:@a',
- {
- 'Nested:0:4: (',
- children = {
- {
- 'BinaryPlus:0:8: +',
- children = {
- 'Register(name=b):0:6:@b',
- 'Register(name=c):0:10: @c',
- },
- },
- },
- },
- },
- },
- },
- }, {
- hl('Register', '@a'),
- hl('BinaryPlus', '+', 1),
- hl('NestingParenthesis', '(', 1),
- hl('Register', '@b'),
- hl('BinaryPlus', '+', 1),
- hl('Register', '@c', 1),
- hl('NestingParenthesis', ')'),
- })
- check_parsing('(@a)+@b', {
- ast = {
- {
- 'BinaryPlus:0:4:+',
- children = {
- {
- 'Nested:0:0:(',
- children = {
- 'Register(name=a):0:1:@a',
- },
- },
- 'Register(name=b):0:5:@b',
- },
- },
- },
- }, {
- hl('NestingParenthesis', '('),
- hl('Register', '@a'),
- hl('NestingParenthesis', ')'),
- hl('BinaryPlus', '+'),
- hl('Register', '@b'),
- })
- check_parsing('@a+(@b)(@c)', {
- -- 01234567890
- ast = {
- {
- 'BinaryPlus:0:2:+',
- children = {
- 'Register(name=a):0:0:@a',
- {
- 'Call:0:7:(',
- children = {
- {
- 'Nested:0:3:(',
- children = { 'Register(name=b):0:4:@b' },
- },
- 'Register(name=c):0:8:@c',
- },
- },
- },
- },
- },
- }, {
- hl('Register', '@a'),
- hl('BinaryPlus', '+'),
- hl('NestingParenthesis', '('),
- hl('Register', '@b'),
- hl('NestingParenthesis', ')'),
- hl('CallingParenthesis', '('),
- hl('Register', '@c'),
- hl('CallingParenthesis', ')'),
- })
- check_parsing('@a+((@b))(@c)', {
- -- 01234567890123456890123456789
- -- 0 1 2
- ast = {
- {
- 'BinaryPlus:0:2:+',
- children = {
- 'Register(name=a):0:0:@a',
- {
- 'Call:0:9:(',
- children = {
- {
- 'Nested:0:3:(',
- children = {
- {
- 'Nested:0:4:(',
- children = { 'Register(name=b):0:5:@b' }
- },
- },
- },
- 'Register(name=c):0:10:@c',
- },
- },
- },
- },
- },
- }, {
- hl('Register', '@a'),
- hl('BinaryPlus', '+'),
- hl('NestingParenthesis', '('),
- hl('NestingParenthesis', '('),
- hl('Register', '@b'),
- hl('NestingParenthesis', ')'),
- hl('NestingParenthesis', ')'),
- hl('CallingParenthesis', '('),
- hl('Register', '@c'),
- hl('CallingParenthesis', ')'),
- })
- check_parsing('@a+((@b))+@c', {
- -- 01234567890123456890123456789
- -- 0 1 2
- ast = {
- {
- 'BinaryPlus:0:9:+',
- children = {
- {
- 'BinaryPlus:0:2:+',
- children = {
- 'Register(name=a):0:0:@a',
- {
- 'Nested:0:3:(',
- children = {
- {
- 'Nested:0:4:(',
- children = { 'Register(name=b):0:5:@b' }
- },
- },
- },
- },
- },
- 'Register(name=c):0:10:@c',
- },
- },
- },
- }, {
- hl('Register', '@a'),
- hl('BinaryPlus', '+'),
- hl('NestingParenthesis', '('),
- hl('NestingParenthesis', '('),
- hl('Register', '@b'),
- hl('NestingParenthesis', ')'),
- hl('NestingParenthesis', ')'),
- hl('BinaryPlus', '+'),
- hl('Register', '@c'),
- })
- check_parsing(
- '@a + (@b + @c) + @d(@e) + (+@f) + ((+@g(@h))(@j)(@k))(@l)', {--[[
- | | | | | | | | || | | || | | ||| || || || ||
- 000000000011111111112222222222333333333344444444445555555
- 012345678901234567890123456789012345678901234567890123456
- ]]
- ast = {{
- 'BinaryPlus:0:31: +',
- children = {
- {
- 'BinaryPlus:0:23: +',
- children = {
- {
- 'BinaryPlus:0:14: +',
- children = {
- {
- 'BinaryPlus:0:2: +',
- children = {
- 'Register(name=a):0:0:@a',
- {
- 'Nested:0:4: (',
- children = {
- {
- 'BinaryPlus:0:8: +',
- children = {
- 'Register(name=b):0:6:@b',
- 'Register(name=c):0:10: @c',
- },
- },
- },
- },
- },
- },
- {
- 'Call:0:19:(',
- children = {
- 'Register(name=d):0:16: @d',
- 'Register(name=e):0:20:@e',
- },
- },
- },
- },
- {
- 'Nested:0:25: (',
- children = {
- {
- 'UnaryPlus:0:27:+',
- children = {
- 'Register(name=f):0:28:@f',
- },
- },
- },
- },
- },
- },
- {
- 'Call:0:53:(',
- children = {
- {
- 'Nested:0:33: (',
- children = {
- {
- 'Call:0:48:(',
- children = {
- {
- 'Call:0:44:(',
- children = {
- {
- 'Nested:0:35:(',
- children = {
- {
- 'UnaryPlus:0:36:+',
- children = {
- {
- 'Call:0:39:(',
- children = {
- 'Register(name=g):0:37:@g',
- 'Register(name=h):0:40:@h',
- },
- },
- },
- },
- },
- },
- 'Register(name=j):0:45:@j',
- },
- },
- 'Register(name=k):0:49:@k',
- },
- },
- },
- },
- 'Register(name=l):0:54:@l',
- },
- },
- },
- }},
- }, {
- hl('Register', '@a'),
- hl('BinaryPlus', '+', 1),
- hl('NestingParenthesis', '(', 1),
- hl('Register', '@b'),
- hl('BinaryPlus', '+', 1),
- hl('Register', '@c', 1),
- hl('NestingParenthesis', ')'),
- hl('BinaryPlus', '+', 1),
- hl('Register', '@d', 1),
- hl('CallingParenthesis', '('),
- hl('Register', '@e'),
- hl('CallingParenthesis', ')'),
- hl('BinaryPlus', '+', 1),
- hl('NestingParenthesis', '(', 1),
- hl('UnaryPlus', '+'),
- hl('Register', '@f'),
- hl('NestingParenthesis', ')'),
- hl('BinaryPlus', '+', 1),
- hl('NestingParenthesis', '(', 1),
- hl('NestingParenthesis', '('),
- hl('UnaryPlus', '+'),
- hl('Register', '@g'),
- hl('CallingParenthesis', '('),
- hl('Register', '@h'),
- hl('CallingParenthesis', ')'),
- hl('NestingParenthesis', ')'),
- hl('CallingParenthesis', '('),
- hl('Register', '@j'),
- hl('CallingParenthesis', ')'),
- hl('CallingParenthesis', '('),
- hl('Register', '@k'),
- hl('CallingParenthesis', ')'),
- hl('NestingParenthesis', ')'),
- hl('CallingParenthesis', '('),
- hl('Register', '@l'),
- hl('CallingParenthesis', ')'),
- })
- check_parsing('@a)', {
- -- 012
- ast = {
- {
- 'Nested:0:2:',
- children = {
- 'Register(name=a):0:0:@a',
- },
- },
- },
- err = {
- arg = ')',
- msg = 'E15: Unexpected closing parenthesis: %.*s',
- },
- }, {
- hl('Register', '@a'),
- hl('InvalidNestingParenthesis', ')'),
- })
- check_parsing('(@a', {
- -- 012
- ast = {
- {
- 'Nested:0:0:(',
- children = {
- 'Register(name=a):0:1:@a',
- },
- },
- },
- err = {
- arg = '(@a',
- msg = 'E110: Missing closing parenthesis for nested expression: %.*s',
- },
- }, {
- hl('NestingParenthesis', '('),
- hl('Register', '@a'),
- })
- check_parsing('@a(@b', {
- -- 01234
- ast = {
- {
- 'Call:0:2:(',
- children = {
- 'Register(name=a):0:0:@a',
- 'Register(name=b):0:3:@b',
- },
- },
- },
- err = {
- arg = '(@b',
- msg = 'E116: Missing closing parenthesis for function call: %.*s',
- },
- }, {
- hl('Register', '@a'),
- hl('CallingParenthesis', '('),
- hl('Register', '@b'),
- })
- check_parsing('@a(@b, @c, @d, @e)', {
- -- 012345678901234567
- -- 0 1
- ast = {
- {
- 'Call:0:2:(',
- children = {
- 'Register(name=a):0:0:@a',
- {
- 'Comma:0:5:,',
- children = {
- 'Register(name=b):0:3:@b',
- {
- 'Comma:0:9:,',
- children = {
- 'Register(name=c):0:6: @c',
- {
- 'Comma:0:13:,',
- children = {
- 'Register(name=d):0:10: @d',
- 'Register(name=e):0:14: @e',
- },
- },
- },
- },
- },
- },
- },
- },
- },
- }, {
- hl('Register', '@a'),
- hl('CallingParenthesis', '('),
- hl('Register', '@b'),
- hl('Comma', ','),
- hl('Register', '@c', 1),
- hl('Comma', ','),
- hl('Register', '@d', 1),
- hl('Comma', ','),
- hl('Register', '@e', 1),
- hl('CallingParenthesis', ')'),
- })
- check_parsing('@a(@b(@c))', {
- -- 01234567890123456789012345678901234567
- -- 0 1 2 3
- ast = {
- {
- 'Call:0:2:(',
- children = {
- 'Register(name=a):0:0:@a',
- {
- 'Call:0:5:(',
- children = {
- 'Register(name=b):0:3:@b',
- 'Register(name=c):0:6:@c',
- },
- },
- },
- },
- },
- }, {
- hl('Register', '@a'),
- hl('CallingParenthesis', '('),
- hl('Register', '@b'),
- hl('CallingParenthesis', '('),
- hl('Register', '@c'),
- hl('CallingParenthesis', ')'),
- hl('CallingParenthesis', ')'),
- })
- check_parsing('@a(@b(@c(@d(@e), @f(@g(@h), @i(@j)))))', {
- -- 01234567890123456789012345678901234567
- -- 0 1 2 3
- ast = {
- {
- 'Call:0:2:(',
- children = {
- 'Register(name=a):0:0:@a',
- {
- 'Call:0:5:(',
- children = {
- 'Register(name=b):0:3:@b',
- {
- 'Call:0:8:(',
- children = {
- 'Register(name=c):0:6:@c',
- {
- 'Comma:0:15:,',
- children = {
- {
- 'Call:0:11:(',
- children = {
- 'Register(name=d):0:9:@d',
- 'Register(name=e):0:12:@e',
- },
- },
- {
- 'Call:0:19:(',
- children = {
- 'Register(name=f):0:16: @f',
- {
- 'Comma:0:26:,',
- children = {
- {
- 'Call:0:22:(',
- children = {
- 'Register(name=g):0:20:@g',
- 'Register(name=h):0:23:@h',
- },
- },
- {
- 'Call:0:30:(',
- children = {
- 'Register(name=i):0:27: @i',
- 'Register(name=j):0:31:@j',
- },
- },
- },
- },
- },
- },
- },
- },
- },
- },
- },
- },
- },
- },
- },
- }, {
- hl('Register', '@a'),
- hl('CallingParenthesis', '('),
- hl('Register', '@b'),
- hl('CallingParenthesis', '('),
- hl('Register', '@c'),
- hl('CallingParenthesis', '('),
- hl('Register', '@d'),
- hl('CallingParenthesis', '('),
- hl('Register', '@e'),
- hl('CallingParenthesis', ')'),
- hl('Comma', ','),
- hl('Register', '@f', 1),
- hl('CallingParenthesis', '('),
- hl('Register', '@g'),
- hl('CallingParenthesis', '('),
- hl('Register', '@h'),
- hl('CallingParenthesis', ')'),
- hl('Comma', ','),
- hl('Register', '@i', 1),
- hl('CallingParenthesis', '('),
- hl('Register', '@j'),
- hl('CallingParenthesis', ')'),
- hl('CallingParenthesis', ')'),
- hl('CallingParenthesis', ')'),
- hl('CallingParenthesis', ')'),
- hl('CallingParenthesis', ')'),
- })
- check_parsing('()()', {
- -- 0123
- ast = {
- {
- 'Call:0:2:(',
- children = {
- {
- 'Nested:0:0:(',
- children = {
- 'Missing:0:1:',
- },
- },
- },
- },
- },
- err = {
- arg = ')()',
- msg = 'E15: Expected value, got parenthesis: %.*s',
- },
- }, {
- hl('NestingParenthesis', '('),
- hl('InvalidNestingParenthesis', ')'),
- hl('CallingParenthesis', '('),
- hl('CallingParenthesis', ')'),
- })
- check_parsing('(@a)()', {
- -- 012345
- ast = {
- {
- 'Call:0:4:(',
- children = {
- {
- 'Nested:0:0:(',
- children = {
- 'Register(name=a):0:1:@a',
- },
- },
- },
- },
- },
- }, {
- hl('NestingParenthesis', '('),
- hl('Register', '@a'),
- hl('NestingParenthesis', ')'),
- hl('CallingParenthesis', '('),
- hl('CallingParenthesis', ')'),
- })
- check_parsing('(@a)(@b)', {
- -- 01234567
- ast = {
- {
- 'Call:0:4:(',
- children = {
- {
- 'Nested:0:0:(',
- children = {
- 'Register(name=a):0:1:@a',
- },
- },
- 'Register(name=b):0:5:@b',
- },
- },
- },
- }, {
- hl('NestingParenthesis', '('),
- hl('Register', '@a'),
- hl('NestingParenthesis', ')'),
- hl('CallingParenthesis', '('),
- hl('Register', '@b'),
- hl('CallingParenthesis', ')'),
- })
- check_parsing('(@a) (@b)', {
- -- 012345678
- ast = {
- {
- 'OpMissing:0:4:',
- children = {
- {
- 'Nested:0:0:(',
- children = {
- 'Register(name=a):0:1:@a',
- },
- },
- {
- 'Nested:0:4: (',
- children = {
- 'Register(name=b):0:6:@b',
- },
- },
- },
- },
- },
- err = {
- arg = '(@b)',
- msg = 'E15: Missing operator: %.*s',
- },
- }, {
- hl('NestingParenthesis', '('),
- hl('Register', '@a'),
- hl('NestingParenthesis', ')'),
- hl('InvalidSpacing', ' '),
- hl('NestingParenthesis', '('),
- hl('Register', '@b'),
- hl('NestingParenthesis', ')'),
- }, {
- [1] = {
- ast = {
- ast = {
- {
- 'Nested:0:0:(',
- children = {
- 'Register(name=a):0:1:@a',
- REMOVE_THIS,
- },
- },
- },
- err = REMOVE_THIS,
- },
- hl_fs = {
- [4] = REMOVE_THIS,
- [5] = REMOVE_THIS,
- [6] = REMOVE_THIS,
- [7] = REMOVE_THIS,
- },
- },
- })
- end)
- itp('works with variable names, including curly braces ones', function()
- check_parsing('var', {
- ast = {
- 'PlainIdentifier(scope=0,ident=var):0:0:var',
- },
- }, {
- hl('IdentifierName', 'var'),
- })
- check_parsing('g:var', {
- ast = {
- 'PlainIdentifier(scope=g,ident=var):0:0:g:var',
- },
- }, {
- hl('IdentifierScope', 'g'),
- hl('IdentifierScopeDelimiter', ':'),
- hl('IdentifierName', 'var'),
- })
- check_parsing('g:', {
- ast = {
- 'PlainIdentifier(scope=g,ident=):0:0:g:',
- },
- }, {
- hl('IdentifierScope', 'g'),
- hl('IdentifierScopeDelimiter', ':'),
- })
- check_parsing('{a}', {
- -- 012
- ast = {
- {
- 'CurlyBracesIdentifier(-di):0:0:{',
- children = {
- 'PlainIdentifier(scope=0,ident=a):0:1:a',
- },
- },
- },
- }, {
- hl('Curly', '{'),