================
@@ -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
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to