diff options
| author | Yong He <yonghe@outlook.com> | 2025-06-17 21:36:10 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-17 21:36:10 -0700 |
| commit | 4d517794eaac7dfe6196e9a36d709d66c5720492 (patch) | |
| tree | a7e65d8307b4e25f2a7bafcc9a2de1666c8b689e /source/slang/slang-parser.cpp | |
| parent | b9799e6137fb1d173cefd823521bb70b09ac435a (diff) | |
LanguageServer: Enhance auto completion for override. (#7465)
* Add additional completion keywords.
* LanguageServer: Enhance auto completion for `override`.
Diffstat (limited to 'source/slang/slang-parser.cpp')
| -rw-r--r-- | source/slang/slang-parser.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
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<Declarator> 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<OverrideModifier>()) + { + auto resultDecl = parser->astBuilder->create<EmptyDecl>(); + 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); |
