Skip to content

Commit c577b77

Browse files
committed
support initialization of rlist and default_args
1 parent 61aed8b commit c577b77

File tree

4 files changed

+20
-21
lines changed

4 files changed

+20
-21
lines changed

go/_test/special.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ node.attr.dict = true
3535
// skip
3636
// end skip
3737
// do not skip
38+
node.rlist = []*VimNode{}
39+
node.list = []*VimNode{}
40+
node.depth = 0
3841
node.list = self.parse_lvaluelist()
3942
node.depth = hoge
4043
node.rlist = []*VimNode{nil, nil}

go/_test/special.vim

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@ let self.context = {}
123123
let toplevel.body = {}
124124

125125
let node.body = []
126-
let node.rlist = []
127126
let node.attr = {'range': 0, 'abort': 0, 'dict': 0}
128127
let node.endfunction = s:NIL
129128
let node.endif = s:NIL
@@ -134,14 +133,15 @@ let node.elseif = s:NIL
134133
let node.catch = []
135134
let node.finally = []
136135

137-
let node.list = []
138-
let node.depth = s:NIL
139136
let node.pattern = s:NIL
140137

141138
let lhs.list = []
142139
" end skip
143140

144141
" do not skip
142+
let node.rlist = []
143+
let node.list = []
144+
let node.depth = s:NIL
145145
let node.list = self.parse_lvaluelist()
146146
let node.depth = hoge
147147
let node.pattern = node

go/gocompiler.vim

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -452,24 +452,13 @@ function s:GoCompiler.compile_let(node)
452452
elseif left =~ '^\v(self\.(find_command_cache|cache|buf|pos|context)|toplevel.body|lhs.list|(node\.(body|attr|else_|elseif|catch|finally|pattern|end(function|if|for|try))))$' && op == '='
453453
" skip initialization
454454
return
455-
elseif left =~ '^\v(node\.(list|depth))$' && op == '='
456-
if right == 'nil' || right == '[]interface{}{}'
457-
return
458-
endif
459-
call self.out('%s %s %s', left, op, right)
455+
elseif left =~ '^\v%(node\.%(r?list|default_args|body))$' && op == '='
456+
call self.out('%s %s %s', left, op, substitute(right, '[]interface{}', '[]*VimNode', 'g'))
460457
return
461-
elseif left =~ 'node.rlist' && op == '='
462-
if right == '[]interface{}{}'
463-
return
464-
endif
465-
let m = matchstr(right, '\V[]interface{}{\zs\.\*\ze}\$')
466-
if m != ''
467-
call self.out('%s = []*VimNode{%s}', left, m)
468-
else
469-
call self.out('%s = %s', left, right)
470-
endif
458+
elseif left == 'node.depth' && op == '=' && right == 'nil'
459+
call self.out('%s %s %s', left, op, '0')
471460
return
472-
elseif left =~ '^\v(list|curly_parts)$' && op == '=' && right == '[]interface{}{}'
461+
elseif left =~ '^\v(r?list|curly_parts)$' && op == '=' && right == '[]interface{}{}'
473462
call self.out('var %s []*VimNode', left)
474463
return
475464
elseif left == 'cmd' && op == '=' && (right == 'nil' || right =~ '^\Vmap[string]interface{}{')

go/vimlparser.go

Lines changed: 9 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)