File tree 3 files changed +15
-6
lines changed
3 files changed +15
-6
lines changed Original file line number Diff line number Diff line change @@ -3244,6 +3244,8 @@ function! s:ExprParser.parse_expr9()
3244
3244
let token2 = self .tokenizer.peek ()
3245
3245
let lambda = token2.type == s: TOKEN_ARROW || token2.type == s: TOKEN_COMMA
3246
3246
endif
3247
+ " fallback to dict or {expr} if true
3248
+ let fallback = 0
3247
3249
if lambda
3248
3250
" lambda {token,...} {->...} {token->...}
3249
3251
let node = s: Node (s: NODE_LAMBDA )
@@ -3294,16 +3296,19 @@ function! s:ExprParser.parse_expr9()
3294
3296
throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
3295
3297
endif
3296
3298
else
3297
- throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
3299
+ let fallback = 1
3300
+ break
3298
3301
endif
3299
3302
let token = self .tokenizer.get ()
3300
3303
endwhile
3301
- let node.left = self .parse_expr1 ()
3302
- let token = self .tokenizer.get ()
3303
- if token.type != s: TOKEN_CCLOSE
3304
- throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
3304
+ if ! fallback
3305
+ let node.left = self .parse_expr1 ()
3306
+ let token = self .tokenizer.get ()
3307
+ if token.type != s: TOKEN_CCLOSE
3308
+ throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
3309
+ endif
3310
+ return node
3305
3311
endif
3306
- return node
3307
3312
endif
3308
3313
" dict
3309
3314
let node = s: Node (s: NODE_DICT )
Original file line number Diff line number Diff line change 7
7
(echo (dict ("vim" 1)))
8
8
(echo (dict ((+ 1 1) 2)))
9
9
; XXX: echo {x:1}
10
+ (echo (dict ('x' (dict))))
11
+ (echo (list (dict)))
Original file line number Diff line number Diff line change @@ -7,3 +7,5 @@ echo {"\<cr>": 1}
7
7
echo {" vim" : 1 }
8
8
echo {1 + 1 :2 }
9
9
" XXX: echo {x:1}
10
+ echo {' x' : {},}
11
+ echo [{},]
You can’t perform that action at this time.
0 commit comments