summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-check-expr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-check-expr.cpp')
-rw-r--r--source/slang/slang-check-expr.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/source/slang/slang-check-expr.cpp b/source/slang/slang-check-expr.cpp
index a52a08f15..7e2bc3822 100644
--- a/source/slang/slang-check-expr.cpp
+++ b/source/slang/slang-check-expr.cpp
@@ -2232,9 +2232,18 @@ namespace Slang
{
if (as<DifferentialPairType>(derivType))
{
- // Using inout type on all the derivative parameters
+ // An `in` differentiable parameter becomes an `inout` parameter.
derivType = m_astBuilder->getInOutType(derivType);
}
+ else if (auto inoutType = as<InOutType>(derivType))
+ {
+ if (!as<DifferentialPairType>(inoutType->getValueType()))
+ {
+ // An `inout` non differentiable parameter becomes an `in` parameter
+ // (removing `out`).
+ derivType = inoutType->getValueType();
+ }
+ }
type->paramTypes.add(derivType);
}
}