Skip to content

Commit a74f173

Browse files
committed
merge parse_constlhs() to parse_letlhs()
1 parent e4f8e05 commit a74f173

File tree

1 file changed

+6
-39
lines changed

1 file changed

+6
-39
lines changed

autoload/vimlparser.vim

+6-39
Original file line numberDiff line numberDiff line change
@@ -1506,7 +1506,7 @@ function! s:VimLParser.parse_cmd_let() abort
15061506
return
15071507
endif
15081508

1509-
let lhs = self.parse_letlhs()
1509+
let lhs = self.parse_letlhs(s:FALSE)
15101510
call self.reader.skip_white()
15111511
let s1 = self.reader.peekn(1)
15121512
let s2 = self.reader.peekn(2)
@@ -1567,7 +1567,7 @@ function! s:VimLParser.parse_cmd_const() abort
15671567
return
15681568
endif
15691569

1570-
let lhs = self.parse_constlhs()
1570+
let lhs = self.parse_letlhs(s:TRUE)
15711571
call self.reader.skip_white()
15721572
let s1 = self.reader.peekn(1)
15731573

@@ -1721,7 +1721,7 @@ function! s:VimLParser.parse_cmd_for() abort
17211721
let node.left = s:NIL
17221722
let node.right = s:NIL
17231723
let node.endfor = s:NIL
1724-
let lhs = self.parse_letlhs()
1724+
let lhs = self.parse_letlhs(s:FALSE)
17251725
let node.left = lhs.left
17261726
let node.list = lhs.list
17271727
let node.rest = lhs.rest
@@ -1930,7 +1930,6 @@ function! s:VimLParser.parse_lvalue() abort
19301930
throw s:Err('Invalid Expression', node.pos)
19311931
endfunction
19321932

1933-
" TODO: merge with s:VimLParser.parse_lvalue()
19341933
function! s:VimLParser.parse_constlvalue() abort
19351934
let p = s:LvalueParser.new(self.reader)
19361935
let node = p.parse()
@@ -1970,7 +1969,7 @@ function! s:VimLParser.parse_lvaluelist() abort
19701969
endfunction
19711970

19721971
" FIXME:
1973-
function! s:VimLParser.parse_letlhs() abort
1972+
function! s:VimLParser.parse_letlhs(is_const) abort
19741973
let lhs = {'left': s:NIL, 'list': s:NIL, 'rest': s:NIL}
19751974
let tokenizer = s:ExprTokenizer.new(self.reader)
19761975
if tokenizer.peek().type ==# s:TOKEN_SQOPEN
@@ -1997,46 +1996,14 @@ function! s:VimLParser.parse_letlhs() abort
19971996
throw s:Err(printf('E475 Invalid argument: %s', token.value), token.pos)
19981997
endif
19991998
endwhile
1999+
elseif a:is_const
2000+
let lhs.left = self.parse_constlvalue()
20002001
else
20012002
let lhs.left = self.parse_lvalue()
20022003
endif
20032004
return lhs
20042005
endfunction
20052006

2006-
" TODO: merge with s:VimLParser.parse_letlhs() ?
2007-
function! s:VimLParser.parse_constlhs() abort
2008-
let lhs = {'left': s:NIL, 'list': s:NIL, 'rest': s:NIL}
2009-
let tokenizer = s:ExprTokenizer.new(self.reader)
2010-
if tokenizer.peek().type ==# s:TOKEN_SQOPEN
2011-
call tokenizer.get()
2012-
let lhs.list = []
2013-
while s:TRUE
2014-
let node = self.parse_lvalue()
2015-
call add(lhs.list, node)
2016-
let token = tokenizer.get()
2017-
if token.type ==# s:TOKEN_SQCLOSE
2018-
break
2019-
elseif token.type ==# s:TOKEN_COMMA
2020-
continue
2021-
elseif token.type ==# s:TOKEN_SEMICOLON
2022-
let node = self.parse_lvalue()
2023-
let lhs.rest = node
2024-
let token = tokenizer.get()
2025-
if token.type ==# s:TOKEN_SQCLOSE
2026-
break
2027-
else
2028-
throw s:Err(printf('E475 Invalid argument: %s', token.value), token.pos)
2029-
endif
2030-
else
2031-
throw s:Err(printf('E475 Invalid argument: %s', token.value), token.pos)
2032-
endif
2033-
endwhile
2034-
else
2035-
let lhs.left = self.parse_constlvalue()
2036-
endif
2037-
return lhs
2038-
endfunction
2039-
20402007
function! s:VimLParser.ends_excmds(c) abort
20412008
return a:c ==# '' || a:c ==# '|' || a:c ==# '"' || a:c ==# '<EOF>' || a:c ==# '<EOL>'
20422009
endfunction

0 commit comments

Comments
 (0)