From 2b3a17a49f22ff0c97169905b1b56bed54595e66 Mon Sep 17 00:00:00 2001 From: Chris Dodd Date: Thu, 5 Dec 2024 23:06:34 +0000 Subject: [PATCH] COWptr/variant fixes (WIP) --- tools/ir-generator/irclass.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/tools/ir-generator/irclass.cpp b/tools/ir-generator/irclass.cpp index 0b09d0f855b..328e5a04d69 100644 --- a/tools/ir-generator/irclass.cpp +++ b/tools/ir-generator/irclass.cpp @@ -448,12 +448,17 @@ IrElement::access_t IrClass::outputCOWfieldrefs(std::ostream &out) const { if (fld->isStatic) continue; if (e->access != access) out << indent << (access = e->access); out << indent << "COWfieldref<" << name << ", "; - const IrClass *cls = fld->type->resolve(fld->clss ? fld->clss->containedIn : nullptr); - if (cls != nullptr && !fld->isInline) out << "const "; - out << fld->type->toString(); - if (cls != nullptr && !fld->isInline) out << "*"; - out << fld->type->declSuffix() << ", &" << name << "::" << fld->name << "> " - << fld->name << ";\n"; + if (fld->is()) { + out << fld->name << "_variant"; + } else { + const IrClass *cls = fld->type->resolve(fld->clss ? fld->clss->containedIn + : nullptr); + if (cls != nullptr && !fld->isInline) out << "const "; + out << fld->type->toString(); + if (cls != nullptr && !fld->isInline) out << "*"; + out << fld->type->declSuffix(); + } + out << ", &" << name << "::" << fld->name << "> " << fld->name << ";\n"; } } return access;