@@ -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 )
@@ -802,6 +801,7 @@ endfunction
802801
803802function ! s: VimLParser .find_command ()
804803 let c = self .reader.peekn (1 )
804+ let name = ' '
805805
806806 if c == # ' k'
807807 call self .reader.getn (1 )
@@ -989,6 +989,7 @@ endfunction
989989
990990" TODO:
991991function ! s: VimLParser .parse_cmd_common ()
992+ let end = self .reader.getpos ()
992993 if self .ea .cmd.flags = ~# ' \<TRLBAR\>' && ! self .ea .usefilter
993994 let end = self .separate_nextcmd ()
994995 elseif self .ea .cmd.name == # ' !' || self .ea .cmd.name == # ' global' || self .ea .cmd.name == # ' vglobal' || self .ea .usefilter
@@ -1134,6 +1135,7 @@ function! s:VimLParser.parse_cmd_loadkeymap()
11341135endfunction
11351136
11361137function ! s: VimLParser .parse_cmd_lua ()
1138+ let lines = []
11371139 call self .reader.skip_white ()
11381140 if self .reader.peekn (2 ) == # ' <<'
11391141 call self .reader.getn (2 )
@@ -1254,6 +1256,7 @@ function! s:VimLParser.parse_cmd_function()
12541256 else
12551257 let named = {}
12561258 while s: TRUE
1259+ let varnode = s: Node (s: NODE_IDENTIFIER )
12571260 let token = tokenizer.get ()
12581261 if token.type == s: TOKEN_IDENTIFIER
12591262 if ! s: isargname (token.value) || token.value == # ' firstline' || token.value == # ' lastline'
@@ -1262,7 +1265,6 @@ function! s:VimLParser.parse_cmd_function()
12621265 throw s: Err (printf (' E853: Duplicate argument name: %s' , token.value), token.pos)
12631266 endif
12641267 let named[token.value] = 1
1265- let varnode = s: Node (s: NODE_IDENTIFIER )
12661268 let varnode.pos = token.pos
12671269 let varnode.value = token.value
12681270 call add (node.rlist, varnode)
@@ -1283,7 +1285,6 @@ function! s:VimLParser.parse_cmd_function()
12831285 throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
12841286 endif
12851287 elseif token.type == s: TOKEN_DOTDOTDOT
1286- let varnode = s: Node (s: NODE_IDENTIFIER )
12871288 let varnode.pos = token.pos
12881289 let varnode.value = token.value
12891290 call add (node.rlist, varnode)
@@ -2672,6 +2673,7 @@ function! s:ExprTokenizer.get2()
26722673 " @<EOL> is treated as @"
26732674 return self .token (s: TOKEN_REG , r .getn (2 ), pos)
26742675 elseif c == # ' &'
2676+ let s = ' '
26752677 if (r .p (1 ) == # ' g' || r .p (1 ) == # ' l' ) && r .p (2 ) == # ' :'
26762678 let s = r .getn (3 ) . r .read_word ()
26772679 else
@@ -3158,6 +3160,7 @@ function! s:ExprParser.parse_expr8()
31583160 if token.type != s: TOKEN_SQCLOSE
31593161 throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
31603162 endif
3163+ let left = node
31613164 else
31623165 let right = self .parse_expr1 ()
31633166 if self .tokenizer.peek ().type == s: TOKEN_COLON
@@ -3174,6 +3177,7 @@ function! s:ExprParser.parse_expr8()
31743177 if token.type != s: TOKEN_SQCLOSE
31753178 throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
31763179 endif
3180+ let left = node
31773181 else
31783182 let node = s: Node (s: NODE_SUBSCRIPT )
31793183 let node.pos = npos
@@ -3183,9 +3187,9 @@ function! s:ExprParser.parse_expr8()
31833187 if token.type != s: TOKEN_SQCLOSE
31843188 throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
31853189 endif
3190+ let left = node
31863191 endif
31873192 endif
3188- let left = node
31893193 unlet node
31903194 elseif token.type == s: TOKEN_POPEN
31913195 let node = s: Node (s: NODE_CALL )
@@ -3250,6 +3254,7 @@ endfunction
32503254function ! s: ExprParser .parse_expr9 ()
32513255 let pos = self .reader.tell ()
32523256 let token = self .tokenizer.get ()
3257+ let node = s: Node (-1 )
32533258 if token.type == s: TOKEN_NUMBER
32543259 let node = s: Node (s: NODE_NUMBER )
32553260 let node.pos = token.pos
@@ -3476,12 +3481,13 @@ function! s:ExprParser.parse_identifier()
34763481 let node = s: Node (s: NODE_IDENTIFIER )
34773482 let node.pos = npos
34783483 let node.value = curly_parts[0 ].value
3484+ return node
34793485 else
34803486 let node = s: Node (s: NODE_CURLYNAME )
34813487 let node.pos = npos
34823488 let node.value = curly_parts
3483- endif
34843489 return node
3490+ endif
34853491endfunction
34863492
34873493function ! s: ExprParser .parse_curly_parts ()
@@ -3544,6 +3550,7 @@ function! s:LvalueParser.parse_lv8()
35443550 let token = self .tokenizer.get ()
35453551 if ! s: iswhite (c ) && token.type == s: TOKEN_SQOPEN
35463552 let npos = token.pos
3553+ let node = s: Node (-1 )
35473554 if self .tokenizer.peek ().type == s: TOKEN_COLON
35483555 call self .tokenizer.get ()
35493556 let node = s: Node (s: NODE_SLICE )
@@ -3611,6 +3618,7 @@ endfunction
36113618function ! s: LvalueParser .parse_lv9 ()
36123619 let pos = self .reader.tell ()
36133620 let token = self .tokenizer.get ()
3621+ let node = s: Node (-1 )
36143622 if token.type == s: TOKEN_COPEN
36153623 call self .reader.seek_set (pos)
36163624 let node = self .parse_identifier ()
@@ -4134,6 +4142,7 @@ function! s:Compiler.compile_excall(node)
41344142endfunction
41354143
41364144function ! s: Compiler .compile_let (node)
4145+ let left = ' '
41374146 if a: node .left isnot s: NIL
41384147 let left = self .compile (a: node .left )
41394148 else
@@ -4201,6 +4210,7 @@ function! s:Compiler.compile_while(node)
42014210endfunction
42024211
42034212function ! s: Compiler .compile_for (node)
4213+ let left = ' '
42044214 if a: node .left isnot s: NIL
42054215 let left = self .compile (a: node .left )
42064216 else
0 commit comments