@@ -530,11 +530,10 @@ function! s:VimLParser.parse_command_modifiers()
530
530
let modifiers = []
531
531
while s: TRUE
532
532
let pos = self .reader.tell ()
533
+ let d = ' '
533
534
if s: isdigit (self .reader.peekn (1 ))
534
535
let d = self .reader.read_digit ()
535
536
call self .reader.skip_white ()
536
- else
537
- let d = ' '
538
537
endif
539
538
let k = self .reader.read_alpha ()
540
539
let c = self .reader.peekn (1 )
@@ -900,6 +899,7 @@ endfunction
900
899
901
900
function ! s: VimLParser .find_command ()
902
901
let c = self .reader.peekn (1 )
902
+ let name = ' '
903
903
904
904
if c == # ' k'
905
905
call self .reader.getn (1 )
@@ -1087,6 +1087,7 @@ endfunction
1087
1087
1088
1088
" TODO:
1089
1089
function ! s: VimLParser .parse_cmd_common ()
1090
+ let end = self .reader.getpos ()
1090
1091
if self .ea .cmd.flags = ~# ' \<TRLBAR\>' && ! self .ea .usefilter
1091
1092
let end = self .separate_nextcmd ()
1092
1093
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()
1232
1233
endfunction
1233
1234
1234
1235
function ! s: VimLParser .parse_cmd_lua ()
1236
+ let lines = []
1235
1237
call self .reader.skip_white ()
1236
1238
if self .reader.peekn (2 ) == # ' <<'
1237
1239
call self .reader.getn (2 )
@@ -1352,6 +1354,7 @@ function! s:VimLParser.parse_cmd_function()
1352
1354
else
1353
1355
let named = {}
1354
1356
while s: TRUE
1357
+ let varnode = s: Node (s: NODE_IDENTIFIER )
1355
1358
let token = tokenizer.get ()
1356
1359
if token.type == s: TOKEN_IDENTIFIER
1357
1360
if ! s: isargname (token.value) || token.value == # ' firstline' || token.value == # ' lastline'
@@ -1360,7 +1363,6 @@ function! s:VimLParser.parse_cmd_function()
1360
1363
throw s: Err (printf (' E853: Duplicate argument name: %s' , token.value), token.pos)
1361
1364
endif
1362
1365
let named[token.value] = 1
1363
- let varnode = s: Node (s: NODE_IDENTIFIER )
1364
1366
let varnode.pos = token.pos
1365
1367
let varnode.value = token.value
1366
1368
call add (node.rlist, varnode)
@@ -1381,7 +1383,6 @@ function! s:VimLParser.parse_cmd_function()
1381
1383
throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
1382
1384
endif
1383
1385
elseif token.type == s: TOKEN_DOTDOTDOT
1384
- let varnode = s: Node (s: NODE_IDENTIFIER )
1385
1386
let varnode.pos = token.pos
1386
1387
let varnode.value = token.value
1387
1388
call add (node.rlist, varnode)
@@ -2770,6 +2771,7 @@ function! s:ExprTokenizer.get2()
2770
2771
" @<EOL> is treated as @"
2771
2772
return self .token (s: TOKEN_REG , r .getn (2 ), pos)
2772
2773
elseif c == # ' &'
2774
+ let s = ' '
2773
2775
if (r .p (1 ) == # ' g' || r .p (1 ) == # ' l' ) && r .p (2 ) == # ' :'
2774
2776
let s = r .getn (3 ) . r .read_word ()
2775
2777
else
@@ -3256,6 +3258,7 @@ function! s:ExprParser.parse_expr8()
3256
3258
if token.type != s: TOKEN_SQCLOSE
3257
3259
throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
3258
3260
endif
3261
+ let left = node
3259
3262
else
3260
3263
let right = self .parse_expr1 ()
3261
3264
if self .tokenizer.peek ().type == s: TOKEN_COLON
@@ -3272,6 +3275,7 @@ function! s:ExprParser.parse_expr8()
3272
3275
if token.type != s: TOKEN_SQCLOSE
3273
3276
throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
3274
3277
endif
3278
+ let left = node
3275
3279
else
3276
3280
let node = s: Node (s: NODE_SUBSCRIPT )
3277
3281
let node.pos = npos
@@ -3281,9 +3285,9 @@ function! s:ExprParser.parse_expr8()
3281
3285
if token.type != s: TOKEN_SQCLOSE
3282
3286
throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
3283
3287
endif
3288
+ let left = node
3284
3289
endif
3285
3290
endif
3286
- let left = node
3287
3291
unlet node
3288
3292
elseif token.type == s: TOKEN_POPEN
3289
3293
let node = s: Node (s: NODE_CALL )
@@ -3348,6 +3352,7 @@ endfunction
3348
3352
function ! s: ExprParser .parse_expr9 ()
3349
3353
let pos = self .reader.tell ()
3350
3354
let token = self .tokenizer.get ()
3355
+ let node = s: Node (-1 )
3351
3356
if token.type == s: TOKEN_NUMBER
3352
3357
let node = s: Node (s: NODE_NUMBER )
3353
3358
let node.pos = token.pos
@@ -3574,12 +3579,13 @@ function! s:ExprParser.parse_identifier()
3574
3579
let node = s: Node (s: NODE_IDENTIFIER )
3575
3580
let node.pos = npos
3576
3581
let node.value = curly_parts[0 ].value
3582
+ return node
3577
3583
else
3578
3584
let node = s: Node (s: NODE_CURLYNAME )
3579
3585
let node.pos = npos
3580
3586
let node.value = curly_parts
3581
- endif
3582
3587
return node
3588
+ endif
3583
3589
endfunction
3584
3590
3585
3591
function ! s: ExprParser .parse_curly_parts ()
@@ -3642,6 +3648,7 @@ function! s:LvalueParser.parse_lv8()
3642
3648
let token = self .tokenizer.get ()
3643
3649
if ! s: iswhite (c ) && token.type == s: TOKEN_SQOPEN
3644
3650
let npos = token.pos
3651
+ let node = s: Node (-1 )
3645
3652
if self .tokenizer.peek ().type == s: TOKEN_COLON
3646
3653
call self .tokenizer.get ()
3647
3654
let node = s: Node (s: NODE_SLICE )
@@ -3709,6 +3716,7 @@ endfunction
3709
3716
function ! s: LvalueParser .parse_lv9 ()
3710
3717
let pos = self .reader.tell ()
3711
3718
let token = self .tokenizer.get ()
3719
+ let node = s: Node (-1 )
3712
3720
if token.type == s: TOKEN_COPEN
3713
3721
call self .reader.seek_set (pos)
3714
3722
let node = self .parse_identifier ()
@@ -4232,6 +4240,7 @@ function! s:Compiler.compile_excall(node)
4232
4240
endfunction
4233
4241
4234
4242
function ! s: Compiler .compile_let (node)
4243
+ let left = ' '
4235
4244
if a: node .left isnot s: NIL
4236
4245
let left = self .compile (a: node .left )
4237
4246
else
@@ -4299,6 +4308,7 @@ function! s:Compiler.compile_while(node)
4299
4308
endfunction
4300
4309
4301
4310
function ! s: Compiler .compile_for (node)
4311
+ let left = ' '
4302
4312
if a: node .left isnot s: NIL
4303
4313
let left = self .compile (a: node .left )
4304
4314
else
0 commit comments