From 92fda59cbcfe37c302e3c4babe56aada68228b54 Mon Sep 17 00:00:00 2001 From: Dappster <87837549+Dappstr@users.noreply.github.com> Date: Sun, 14 Jun 2026 05:14:13 -0700 Subject: [PATCH 1/2] Add support for C++23 feature if consteval --- grammar.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/grammar.js b/grammar.js index ffbaf0f..28d3e40 100644 --- a/grammar.js +++ b/grammar.js @@ -930,12 +930,20 @@ module.exports = grammar(C, { if_statement: $ => prec.right(seq( 'if', - optional('constexpr'), - field('condition', $.condition_clause), - field('consequence', $.statement), - optional(field('alternative', $.else_clause)), - )), - + choice( + seq( + optional('constexpr'), + field('condition', $.condition_clause), + field('consequence', $.statement), + ), + seq( + optional('!'), + 'consteval', + field('consequence', $.compound_statement), + ), + ), + optional(field('alternative', $.else_clause)), +)), // Using prec(1) instead of prec.dynamic(1) causes issues with the // range loop's declaration specifiers if `int` is passed in, it'll // always prefer the standard for loop and give us a parse error. From a780097c5c10f513057df0b8802583324c6eb0c0 Mon Sep 17 00:00:00 2001 From: Dappster <87837549+Dappstr@users.noreply.github.com> Date: Wed, 8 Jul 2026 15:03:40 -0700 Subject: [PATCH 2/2] Add support for leading attribute for friend method declaration. --- grammar.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/grammar.js b/grammar.js index 28d3e40..8f6d1ce 100644 --- a/grammar.js +++ b/grammar.js @@ -103,6 +103,7 @@ module.exports = grammar(C, { [$.field_expression, $.template_method, $.template_type], [$.field_expression, $.template_method], [$.qualified_field_identifier, $.template_method, $.template_type], + [$._declaration_modifiers, $.friend_declaration], [$.type_specifier, $.template_type, $.template_function, $.expression], [$.splice_type_specifier, $.splice_expression], ], @@ -655,6 +656,7 @@ module.exports = grammar(C, { pure_virtual_clause: _ => seq('=', /0/, ';'), friend_declaration: $ => seq( + optional($.attribute_declaration), optional('constexpr'), 'friend', choice(