diff options
| author | Yong He <yonghe@outlook.com> | 2023-02-04 20:07:14 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-02-04 20:07:14 -0800 |
| commit | a12c5511a9003efb23b265a7f2f613cf49aa9f07 (patch) | |
| tree | b23bab09ae99df1516a89ac60f9779cf979ff2ef /source/slang/slang-check-expr.cpp | |
| parent | 228e71dab7dfa18ece979f4099ec0c7d1e37e5ff (diff) | |
Patch transcription of `inout` non differentiable params. (#2623)
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); } } |
