fix: specifier and virtual do not strictly require each other

pull/708/head
Amaan Qureshi 2024-04-11 06:49:07 +07:00
parent f79b9d9859
commit aa79a170c6
2 changed files with 16 additions and 2 deletions

@ -275,8 +275,8 @@ module.exports = grammar(C, {
repeat($.attribute_declaration),
optional(choice(
$.access_specifier,
seq($.access_specifier, $.virtual),
seq($.virtual, $.access_specifier),
seq($.access_specifier, optional($.virtual)),
seq($.virtual, optional($.access_specifier)),
)),
$._class_name,
optional('...'),

@ -563,6 +563,8 @@ class C : C::D, public E {};
class F : [[deprecated]] public G {};
class H : public virtual I {};
class J : virtual protected I {};
class K : virtual I {};
class L : protected I {};
--------------------------------------------------------------------------------
@ -604,6 +606,18 @@ class J : virtual protected I {};
(virtual)
(access_specifier)
(type_identifier))
(field_declaration_list))
(class_specifier
(type_identifier)
(base_class_clause
(virtual)
(type_identifier))
(field_declaration_list))
(class_specifier
(type_identifier)
(base_class_clause
(access_specifier)
(type_identifier))
(field_declaration_list)))
================================================================================