Skip to content

Commit 3767a81

Browse files
committed
parse_dict_literal_key: use getpos for pos
Fixes #155.
1 parent 9cc29ee commit 3767a81

File tree

1 file changed

+7
-12
lines changed

1 file changed

+7
-12
lines changed

autoload/vimlparser.vim

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3481,15 +3481,16 @@ function! s:ExprTokenizer.get_dstring() abort
34813481
return s
34823482
endfunction
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
35053507
endfunction
35063508

35073509
let 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
42114213
endfunction
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

Comments
 (0)