diff options
| author | Yong He <yonghe@outlook.com> | 2024-02-06 16:30:31 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-06 16:30:31 -0800 |
| commit | ab41d548db376c6b52869004d1b6e21b88b4c9c8 (patch) | |
| tree | 61aacddad8b8c56d77cf63ab3b650fdb28bbe0e6 /source/slang/slang-syntax.cpp | |
| parent | 6365e00179179f2bc0bc25af3d51d528501498d5 (diff) | |
Improve Capability System (#3555)
* Improve capability system.
* Update documentation.
* Tuning semantics.
* LSP: hierarchical diagnostics.
* Fix test.
* Fix test.
Diffstat (limited to 'source/slang/slang-syntax.cpp')
| -rw-r--r-- | source/slang/slang-syntax.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/source/slang/slang-syntax.cpp b/source/slang/slang-syntax.cpp index ab0dfcd74..b6fd8936e 100644 --- a/source/slang/slang-syntax.cpp +++ b/source/slang/slang-syntax.cpp @@ -17,7 +17,10 @@ void printDiagnosticArg(StringBuilder& sb, Decl* decl) { if (!decl) return; - sb << getText(decl->getName()); + if (decl->getName() && decl->getName()->text.getLength()) + sb << getText(decl->getName()); + else + printDiagnosticArg(sb, decl->astNodeType); } void printDiagnosticArg(StringBuilder& sb, DeclRefBase* declRefBase) @@ -92,6 +95,7 @@ void printDiagnosticArg(StringBuilder& sb, ASTNodeType nodeType) case ASTNodeType::EmptyDecl: sb << "empty"; break; case ASTNodeType::SyntaxDecl: sb << "syntax"; break; case ASTNodeType::DeclGroup: sb << "decl-group"; break; + case ASTNodeType::RequireCapabilityDecl: sb << "__require_capability"; break; default: sb << "decl"; break; } } @@ -862,6 +866,18 @@ Decl* getParentDecl(Decl* decl) return decl; } +Decl* getParentAggTypeDecl(Decl* decl) +{ + decl = decl->parentDecl; + while (decl) + { + if (as<AggTypeDecl>(decl)) + return decl; + decl = decl->parentDecl; + } + return nullptr; +} + Decl* getParentFunc(Decl* decl) { while (decl) |
