From 26a0b3e04689fee1ec9ec071eacd72faf1efe4eb Mon Sep 17 00:00:00 2001 From: Yong He Date: Fri, 8 Sep 2023 15:57:00 -0700 Subject: Fix attribute highlighting + language server crash. (#3198) * Fix attribute highlighting + language server crash. * Fix wave intrinsic. * Fix. * Fix. --------- Co-authored-by: Yong He --- source/slang/slang-parser.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'source/slang/slang-parser.cpp') diff --git a/source/slang/slang-parser.cpp b/source/slang/slang-parser.cpp index 306d2cbec..e184585e3 100644 --- a/source/slang/slang-parser.cpp +++ b/source/slang/slang-parser.cpp @@ -878,7 +878,7 @@ namespace Slang // // '::'? identifier ('::' identifier)* - static Token parseAttributeName(Parser* parser) + static Token parseAttributeName(Parser* parser, Token& outOriginalLastToken) { const SourceLoc scopedIdSourceLoc = parser->tokenReader.peekLoc(); @@ -892,6 +892,7 @@ namespace Slang return parser->ReadToken(); const Token firstIdentifier = parser->ReadToken(TokenType::Identifier); + outOriginalLastToken = firstIdentifier; if (initialTokenType != TokenType::Scope && parser->tokenReader.peekTokenType() != TokenType::Scope) { return firstIdentifier; @@ -911,6 +912,7 @@ namespace Slang scopedIdentifierBuilder.append('_'); const Token nextIdentifier(parser->ReadToken(TokenType::Identifier)); + outOriginalLastToken = nextIdentifier; scopedIdentifierBuilder.append(nextIdentifier.getContent()); } @@ -946,12 +948,14 @@ namespace Slang // seems better to not complicate the parsing process any more. // - Token nameToken = parseAttributeName(parser); + Token originalLastToken; + Token nameToken = parseAttributeName(parser, originalLastToken); UncheckedAttribute* modifier = parser->astBuilder->create(); modifier->keywordName = nameToken.getName(); - modifier->loc = nameToken.getLoc(); + modifier->loc = originalLastToken.getLoc(); modifier->scope = parser->currentScope; + modifier->originalIdentifierToken = originalLastToken; if (AdvanceIf(parser, TokenType::LParent)) { -- cgit v1.2.3