From 4d517794eaac7dfe6196e9a36d709d66c5720492 Mon Sep 17 00:00:00 2001 From: Yong He Date: Tue, 17 Jun 2025 21:36:10 -0700 Subject: LanguageServer: Enhance auto completion for override. (#7465) * Add additional completion keywords. * LanguageServer: Enhance auto completion for `override`. --- source/slang/slang-parser.cpp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'source/slang/slang-parser.cpp') diff --git a/source/slang/slang-parser.cpp b/source/slang/slang-parser.cpp index 9727140f3..a019f97c4 100644 --- a/source/slang/slang-parser.cpp +++ b/source/slang/slang-parser.cpp @@ -1443,8 +1443,7 @@ static NameLoc ParseDeclName(Parser* parser) } else { - nameToken = parser->ReadToken(TokenType::Identifier); - return NameLoc(nameToken); + return expectIdentifier(parser); } } @@ -2037,6 +2036,7 @@ static RefPtr parseDirectAbstractDeclarator( switch (parser->tokenReader.peekTokenType()) { case TokenType::Identifier: + case TokenType::CompletionRequest: { auto nameDeclarator = new NameDeclarator(); nameDeclarator->flavor = Declarator::Flavor::name; @@ -5048,6 +5048,20 @@ static DeclBase* ParseDeclWithModifiers( decl->loc = loc; } break; + case TokenType::CompletionRequest: + { + if (modifiers.hasModifier()) + { + auto resultDecl = parser->astBuilder->create(); + resultDecl->nameAndLoc = expectIdentifier(parser); + decl = resultDecl; + } + else + { + decl = ParseDeclaratorDecl(parser, containerDecl, modifiers); + } + } + break; // If nothing else matched, we try to parse an "ordinary" declarator-based declaration default: decl = ParseDeclaratorDecl(parser, containerDecl, modifiers); -- cgit v1.2.3