diff options
Diffstat (limited to 'source/slang/slang-check-expr.cpp')
| -rw-r--r-- | source/slang/slang-check-expr.cpp | 11 |
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); } } |
