summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-check-expr.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2025-05-29 08:05:57 -0700
committerGitHub <noreply@github.com>2025-05-29 08:05:57 -0700
commitfaf042ecc3e688a1a3ffbe1ac44d18dd7ddf441a (patch)
treeb54abb2e65b7791d74335ead396cf762f805ab5c /source/slang/slang-check-expr.cpp
parent45d794f57d453a5564a7360400c5bfc04bf12b31 (diff)
Language version + tuple syntax. (#7230)
* Language version + tuple syntax. * Fix compile error. * regenerate documentation Table of Contents * Fix. * regenerate command line reference * Fix. * Fix. * Fix more test failures. * revert empty line change, * Retrigger CI * #version->#lang * Update source/core/slang-type-text-util.cpp Co-authored-by: ArielG-NV <159081215+ArielG-NV@users.noreply.github.com> * Remove comments. * Fix parsing logic. * Fix parser. * Fix parser. * update test comment * Update options. * regenerate documentation Table of Contents * regenerate command line reference --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com> Co-authored-by: ArielG-NV <159081215+ArielG-NV@users.noreply.github.com>
Diffstat (limited to 'source/slang/slang-check-expr.cpp')
-rw-r--r--source/slang/slang-check-expr.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/source/slang/slang-check-expr.cpp b/source/slang/slang-check-expr.cpp
index 0c0b1ec9d..205575a81 100644
--- a/source/slang/slang-check-expr.cpp
+++ b/source/slang/slang-check-expr.cpp
@@ -2484,6 +2484,30 @@ Expr* SemanticsExprVisitor::visitParenExpr(ParenExpr* expr)
return expr;
}
+Expr* SemanticsExprVisitor::visitTupleExpr(TupleExpr* expr)
+{
+ List<Type*> elementTypes;
+ for (auto& element : expr->elements)
+ {
+ element = CheckTerm(element);
+ auto elementType = element->type.type;
+ if (auto concreteTypePack = as<ConcreteTypePack>(elementType))
+ {
+ // We need to flatten the type pack into a tuple type
+ for (Index i = 0; i < concreteTypePack->getTypeCount(); i++)
+ {
+ elementTypes.add(concreteTypePack->getElementType(i));
+ }
+ }
+ else
+ {
+ elementTypes.add(element->type.type);
+ }
+ }
+ expr->type = m_astBuilder->getTupleType(elementTypes.getArrayView());
+ return expr;
+}
+
void SemanticsVisitor::maybeDiagnoseThisNotLValue(Expr* expr)
{
// We will try to handle expressions of the form: