@@ -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 )
@@ -802,6 +801,7 @@ endfunction
802
801
803
802
function ! s: VimLParser .find_command ()
804
803
let c = self .reader.peekn (1 )
804
+ let name = ' '
805
805
806
806
if c == # ' k'
807
807
call self .reader.getn (1 )
@@ -989,6 +989,7 @@ endfunction
989
989
990
990
" TODO:
991
991
function ! s: VimLParser .parse_cmd_common ()
992
+ let end = self .reader.getpos ()
992
993
if self .ea .cmd.flags = ~# ' \<TRLBAR\>' && ! self .ea .usefilter
993
994
let end = self .separate_nextcmd ()
994
995
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()
1134
1135
endfunction
1135
1136
1136
1137
function ! s: VimLParser .parse_cmd_lua ()
1138
+ let lines = []
1137
1139
call self .reader.skip_white ()
1138
1140
if self .reader.peekn (2 ) == # ' <<'
1139
1141
call self .reader.getn (2 )
@@ -1254,6 +1256,7 @@ function! s:VimLParser.parse_cmd_function()
1254
1256
else
1255
1257
let named = {}
1256
1258
while s: TRUE
1259
+ let varnode = s: Node (s: NODE_IDENTIFIER )
1257
1260
let token = tokenizer.get ()
1258
1261
if token.type == s: TOKEN_IDENTIFIER
1259
1262
if ! s: isargname (token.value) || token.value == # ' firstline' || token.value == # ' lastline'
@@ -1262,7 +1265,6 @@ function! s:VimLParser.parse_cmd_function()
1262
1265
throw s: Err (printf (' E853: Duplicate argument name: %s' , token.value), token.pos)
1263
1266
endif
1264
1267
let named[token.value] = 1
1265
- let varnode = s: Node (s: NODE_IDENTIFIER )
1266
1268
let varnode.pos = token.pos
1267
1269
let varnode.value = token.value
1268
1270
call add (node.rlist, varnode)
@@ -1283,7 +1285,6 @@ function! s:VimLParser.parse_cmd_function()
1283
1285
throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
1284
1286
endif
1285
1287
elseif token.type == s: TOKEN_DOTDOTDOT
1286
- let varnode = s: Node (s: NODE_IDENTIFIER )
1287
1288
let varnode.pos = token.pos
1288
1289
let varnode.value = token.value
1289
1290
call add (node.rlist, varnode)
@@ -2672,6 +2673,7 @@ function! s:ExprTokenizer.get2()
2672
2673
" @<EOL> is treated as @"
2673
2674
return self .token (s: TOKEN_REG , r .getn (2 ), pos)
2674
2675
elseif c == # ' &'
2676
+ let s = ' '
2675
2677
if (r .p (1 ) == # ' g' || r .p (1 ) == # ' l' ) && r .p (2 ) == # ' :'
2676
2678
let s = r .getn (3 ) . r .read_word ()
2677
2679
else
@@ -3158,6 +3160,7 @@ function! s:ExprParser.parse_expr8()
3158
3160
if token.type != s: TOKEN_SQCLOSE
3159
3161
throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
3160
3162
endif
3163
+ let left = node
3161
3164
else
3162
3165
let right = self .parse_expr1 ()
3163
3166
if self .tokenizer.peek ().type == s: TOKEN_COLON
@@ -3174,6 +3177,7 @@ function! s:ExprParser.parse_expr8()
3174
3177
if token.type != s: TOKEN_SQCLOSE
3175
3178
throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
3176
3179
endif
3180
+ let left = node
3177
3181
else
3178
3182
let node = s: Node (s: NODE_SUBSCRIPT )
3179
3183
let node.pos = npos
@@ -3183,9 +3187,9 @@ function! s:ExprParser.parse_expr8()
3183
3187
if token.type != s: TOKEN_SQCLOSE
3184
3188
throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
3185
3189
endif
3190
+ let left = node
3186
3191
endif
3187
3192
endif
3188
- let left = node
3189
3193
unlet node
3190
3194
elseif token.type == s: TOKEN_POPEN
3191
3195
let node = s: Node (s: NODE_CALL )
@@ -3250,6 +3254,7 @@ endfunction
3250
3254
function ! s: ExprParser .parse_expr9 ()
3251
3255
let pos = self .reader.tell ()
3252
3256
let token = self .tokenizer.get ()
3257
+ let node = s: Node (-1 )
3253
3258
if token.type == s: TOKEN_NUMBER
3254
3259
let node = s: Node (s: NODE_NUMBER )
3255
3260
let node.pos = token.pos
@@ -3476,12 +3481,13 @@ function! s:ExprParser.parse_identifier()
3476
3481
let node = s: Node (s: NODE_IDENTIFIER )
3477
3482
let node.pos = npos
3478
3483
let node.value = curly_parts[0 ].value
3484
+ return node
3479
3485
else
3480
3486
let node = s: Node (s: NODE_CURLYNAME )
3481
3487
let node.pos = npos
3482
3488
let node.value = curly_parts
3483
- endif
3484
3489
return node
3490
+ endif
3485
3491
endfunction
3486
3492
3487
3493
function ! s: ExprParser .parse_curly_parts ()
@@ -3544,6 +3550,7 @@ function! s:LvalueParser.parse_lv8()
3544
3550
let token = self .tokenizer.get ()
3545
3551
if ! s: iswhite (c ) && token.type == s: TOKEN_SQOPEN
3546
3552
let npos = token.pos
3553
+ let node = s: Node (-1 )
3547
3554
if self .tokenizer.peek ().type == s: TOKEN_COLON
3548
3555
call self .tokenizer.get ()
3549
3556
let node = s: Node (s: NODE_SLICE )
@@ -3611,6 +3618,7 @@ endfunction
3611
3618
function ! s: LvalueParser .parse_lv9 ()
3612
3619
let pos = self .reader.tell ()
3613
3620
let token = self .tokenizer.get ()
3621
+ let node = s: Node (-1 )
3614
3622
if token.type == s: TOKEN_COPEN
3615
3623
call self .reader.seek_set (pos)
3616
3624
let node = self .parse_identifier ()
@@ -4134,6 +4142,7 @@ function! s:Compiler.compile_excall(node)
4134
4142
endfunction
4135
4143
4136
4144
function ! s: Compiler .compile_let (node)
4145
+ let left = ' '
4137
4146
if a: node .left isnot s: NIL
4138
4147
let left = self .compile (a: node .left )
4139
4148
else
@@ -4201,6 +4210,7 @@ function! s:Compiler.compile_while(node)
4201
4210
endfunction
4202
4211
4203
4212
function ! s: Compiler .compile_for (node)
4213
+ let left = ' '
4204
4214
if a: node .left isnot s: NIL
4205
4215
let left = self .compile (a: node .left )
4206
4216
else
0 commit comments