================
@@ -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