summaryrefslogtreecommitdiff
path: root/source/slang/slang-check-decl.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-03-23 22:42:59 -0700
committerGitHub <noreply@github.com>2023-03-23 22:42:59 -0700
commit56a84a06488afb817f79fbd99e8b470bd587ccd1 (patch)
treef6da5c3d723123880c55530b86066568dbb7ca28 /source/slang/slang-check-decl.cpp
parente004511b5f75bb24df1adec71b005146917afb39 (diff)
Fix various autodiff crashes related to interface usage. (#2730)
* Fix crash. * Fix `[ForwradDerivative]` on member functions. * Update comments. * Fix crash when [BackwardDerivative] is provided but not [ForwardDerivative]. * Allow calling dynamic dispatched generic method from differentiable func. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-check-decl.cpp')
-rw-r--r--source/slang/slang-check-decl.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/source/slang/slang-check-decl.cpp b/source/slang/slang-check-decl.cpp
index 6083ce9c0..6a32f59d3 100644
--- a/source/slang/slang-check-decl.cpp
+++ b/source/slang/slang-check-decl.cpp
@@ -5638,6 +5638,10 @@ namespace Slang
bool isDiffFunc = false;
if (decl->hasModifier<ForwardDifferentiableAttribute>() || decl->hasModifier<BackwardDifferentiableAttribute>())
{
+ if (GetOuterGeneric(decl))
+ {
+ getSink()->diagnose(decl, Diagnostics::differentiableGenericInterfaceMethodNotSupported);
+ }
auto reqDecl = m_astBuilder->create<ForwardDerivativeRequirementDecl>();
cloneModifiers(reqDecl, decl);
auto declRef = DeclRef<CallableDecl>(decl, createDefaultSubstitutions(m_astBuilder, this, decl));