@@ -290,7 +290,7 @@ function s:JavascriptCompiler.compile_function(node)
290
290
unlet rlist[-1 ]
291
291
let va = 1
292
292
endif
293
- if left = ~ ' ^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)\.'
293
+ if left = ~ ' ^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\|Printer\ )\.'
294
294
let [_0, klass, name; _] = matchlist (left , ' ^\(.*\)\.\(.*\)$' )
295
295
if name == ' new'
296
296
return
@@ -344,10 +344,10 @@ function s:JavascriptCompiler.compile_let(node)
344
344
call self .out (' function LvalueParser() { ExprParser.apply(this, arguments); this.__init__.apply(this, arguments); }' )
345
345
call self .out (' LvalueParser.prototype = Object.create(ExprParser.prototype);' )
346
346
return
347
- elseif left = ~ ' ^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)$'
347
+ elseif left = ~ ' ^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\|Printer\ )$'
348
348
call self .out (' function %s() { this.__init__.apply(this, arguments); }' , left )
349
349
return
350
- elseif left = ~ ' ^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)\.'
350
+ elseif left = ~ ' ^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\|Printer\ )\.'
351
351
let [_0, klass, name; _] = matchlist (left , ' ^\(.*\)\.\(.*\)$' )
352
352
call self .out (' %s.prototype.%s %s %s;' , klass, name, op , right )
353
353
return
@@ -798,6 +798,10 @@ function s:JavascriptCompiler.compile_identifier(node)
798
798
let name = ' a000'
799
799
elseif name == ' v:val'
800
800
let name = ' vval'
801
+ elseif name == ' a:0'
802
+ let name = ' a000.length'
803
+ elseif name = ~ ' ^a:[1-9]$'
804
+ let name = ' a000[' . (str2nr (name[2 :]) - 1 ) . ' ]'
801
805
elseif name = ~ ' ^[sa]:'
802
806
let name = name[2 :]
803
807
elseif name == ' self'
@@ -859,7 +863,8 @@ function! s:convert(in, out) abort
859
863
\ ' module.exports = {' ,
860
864
\ ' VimLParser: VimLParser,' ,
861
865
\ ' StringReader: StringReader,' ,
862
- \ ' Compiler: Compiler' ,
866
+ \ ' Compiler: Compiler,' ,
867
+ \ ' Printer: Printer' ,
863
868
\ ' };' ,
864
869
\ ' }' ,
865
870
\ ]
0 commit comments