summaryrefslogtreecommitdiff
path: root/source/slang/slang-check-type.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-check-type.cpp')
-rw-r--r--source/slang/slang-check-type.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/source/slang/slang-check-type.cpp b/source/slang/slang-check-type.cpp
index 0786d3166..ea808e456 100644
--- a/source/slang/slang-check-type.cpp
+++ b/source/slang/slang-check-type.cpp
@@ -11,9 +11,12 @@ namespace Slang
TypeExp typeExp,
DiagnosticSink* sink)
{
- SemanticsVisitor visitor(
+ SharedSemanticsContext sharedSemanticsContext(
linkage,
sink);
+ SemanticsVisitor visitor(&sharedSemanticsContext);
+
+
auto typeOut = visitor.CheckProperType(typeExp);
return typeOut.type;
}
@@ -185,7 +188,7 @@ namespace Slang
//
auto genericDeclRef = genericDeclRefType->GetDeclRef();
- checkDecl(genericDeclRef.decl);
+ ensureDecl(genericDeclRef, DeclCheckState::CanSpecializeGeneric);
List<RefPtr<Expr>> args;
for (RefPtr<Decl> member : genericDeclRef.getDecl()->Members)
{
@@ -331,7 +334,7 @@ namespace Slang
declRef).as<VectorExpressionType>();
}
- RefPtr<Expr> SemanticsVisitor::visitSharedTypeExpr(SharedTypeExpr* expr)
+ RefPtr<Expr> SemanticsExprVisitor::visitSharedTypeExpr(SharedTypeExpr* expr)
{
if (!expr->type.Ptr())
{
@@ -341,7 +344,7 @@ namespace Slang
return expr;
}
- RefPtr<Expr> SemanticsVisitor::visitTaggedUnionTypeExpr(TaggedUnionTypeExpr* expr)
+ RefPtr<Expr> SemanticsExprVisitor::visitTaggedUnionTypeExpr(TaggedUnionTypeExpr* expr)
{
// We have an expression of the form `__TaggedUnion(A, B, ...)`
// which will evaluate to a tagged-union type over `A`, `B`, etc.