summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-check-conversion.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-08-09 20:11:09 -0700
committerGitHub <noreply@github.com>2023-08-09 20:11:09 -0700
commitf875d3f5ba9c1ddc6aa9a0960efd5ab27ae4e4c9 (patch)
tree42dae9fd6c260dfdafe7ce4a1ffc392e799c855d /source/slang/slang-check-conversion.cpp
parent03a5bb4bc0391e2de3c2dfb9ff3213bc0ccd9664 (diff)
Support implciit casted swizzled lvalue. (#3077)
* Support implciit casted swizzled lvalue. * Fix warnings. * Fix. * fix comment. * Prefer mangled linkage name for global params. * Update tests. --------- Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-check-conversion.cpp')
-rw-r--r--source/slang/slang-check-conversion.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/source/slang/slang-check-conversion.cpp b/source/slang/slang-check-conversion.cpp
index d89808c3d..09a783fb4 100644
--- a/source/slang/slang-check-conversion.cpp
+++ b/source/slang/slang-check-conversion.cpp
@@ -1360,15 +1360,20 @@ namespace Slang
Type* toType,
Type* fromType)
{
- // Can we convert at all?
- ConversionCost conversionCost;
- if(!canCoerce(toType, fromType, nullptr, &conversionCost))
- return false;
+ auto conversionCost = getConversionCost(toType, fromType);
// Is the conversion cheap enough to be done implicitly?
- if(conversionCost >= kConversionCost_GeneralConversion)
+ if (conversionCost >= kConversionCost_GeneralConversion)
return false;
return true;
}
+
+ ConversionCost SemanticsVisitor::getConversionCost(Type* toType, Type* fromType)
+ {
+ ConversionCost conversionCost = kConversionCost_Impossible;
+ if (!canCoerce(toType, fromType, nullptr, &conversionCost))
+ return kConversionCost_Impossible;
+ return conversionCost;
+ }
}