Fix a case with an empty body with comment(s)

This commit is contained in:
Andrew Hlynskyi
2023-04-08 15:26:24 +03:00
committed by Michael Hoffmann
parent 9903dc0b57
commit 4e33af0710
2 changed files with 25 additions and 6 deletions

View File

@@ -37,7 +37,9 @@ module.exports = function make_grammar(dialect) {
// also allow objects to handle .tfvars in json format // also allow objects to handle .tfvars in json format
config_file: $ => optional(choice($.body, $.object)), config_file: $ => optional(choice($.body, $.object)),
body: $ => seq( body: $ => choice(
$._shim,
seq(
optional($._shim), optional($._shim),
repeat1( repeat1(
choice( choice(
@@ -46,6 +48,7 @@ module.exports = function make_grammar(dialect) {
), ),
), ),
), ),
),
attribute: $ => seq( attribute: $ => seq(
$.identifier, $.identifier,

View File

@@ -98,6 +98,8 @@ public:
return false; return false;
} }
if (valid_symbols[SHIM]) { if (valid_symbols[SHIM]) {
lexer->mark_end(lexer);
while(skip_comment(lexer));
if (lexer->lookahead != '}') { if (lexer->lookahead != '}') {
return accept_inplace(lexer, SHIM); return accept_inplace(lexer, SHIM);
} }
@@ -271,6 +273,20 @@ private:
return iswxdigit(lexer->lookahead); return iswxdigit(lexer->lookahead);
} }
bool skip_comment(TSLexer* lexer) {
while (iswspace(lexer->lookahead)) {
skip(lexer);
}
if (lexer->lookahead != '#') {
return false;
}
skip(lexer);
while (lexer->lookahead != '\n') {
skip(lexer);
}
return true;
}
bool in_context_type(ContextType type) { bool in_context_type(ContextType type) {
if (context_stack.empty()) { if (context_stack.empty()) {
return false; return false;