From 7f1df9d0b31413e59846cc955d2a955d3f361e2a Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 30 Apr 2025 14:17:45 -0700 Subject: Initial support for immutable lambda expressions. (#6914) * Initial support for immutable lambda expressions. * More diagnostics, and langauge server fix. * Language server fix. * Fix bug identified in review. * Add expected result. * Update expected result. --- source/slang/slang-ast-synthesis.cpp | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) (limited to 'source/slang/slang-ast-synthesis.cpp') diff --git a/source/slang/slang-ast-synthesis.cpp b/source/slang/slang-ast-synthesis.cpp index 58c68c369..c7291f526 100644 --- a/source/slang/slang-ast-synthesis.cpp +++ b/source/slang/slang-ast-synthesis.cpp @@ -50,6 +50,13 @@ ForStmt* ASTSynthesizer::emitFor(Expr* initVal, Expr* finalVal, VarDecl*& outInd return stmt; } +Expr* ASTSynthesizer::emitThisExpr() +{ + auto varExpr = m_builder->create(); + varExpr->scope = getCurrentScope().m_scope; + return varExpr; +} + Expr* ASTSynthesizer::emitVarExpr(Name* name) { auto scope = getCurrentScope(); @@ -60,7 +67,7 @@ Expr* ASTSynthesizer::emitVarExpr(Name* name) return varExpr; } -Expr* ASTSynthesizer::emitVarExpr(VarDecl* varDecl) +Expr* ASTSynthesizer::emitVarExpr(VarDeclBase* varDecl) { auto varExpr = m_builder->create(); varExpr->declRef = makeDeclRef(varDecl); @@ -68,7 +75,7 @@ Expr* ASTSynthesizer::emitVarExpr(VarDecl* varDecl) return varExpr; } -Expr* ASTSynthesizer::emitVarExpr(VarDecl* var, Type* type) +Expr* ASTSynthesizer::emitVarExpr(VarDeclBase* var, Type* type) { auto expr = m_builder->create(); expr->declRef = makeDeclRef(var); @@ -86,6 +93,14 @@ Expr* ASTSynthesizer::emitVarExpr(DeclStmt* varStmt, Type* type) return expr; } +Expr* ASTSynthesizer::emitStaticTypeExpr(Type* type) +{ + auto expr = m_builder->create(); + expr->type.type = m_builder->getTypeType(type); + expr->checked = true; + return expr; +} + Expr* ASTSynthesizer::emitIntConst(int value) { auto expr = m_builder->create(); @@ -126,6 +141,14 @@ Expr* ASTSynthesizer::emitInvokeExpr(Expr* callee, List&& args) return rs; } +Expr* ASTSynthesizer::emitCtorInvokeExpr(Expr* callee, List&& args) +{ + auto rs = m_builder->create(); + rs->functionExpr = callee; + rs->arguments = _Move(args); + return rs; +} + Expr* ASTSynthesizer::emitGenericAppExpr(Expr* genericExpr, List&& args) { auto rs = m_builder->create(); -- cgit v1.2.3