summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-reflection-api.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-reflection-api.cpp')
-rw-r--r--source/slang/slang-reflection-api.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/source/slang/slang-reflection-api.cpp b/source/slang/slang-reflection-api.cpp
index 8688f5e41..b0d88e954 100644
--- a/source/slang/slang-reflection-api.cpp
+++ b/source/slang/slang-reflection-api.cpp
@@ -40,6 +40,12 @@ static inline Type* convert(SlangReflectionType* type)
static inline SlangReflectionType* convert(Type* type)
{
+ // Prevent the AtomicType struct from being visible to the user
+ // through the reflection API.
+ if (auto atomicType = as<AtomicType>(type))
+ {
+ return (SlangReflectionType*)atomicType->getElementType();
+ }
return (SlangReflectionType*)type;
}
@@ -586,7 +592,7 @@ SLANG_API SlangReflectionType* spReflectionType_GetElementType(SlangReflectionTy
if (auto arrayType = as<ArrayExpressionType>(type))
{
- return (SlangReflectionType*)arrayType->getElementType();
+ return convert(arrayType->getElementType());
}
else if (auto parameterGroupType = as<ParameterGroupType>(type))
{
@@ -1026,7 +1032,7 @@ SLANG_API SlangReflectionType* spReflection_FindTypeByName(
if (as<ErrorType>(result))
return nullptr;
- return (SlangReflectionType*)result;
+ return convert(result);
}
catch (...)
{
@@ -1158,7 +1164,7 @@ SLANG_API SlangReflectionType* spReflectionTypeLayout_GetType(
if (!typeLayout)
return nullptr;
- return (SlangReflectionType*)typeLayout->type;
+ return convert(typeLayout->type);
}
SLANG_API SlangTypeKind spReflectionTypeLayout_getKind(SlangReflectionTypeLayout* inTypeLayout)
@@ -4227,7 +4233,7 @@ SLANG_API SlangReflectionType* spReflectionTypeParameter_GetConstraintByIndex(
{
auto constraints =
globalGenericParamDecl->getMembersOfType<GenericTypeConstraintDecl>();
- return (SlangReflectionType*)constraints[index]->sup.Ptr();
+ return convert(constraints[index]->sup.Ptr());
}
// TODO: Add case for entry-point generic parameters.
}