summaryrefslogtreecommitdiff
path: root/source/slang/slang-ast-builder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-ast-builder.cpp')
-rw-r--r--source/slang/slang-ast-builder.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/source/slang/slang-ast-builder.cpp b/source/slang/slang-ast-builder.cpp
index 72cb647d5..64a7abd8c 100644
--- a/source/slang/slang-ast-builder.cpp
+++ b/source/slang/slang-ast-builder.cpp
@@ -304,6 +304,19 @@ ArrayExpressionType* ASTBuilder::getArrayType(Type* elementType, IntVal* element
return result;
}
+ConstantBufferType* ASTBuilder::getConstantBufferType(Type* elementType)
+{
+ auto result = getOrCreate<ConstantBufferType>(elementType);
+ if (!result->declRef.getDecl())
+ {
+ auto genericDecl = as<GenericDecl>(m_sharedASTBuilder->findMagicDecl("ConstantBuffer"));
+ auto typeDecl = genericDecl->inner;
+ auto substitutions = getOrCreateGenericSubstitution(nullptr, genericDecl, elementType);
+ result->declRef = getSpecializedDeclRef<Decl>(typeDecl, substitutions);
+ }
+ return result;
+}
+
VectorExpressionType* ASTBuilder::getVectorType(
Type* elementType,
IntVal* elementCount)