Skip to content

Commit 75b8305

Browse files
Add Vim9Script support
Parse core Vim9Script constructs into proper AST nodes so that downstream tools can analyze Vim9Script code without errors. New node types: NODE_VIM9SCRIPT, NODE_DEF, NODE_ENDDEF, NODE_VAR, NODE_FINAL, NODE_EXPORT, NODE_IMPORT. Parsers for vim9script, def/enddef (with typed parameters, return types, default values, variadics), var/final (with type annotations), export (wrapping inner commands), and import. The # comment syntax is supported when vim9script mode is active. Also fix JS transpiler heuristic for subscript assignments in compile_let to check for [ in addition to . when deciding whether to add var prefix. Fixes #194
1 parent 4495d39 commit 75b8305

12 files changed

Lines changed: 1582 additions & 27 deletions

autoload/vimlparser.vim

Lines changed: 535 additions & 10 deletions
Large diffs are not rendered by default.

js/jscompiler.vim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ function s:JavascriptCompiler.compile_let(node)
352352
call self.out('%s.prototype.%s %s %s;', klass, name, op, right)
353353
return
354354
endif
355-
if left =~ '\.' || op != '='
355+
if left =~ '[\.\[]' || op != '='
356356
call self.out('%s %s %s;', left, op, right)
357357
else
358358
call self.out('var %s %s %s;', left, op, right)

0 commit comments

Comments
 (0)