@@ -3481,15 +3481,16 @@ function! s:ExprTokenizer.get_dstring() abort
34813481 return s
34823482endfunction
34833483
3484- function ! s: ExprTokenizer .get_dict_literal_key () abort
3484+ function ! s: ExprTokenizer .parse_dict_literal_key () abort
34853485 call self .reader.skip_white ()
3486- let r = self .reader
3487- let c = r .peek ()
3486+ let c = self .reader.peek ()
34883487 if ! s: isalnum (c ) && c !=# ' _' && c !=# ' -'
34893488 throw s: Err (printf (' unexpected character: %s' , c ), self .reader.getpos ())
34903489 endif
3490+ let node = s: Node (s: NODE_STRING )
34913491 let s = c
34923492 call self .reader.seek_cur (1 )
3493+ let node.pos = self .reader.getpos ()
34933494 while s: TRUE
34943495 let c = self .reader.p (0 )
34953496 if c == # ' <EOF>' || c == # ' <EOL>'
@@ -3501,7 +3502,8 @@ function! s:ExprTokenizer.get_dict_literal_key() abort
35013502 call self .reader.seek_cur (1 )
35023503 let s .= c
35033504 endwhile
3504- return s
3505+ let node.value = " '" . s . " '"
3506+ return node
35053507endfunction
35063508
35073509let s: ExprParser = {}
@@ -4145,7 +4147,7 @@ function! s:ExprParser.parse_expr9() abort
41454147 return node
41464148 endif
41474149 while 1
4148- let key = is_litdict ? self .parse_dict_literal_key () : self .parse_expr1 ()
4150+ let key = is_litdict ? self .tokenizer. parse_dict_literal_key () : self .parse_expr1 ()
41494151 let token = self .tokenizer.get ()
41504152 if token.type == # s: TOKEN_CCLOSE
41514153 if ! empty (node.value)
@@ -4210,13 +4212,6 @@ function! s:ExprParser.parse_expr9() abort
42104212 return node
42114213endfunction
42124214
4213- function ! s: ExprParser .parse_dict_literal_key () abort
4214- let node = s: Node (s: NODE_STRING )
4215- let node.pos = self .reader.tell ()
4216- let node.value = " '" . self .tokenizer.get_dict_literal_key () . " '"
4217- return node
4218- endfunction
4219-
42204215" SUBSCRIPT or CONCAT
42214216" dict "." [0-9A-Za-z_]+ => (subscript dict key)
42224217" str "." expr6 => (concat str expr6)
0 commit comments