mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Simplify diagnostic conversion. (#3817)
Remove the enum of converted types, and use `llvm::any_cast` to determine the type instead.
This commit is contained in:
@@ -72,20 +72,14 @@ class SemIRDiagnosticConverter : public DiagnosticConverter<SemIRLocation> {
|
||||
}
|
||||
}
|
||||
|
||||
auto ConvertArg(DiagnosticTypeConversion conversion, llvm::Any arg) const
|
||||
-> llvm::Any override {
|
||||
switch (conversion) {
|
||||
case DiagnosticTypeConversion::NameId: {
|
||||
auto name_id = llvm::any_cast<SemIR::NameId>(arg);
|
||||
return sem_ir_->names().GetFormatted(name_id).str();
|
||||
}
|
||||
case DiagnosticTypeConversion::TypeId: {
|
||||
auto type_id = llvm::any_cast<SemIR::TypeId>(arg);
|
||||
return sem_ir_->StringifyType(type_id);
|
||||
}
|
||||
default:
|
||||
return DiagnosticConverter<SemIRLocation>::ConvertArg(conversion, arg);
|
||||
auto ConvertArg(llvm::Any arg) const -> llvm::Any override {
|
||||
if (auto* name_id = llvm::any_cast<SemIR::NameId>(&arg)) {
|
||||
return sem_ir_->names().GetFormatted(*name_id).str();
|
||||
}
|
||||
if (auto* type_id = llvm::any_cast<SemIR::TypeId>(&arg)) {
|
||||
return sem_ir_->StringifyType(*type_id);
|
||||
}
|
||||
return DiagnosticConverter<SemIRLocation>::ConvertArg(arg);
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user