aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2017-10-09 02:55:56 +0300
committerZyX <kp-pav@yandex.ru>2017-10-15 19:13:52 +0300
commitfa3cfc0dd54df125a1dbabccda47a5f45dc483ae (patch)
treebe4c707c2bdfda3fab439d48b5ed9a5a93eb4856 /test
parentaf38cea133f5ebb67208cedd289e408cd1dad15a (diff)
downloadrneovim-fa3cfc0dd54df125a1dbabccda47a5f45dc483ae.tar.gz
rneovim-fa3cfc0dd54df125a1dbabccda47a5f45dc483ae.tar.bz2
rneovim-fa3cfc0dd54df125a1dbabccda47a5f45dc483ae.zip
viml/parser/expressions: Finish parser
Note: formatc.lua was unable to swallow some newer additions to ExprASTNodeType (specifically `kExprNodeOr = '|'` and probably something else), so all `= …` were dropped: in any case they only were there in order to not bother updating viml_pexpr_debug_print_ast_node and since it is now known all nodes which will be present it is not much of an issue.
Diffstat (limited to 'test')
-rw-r--r--test/symbolic/klee/viml_expressions_lexer.c1
-rw-r--r--test/unit/viml/expressions/lexer_spec.lua6
-rw-r--r--test/unit/viml/expressions/parser_spec.lua19
-rw-r--r--test/unit/viml/helpers.lua1
4 files changed, 24 insertions, 3 deletions
diff --git a/test/symbolic/klee/viml_expressions_lexer.c b/test/symbolic/klee/viml_expressions_lexer.c
index cddc1cb2f1..ee7dc312e9 100644
--- a/test/symbolic/klee/viml_expressions_lexer.c
+++ b/test/symbolic/klee/viml_expressions_lexer.c
@@ -17,6 +17,7 @@
#include "nvim/charset.c"
#include "nvim/garray.c"
#include "nvim/gettext.c"
+#include "nvim/keymap.c"
#include "nvim/viml/parser/expressions.c"
#define INPUT_SIZE 7
diff --git a/test/unit/viml/expressions/lexer_spec.lua b/test/unit/viml/expressions/lexer_spec.lua
index f180d8ceff..674b1b37db 100644
--- a/test/unit/viml/expressions/lexer_spec.lua
+++ b/test/unit/viml/expressions/lexer_spec.lua
@@ -62,9 +62,9 @@ child_call_once(function()
}
eltkn_opt_scope_tab = {
- [tonumber(lib.kExprLexOptUnspecified)] = 'Unspecified',
- [tonumber(lib.kExprLexOptGlobal)] = 'Global',
- [tonumber(lib.kExprLexOptLocal)] = 'Local',
+ [tonumber(lib.kExprOptScopeUnspecified)] = 'Unspecified',
+ [tonumber(lib.kExprOptScopeGlobal)] = 'Global',
+ [tonumber(lib.kExprOptScopeLocal)] = 'Local',
}
end)
diff --git a/test/unit/viml/expressions/parser_spec.lua b/test/unit/viml/expressions/parser_spec.lua
index ed77a7cba4..5041708a3e 100644
--- a/test/unit/viml/expressions/parser_spec.lua
+++ b/test/unit/viml/expressions/parser_spec.lua
@@ -93,6 +93,16 @@ make_enum_conv_tab(lib, {
'kExprNodeFloat',
'kExprNodeSingleQuotedString',
'kExprNodeDoubleQuotedString',
+ 'kExprNodeOr',
+ 'kExprNodeAnd',
+ 'kExprNodeUnaryMinus',
+ 'kExprNodeBinaryMinus',
+ 'kExprNodeNot',
+ 'kExprNodeMultiplication',
+ 'kExprNodeDivision',
+ 'kExprNodeMod',
+ 'kExprNodeOption',
+ 'kExprNodeEnvironment',
}, 'kExprNode', function(ret) east_node_type_tab = ret end)
local function conv_east_node_type(typ)
@@ -149,6 +159,15 @@ local function eastnode2lua(pstate, eastnode, checked_nodes)
local s = ffi.string(eastnode.data.str.value, eastnode.data.str.size)
typ = format_string('%s(val=%q)', typ, s)
end
+ elseif typ == 'Option' then
+ typ = ('%s(scope=%s,ident=%s)'):format(
+ typ,
+ tostring(intchar2lua(eastnode.data.opt.scope)),
+ ffi.string(eastnode.data.opt.ident, eastnode.data.opt.ident_len))
+ elseif typ == 'Environment' then
+ typ = ('%s(ident=%s)'):format(
+ typ,
+ ffi.string(eastnode.data.env.ident, eastnode.data.env.ident_len))
end
ret_str = typ .. ':' .. ret_str
local can_simplify = true
diff --git a/test/unit/viml/helpers.lua b/test/unit/viml/helpers.lua
index 0b92be2654..c965cacb29 100644
--- a/test/unit/viml/helpers.lua
+++ b/test/unit/viml/helpers.lua
@@ -5,6 +5,7 @@ local cimport = helpers.cimport
local kvi_new = helpers.kvi_new
local kvi_init = helpers.kvi_init
local conv_enum = helpers.conv_enum
+local child_call_once = helpers.child_call_once
local make_enum_conv_tab = helpers.make_enum_conv_tab
local lib = cimport('./src/nvim/viml/parser/expressions.h')