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.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/source/slang/slang-check-type.cpp b/source/slang/slang-check-type.cpp
index b92f9a8f7..68e14c462 100644
--- a/source/slang/slang-check-type.cpp
+++ b/source/slang/slang-check-type.cpp
@@ -105,9 +105,22 @@ namespace Slang
return ExpectAType(exp);
}
+ RefPtr<IntVal> SemanticsVisitor::ExtractGenericArgInteger(RefPtr<Expr> exp, DiagnosticSink* sink)
+ {
+ RefPtr<IntVal> val = CheckIntegerConstantExpression(exp.Ptr(), sink);
+ if(val) return val;
+
+ // If the argument expression could not be coerced to an integer
+ // constant expression in context, then we will instead construct
+ // a dummy "error" value to represent the result.
+ //
+ val = new ErrorIntVal();
+ return val;
+ }
+
RefPtr<IntVal> SemanticsVisitor::ExtractGenericArgInteger(RefPtr<Expr> exp)
{
- return CheckIntegerConstantExpression(exp.Ptr());
+ return ExtractGenericArgInteger(exp, getSink());
}
RefPtr<Val> SemanticsVisitor::ExtractGenericArgVal(RefPtr<Expr> exp)