diff options
| author | Yong He <yonghe@outlook.com> | 2025-02-06 22:02:43 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-06 22:02:43 -0800 |
| commit | bae87afb20f95f9f27c64c4955bbc4464c576509 (patch) | |
| tree | 44d079bd76002d69be20efdbd03ac6ff62ef8caf /source/slang/slang-parser.cpp | |
| parent | 075b10e69055acc6536d74c1cb3399e0fe75338d (diff) | |
Support stage_switch. (#6311)
* Support stage_switch.
* Update proposal status.
* Fix gl_InstanceID.
* Fix.
Diffstat (limited to 'source/slang/slang-parser.cpp')
| -rw-r--r-- | source/slang/slang-parser.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/source/slang/slang-parser.cpp b/source/slang/slang-parser.cpp index 95eb971ee..38285c41f 100644 --- a/source/slang/slang-parser.cpp +++ b/source/slang/slang-parser.cpp @@ -5380,9 +5380,8 @@ static Stmt* ParseDefaultStmt(Parser* parser) return stmt; } -static Stmt* parseTargetSwitchStmt(Parser* parser) +static Stmt* parseTargetSwitchStmtImpl(Parser* parser, TargetSwitchStmt* stmt) { - TargetSwitchStmt* stmt = parser->astBuilder->create<TargetSwitchStmt>(); parser->FillPosition(stmt); parser->ReadToken(); if (!beginMatch(parser, MatchedTokenType::CurlyBraces)) @@ -5479,6 +5478,18 @@ static Stmt* parseTargetSwitchStmt(Parser* parser) return stmt; } +static Stmt* parseTargetSwitchStmt(Parser* parser) +{ + auto stmt = parser->astBuilder->create<TargetSwitchStmt>(); + return parseTargetSwitchStmtImpl(parser, stmt); +} + +static Stmt* parseStageSwitchStmt(Parser* parser) +{ + auto stmt = parser->astBuilder->create<StageSwitchStmt>(); + return parseTargetSwitchStmtImpl(parser, stmt); +} + static Stmt* parseIntrinsicAsmStmt(Parser* parser) { IntrinsicAsmStmt* stmt = parser->astBuilder->create<IntrinsicAsmStmt>(); @@ -5725,6 +5736,8 @@ Stmt* Parser::ParseStatement(Stmt* parentStmt) statement = ParseSwitchStmt(this); else if (LookAheadToken("__target_switch")) statement = parseTargetSwitchStmt(this); + else if (LookAheadToken("__stage_switch")) + statement = parseStageSwitchStmt(this); else if (LookAheadToken("__intrinsic_asm")) statement = parseIntrinsicAsmStmt(this); else if (LookAheadToken("case")) |
