Kaynağa Gözat

LibCpp: Allow 'const' after a function's signature

This is too lax for functions that aren't class members, but let's
allow that anyway.
Ali Mohammad Pur 4 yıl önce
ebeveyn
işleme
b3cbe14569
1 değiştirilmiş dosya ile 8 ekleme ve 0 silme
  1. 8 0
      Userland/Libraries/LibCpp/Parser.cpp

+ 8 - 0
Userland/Libraries/LibCpp/Parser.cpp

@@ -132,6 +132,11 @@ NonnullRefPtr<FunctionDeclaration> Parser::parse_function_declaration(ASTNode& p
 
 
     consume(Token::Type::RightParen);
     consume(Token::Type::RightParen);
 
 
+    if (match_keyword("const")) {
+        consume();
+        // FIXME: Note that this function is supposed to be a class member, and `this` has to be const, somehow.
+    }
+
     RefPtr<FunctionDefinition> body;
     RefPtr<FunctionDefinition> body;
     Position func_end {};
     Position func_end {};
     if (peek(Token::Type::LeftCurly).has_value()) {
     if (peek(Token::Type::LeftCurly).has_value()) {
@@ -739,6 +744,9 @@ bool Parser::match_function_declaration()
 
 
     while (consume().type() != Token::Type::RightParen && !eof()) { };
     while (consume().type() != Token::Type::RightParen && !eof()) { };
 
 
+    if (match_keyword("const"))
+        consume();
+
     if (peek(Token::Type::Semicolon).has_value() || peek(Token::Type::LeftCurly).has_value())
     if (peek(Token::Type::Semicolon).has_value() || peek(Token::Type::LeftCurly).has_value())
         return true;
         return true;