summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-ast-support-types.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-ast-support-types.cpp')
-rw-r--r--source/slang/slang-ast-support-types.cpp25
1 files changed, 19 insertions, 6 deletions
diff --git a/source/slang/slang-ast-support-types.cpp b/source/slang/slang-ast-support-types.cpp
index 1f5f4f8b2..9d9fdb7da 100644
--- a/source/slang/slang-ast-support-types.cpp
+++ b/source/slang/slang-ast-support-types.cpp
@@ -11,13 +11,26 @@ namespace Slang
QualType::QualType(Type* type)
: type(type), isLeftValue(false)
{
- if (as<RefType>(type))
+ if (auto refType = as<ExplicitRefType>(type))
{
- isLeftValue = true;
- }
- else if (as<ConstRefType>(type))
- {
- isLeftValue = false;
+ if (auto optAccessQualifier = refType->tryGetAccessQualifierValue())
+ {
+ auto accessQualifier = *optAccessQualifier;
+ switch (accessQualifier)
+ {
+ case AccessQualifier::ReadWrite:
+ isLeftValue = true;
+ break;
+
+ case AccessQualifier::Read:
+ isLeftValue = false;
+ break;
+
+ default:
+ SLANG_UNEXPECTED("unhandled access qualifier");
+ break;
+ }
+ }
}
}