summaryrefslogtreecommitdiff
path: root/source/slang/slang-check-overload.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2023-09-06 19:32:06 -0400
committerGitHub <noreply@github.com>2023-09-06 16:32:06 -0700
commit891a6cf376c6b2560231502614b37c332f44ddea (patch)
tree556f95d0125fda05fcf9dbf18b956f21fc800451 /source/slang/slang-check-overload.cpp
parent20bd5e7440e3d28715bed449a336003ba02d7d0f (diff)
Make a warning if a [mutating] method is called on an in param. (#3184)
* Make a warning if a [mutating] method is passed as an in param. * Kick CI. --------- Co-authored-by: Yong He <yonghe@outlook.com>
Diffstat (limited to 'source/slang/slang-check-overload.cpp')
-rw-r--r--source/slang/slang-check-overload.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/source/slang/slang-check-overload.cpp b/source/slang/slang-check-overload.cpp
index 50da2d3eb..5e626705a 100644
--- a/source/slang/slang-check-overload.cpp
+++ b/source/slang/slang-check-overload.cpp
@@ -586,7 +586,13 @@ namespace Slang
{
if(auto paramDecl = isReferenceIntoFunctionInputParameter(context.baseExpr))
{
- getSink()->diagnose(context.loc, Diagnostics::mutatingMethodOnFunctionInputParameter,
+ const bool isNonCopyable = isNonCopyableType(paramDecl->getType());
+
+ const auto& diagnotic = isNonCopyable ?
+ Diagnostics::mutatingMethodOnFunctionInputParameterError :
+ Diagnostics::mutatingMethodOnFunctionInputParameterWarning;
+
+ getSink()->diagnose(context.loc, diagnotic,
funcDeclRef.getName(),
paramDecl->getName());
}