void TypedefDumper::dump(const PDBSymbolTypePointer &Symbol) { if (Symbol.isConstType()) WithColor(Printer, PDB_ColorItem::Keyword).get() << "const "; if (Symbol.isVolatileType()) WithColor(Printer, PDB_ColorItem::Keyword).get() << "volatile "; auto PointeeType = Symbol.getPointeeType(); if (auto FuncSig = unique_dyn_cast<PDBSymbolTypeFunctionSig>(PointeeType)) { FunctionDumper::PointerType Pointer = FunctionDumper::PointerType::Pointer; if (Symbol.isReference()) Pointer = FunctionDumper::PointerType::Reference; FunctionDumper NestedDumper(Printer); NestedDumper.start(*FuncSig, nullptr, Pointer); } else { PointeeType->dump(*this); Printer << ((Symbol.isReference()) ? "&" : "*"); } if (Symbol.getRawSymbol().isRestrictedType()) WithColor(Printer, PDB_ColorItem::Keyword).get() << " __restrict"; }