[clang] [HLSL] Implement Texture2D::mips[][] (PR #186143)

Nathan Gauër via cfe-commits cfe-commits at lists.llvm.org
Thu Mar 26 06:47:17 PDT 2026


================
@@ -705,12 +758,69 @@ BuiltinTypeMethodBuilder::accessHandleFieldOnResource(T ResourceRecord) {
   return *this;
 }
 
-template <typename ResourceT, typename ValueT>
+template <typename T>
+BuiltinTypeMethodBuilder &
+BuiltinTypeMethodBuilder::accessFieldOnResource(T ResourceRecord,
+                                                FieldDecl *Field) {
+  ensureCompleteDecl();
+  Expr *Base = convertPlaceholder(ResourceRecord);
+
+  ASTContext &AST = DeclBuilder.SemaRef.getASTContext();
+  auto *Member =
+      MemberExpr::CreateImplicit(AST, Base, /*IsArrow=*/false, Field,
+                                 Field->getType(), VK_LValue, OK_Ordinary);
+  StmtsList.push_back(Member);
+  return *this;
+}
+
+void BuiltinTypeMethodBuilder::setMipsHandleField(LocalVar &ResourceRecord) {
+  FieldDecl *MipsField = DeclBuilder.Fields.lookup("mips");
+  if (!MipsField)
+    return;
+
+  ASTContext &AST = DeclBuilder.SemaRef.getASTContext();
+  QualType MipsTy = MipsField->getType();
+  const auto *RT = MipsTy->getAs<RecordType>();
+  assert(RT && "mips field must be a record type");
----------------
Keenuts wrote:

```suggestion
  const auto *RT = MipsTy->castAs<RecordType>();
```
Looks like this the is proper way

https://github.com/llvm/llvm-project/pull/186143


More information about the cfe-commits mailing list