File tree Expand file tree Collapse file tree 3 files changed +15
-6
lines changed Expand file tree Collapse file tree 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()
32443244 let token2 = self .tokenizer.peek ()
32453245 let lambda = token2.type == s: TOKEN_ARROW || token2.type == s: TOKEN_COMMA
32463246 endif
3247+ " fallback to dict or {expr} if true
3248+ let fallback = 0
32473249 if lambda
32483250 " lambda {token,...} {->...} {token->...}
32493251 let node = s: Node (s: NODE_LAMBDA )
@@ -3294,16 +3296,19 @@ function! s:ExprParser.parse_expr9()
32943296 throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
32953297 endif
32963298 else
3297- throw s: Err (printf (' unexpected token: %s' , token.value), token.pos)
3299+ let fallback = 1
3300+ break
32983301 endif
32993302 let token = self .tokenizer.get ()
33003303 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
33053311 endif
3306- return node
33073312 endif
33083313 " dict
33093314 let node = s: Node (s: NODE_DICT )
Original file line number Diff line number Diff line change 77(echo (dict ("vim" 1)))
88(echo (dict ((+ 1 1) 2)))
99; 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}
77echo {" vim" : 1 }
88echo {1 + 1 :2 }
99" XXX: echo {x:1}
10+ echo {' x' : {},}
11+ echo [{},]
You can’t perform that action at this time.
0 commit comments