From c866a56f078a5f6151d67670a04eab9475a0be49 Mon Sep 17 00:00:00 2001 From: Ali Mohammad Pur Date: Wed, 28 Jul 2021 05:05:58 +0430 Subject: [PATCH] LibCpp: Match and ignore struct/class inheritance --- Userland/Libraries/LibCpp/Parser.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Userland/Libraries/LibCpp/Parser.cpp b/Userland/Libraries/LibCpp/Parser.cpp index c18f1154d0..fd3eba2600 100644 --- a/Userland/Libraries/LibCpp/Parser.cpp +++ b/Userland/Libraries/LibCpp/Parser.cpp @@ -695,6 +695,19 @@ bool Parser::match_class_declaration() consume(Token::Type::Identifier); + if (peek().type() == Token::Type::Colon) { + do { + consume(); + + while (match_keyword("private") || match_keyword("public") || match_keyword("protected") || match_keyword("virtual")) + consume(); + + if (!match_name()) + return false; + parse_name(get_dummy_node()); + } while (peek().type() == Token::Type::Comma); + } + return match(Token::Type::LeftCurly); } @@ -1137,6 +1150,18 @@ NonnullRefPtr Parser::parse_class_declaration(ASTNode& auto name_token = consume(Token::Type::Identifier); decl->set_name(text_of_token(name_token)); + // FIXME: Don't ignore this. + if (peek().type() == Token::Type::Colon) { + do { + consume(); + + while (match_keyword("private") || match_keyword("public") || match_keyword("protected") || match_keyword("virtual")) + consume(); + + parse_name(get_dummy_node()); + } while (peek().type() == Token::Type::Comma); + } + consume(Token::Type::LeftCurly); while (!eof() && peek().type() != Token::Type::RightCurly) {