summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-check-expr.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2025-02-05 12:32:56 -0800
committerGitHub <noreply@github.com>2025-02-05 12:32:56 -0800
commit7911c9437333692db275d2dff41264f4c8023be8 (patch)
treedd83ca191f47aed0bd512dfb9412038a7b7d3f0e /source/slang/slang-check-expr.cpp
parent613f43a080f84e2680fb78dc4ed60a553da3b418 (diff)
Use two-stage parsing to disambiguate generic app and comparison. (#6281)
* Use two-stage parsing to disambiguate generic app and comparison. * Typo fix. * Update doc.
Diffstat (limited to 'source/slang/slang-check-expr.cpp')
-rw-r--r--source/slang/slang-check-expr.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/source/slang/slang-check-expr.cpp b/source/slang/slang-check-expr.cpp
index 7726fd6c8..7d4fbdf4c 100644
--- a/source/slang/slang-check-expr.cpp
+++ b/source/slang/slang-check-expr.cpp
@@ -167,7 +167,7 @@ Expr* SemanticsVisitor::openExistential(Expr* expr, DeclRef<InterfaceDecl> inter
openedValue->declRef = varDeclRef;
openedValue->type = QualType(openedType);
openedValue->originalExpr = expr;
-
+ openedValue->checked = true;
// The result of opening an existential is an l-value
// if the original existential is an l-value.
//
@@ -226,6 +226,7 @@ Expr* SemanticsVisitor::maybeOpenRef(Expr* expr)
openRef->innerExpr = expr;
openRef->type.isLeftValue = (as<RefType>(exprType) != nullptr);
openRef->type.type = refType->getValueType();
+ openRef->checked = true;
return openRef;
}
return expr;
@@ -522,6 +523,7 @@ Expr* SemanticsVisitor::constructDerefExpr(Expr* base, QualType elementType, Sou
derefExpr->loc = loc;
derefExpr->base = base;
derefExpr->type = QualType(elementType);
+ derefExpr->checked = true;
if (as<PtrType>(base->type) || as<RefType>(base->type))
{
@@ -3918,6 +3920,7 @@ Expr* SemanticsExprVisitor::visitAsTypeExpr(AsTypeExpr* expr)
makeOptional->type = optType;
makeOptional->value = castToSuperType;
makeOptional->typeExpr = typeExpr.exp;
+ makeOptional->checked = true;
return makeOptional;
}
@@ -4125,6 +4128,7 @@ Expr* SemanticsVisitor::CheckMatrixSwizzleExpr(
swizExpr->loc = memberRefExpr->loc;
swizExpr->base = memberRefExpr->baseExpression;
swizExpr->memberOpLoc = memberRefExpr->memberOperatorLoc;
+ swizExpr->checked = true;
// We can have up to 4 swizzles of two elements each
MatrixCoord elementCoords[4];