@@ -530,11 +530,10 @@ function! s:VimLParser.parse_command_modifiers()
530530 let modifiers = []
531531 while s: TRUE
532532 let pos = self .reader.tell ()
533+ let d = ' '
533534 if s: isdigit (self .reader.peekn (1 ))
534535 let d = self .reader.read_digit ()
535536 call self .reader.skip_white ()
536- else
537- let d = ' '
538537 endif
539538 let k = self .reader.read_alpha ()
540539 let c = self .reader.peekn (1 )
@@ -900,6 +899,7 @@ endfunction
900899
901900function ! s: VimLParser .find_command ()
902901 let c = self .reader.peekn (1 )
902+ let name = ' '
903903
904904 if c == # ' k'
905905 call self .reader.getn (1 )
@@ -1087,6 +1087,7 @@ endfunction
10871087
10881088" TODO:
10891089function ! s: VimLParser .parse_cmd_common ()
1090+ let end = self .reader.getpos ()
10901091 if self .ea .cmd.flags = ~# ' \<TRLBAR\>' && ! self .ea .usefilter
10911092 let end = self .separate_nextcmd ()
10921093 elseif self .ea .cmd.name == # ' !' || self .ea .cmd.name == # ' global' || self .ea .cmd.name == # ' vglobal' || self .ea .usefilter
@@ -1232,6 +1233,7 @@ function! s:VimLParser.parse_cmd_loadkeymap()
12321233endfunction
12331234
12341235function ! s: VimLParser .parse_cmd_lua ()
1236+ let lines = []
12351237 call self .reader.skip_white ()
12361238 if self .reader.peekn (2 ) == # ' <<'
12371239 call self .reader.getn (2 )
@@ -1352,6 +1354,7 @@ function! s:VimLParser.parse_cmd_function()
13521354 else
13531355 let named = {}
13541356 while s: TRUE
1357+ let varnode = s: Node (s: NODE_IDENTIFIER )
13551358 let token = tokenizer.get ()
13561359 if token.type == s: TOKEN_IDENTIFIER
13571360 if ! s: isargname (token.value) || token.value == # ' firstline' || token.value == # ' lastline'
@@ -1360,7 +1363,6 @@ function! s:VimLParser.parse_cmd_function()
13601363 throw s: Err (printf (' E853: Duplicate argument name: %s' , token.value), token.pos)
13611364 endif
13621365 let named[token.value] = 1
1363- let varnode = s: Node (s: NODE_IDENTIFIER )
13641366 let varnode.pos = token.pos
13651367 let varnode.value = token.value
13661368 call add (node.rlist, varnode)
@@ -1381,7 +1383,6 @@ function! s:VimLParser.parse_cmd_function()
13811383 throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
13821384 endif
13831385 elseif token.type == s: TOKEN_DOTDOTDOT
1384- let varnode = s: Node (s: NODE_IDENTIFIER )
13851386 let varnode.pos = token.pos
13861387 let varnode.value = token.value
13871388 call add (node.rlist, varnode)
@@ -2770,6 +2771,7 @@ function! s:ExprTokenizer.get2()
27702771 " @<EOL> is treated as @"
27712772 return self .token (s: TOKEN_REG , r .getn (2 ), pos)
27722773 elseif c == # ' &'
2774+ let s = ' '
27732775 if (r .p (1 ) == # ' g' || r .p (1 ) == # ' l' ) && r .p (2 ) == # ' :'
27742776 let s = r .getn (3 ) . r .read_word ()
27752777 else
@@ -3256,6 +3258,7 @@ function! s:ExprParser.parse_expr8()
32563258 if token.type != s: TOKEN_SQCLOSE
32573259 throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
32583260 endif
3261+ let left = node
32593262 else
32603263 let right = self .parse_expr1 ()
32613264 if self .tokenizer.peek ().type == s: TOKEN_COLON
@@ -3272,6 +3275,7 @@ function! s:ExprParser.parse_expr8()
32723275 if token.type != s: TOKEN_SQCLOSE
32733276 throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
32743277 endif
3278+ let left = node
32753279 else
32763280 let node = s: Node (s: NODE_SUBSCRIPT )
32773281 let node.pos = npos
@@ -3281,9 +3285,9 @@ function! s:ExprParser.parse_expr8()
32813285 if token.type != s: TOKEN_SQCLOSE
32823286 throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
32833287 endif
3288+ let left = node
32843289 endif
32853290 endif
3286- let left = node
32873291 unlet node
32883292 elseif token.type == s: TOKEN_POPEN
32893293 let node = s: Node (s: NODE_CALL )
@@ -3348,6 +3352,7 @@ endfunction
33483352function ! s: ExprParser .parse_expr9 ()
33493353 let pos = self .reader.tell ()
33503354 let token = self .tokenizer.get ()
3355+ let node = s: Node (-1 )
33513356 if token.type == s: TOKEN_NUMBER
33523357 let node = s: Node (s: NODE_NUMBER )
33533358 let node.pos = token.pos
@@ -3574,12 +3579,13 @@ function! s:ExprParser.parse_identifier()
35743579 let node = s: Node (s: NODE_IDENTIFIER )
35753580 let node.pos = npos
35763581 let node.value = curly_parts[0 ].value
3582+ return node
35773583 else
35783584 let node = s: Node (s: NODE_CURLYNAME )
35793585 let node.pos = npos
35803586 let node.value = curly_parts
3581- endif
35823587 return node
3588+ endif
35833589endfunction
35843590
35853591function ! s: ExprParser .parse_curly_parts ()
@@ -3642,6 +3648,7 @@ function! s:LvalueParser.parse_lv8()
36423648 let token = self .tokenizer.get ()
36433649 if ! s: iswhite (c ) && token.type == s: TOKEN_SQOPEN
36443650 let npos = token.pos
3651+ let node = s: Node (-1 )
36453652 if self .tokenizer.peek ().type == s: TOKEN_COLON
36463653 call self .tokenizer.get ()
36473654 let node = s: Node (s: NODE_SLICE )
@@ -3709,6 +3716,7 @@ endfunction
37093716function ! s: LvalueParser .parse_lv9 ()
37103717 let pos = self .reader.tell ()
37113718 let token = self .tokenizer.get ()
3719+ let node = s: Node (-1 )
37123720 if token.type == s: TOKEN_COPEN
37133721 call self .reader.seek_set (pos)
37143722 let node = self .parse_identifier ()
@@ -4232,6 +4240,7 @@ function! s:Compiler.compile_excall(node)
42324240endfunction
42334241
42344242function ! s: Compiler .compile_let (node)
4243+ let left = ' '
42354244 if a: node .left isnot s: NIL
42364245 let left = self .compile (a: node .left )
42374246 else
@@ -4299,6 +4308,7 @@ function! s:Compiler.compile_while(node)
42994308endfunction
43004309
43014310function ! s: Compiler .compile_for (node)
4311+ let left = ' '
43024312 if a: node .left isnot s: NIL
43034313 let left = self .compile (a: node .left )
43044314 else
0 commit comments