diff options
Diffstat (limited to 'source/slang/slang-parser.cpp')
| -rw-r--r-- | source/slang/slang-parser.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/source/slang/slang-parser.cpp b/source/slang/slang-parser.cpp index f6d85ade9..ee34eac6f 100644 --- a/source/slang/slang-parser.cpp +++ b/source/slang/slang-parser.cpp @@ -2056,6 +2056,25 @@ namespace Slang { return parseTaggedUnionType(parser); } + /// Parse an expression of the form __jvp(fn) where fn is an + /// identifier pointing to a function. + static Expr* parseJVPDerivativeOf(Parser* parser) + { + JVPDerivativeOfExpr* jvpExpr = parser->astBuilder->create<JVPDerivativeOfExpr>(); + + parser->ReadToken(TokenType::LParent); + + jvpExpr->baseFn = parser->ParseExpression(); + + parser->ReadToken(TokenType::RParent); + + return jvpExpr; + } + + static NodeBase* parseJVPDerivativeOf(Parser* parser, void* /* unused */) + { + return parseJVPDerivativeOf(parser); + } /// Parse a `This` type expression static Expr* parseThisTypeExpr(Parser* parser) @@ -6473,6 +6492,7 @@ namespace Slang _makeParseExpr("nullptr", parseNullPtrExpr), _makeParseExpr("try", parseTryExpr), _makeParseExpr("__TaggedUnion", parseTaggedUnionType), + _makeParseExpr("__jvp", parseJVPDerivativeOf) }; ConstArrayView<SyntaxParseInfo> getSyntaxParseInfos() |
