Remove verbose formatting of instructions on crash messages. (#4495)

Undoes a chunk of #4125 because nobody's really in favor of keeping the
formatting, and it's occasionally caused a crash in Formatter to
dominate output (and even when working, it can be verbose; the source
location in (5) is often more helpful).

Basically goes back to:

```
4.	Check::Context
          NodeStack:
            0. LetIntroducer: no value
            1. BindingPattern: inst+15
            2. LetInitializer: no value
            3. StructLiteralStart: no value
          inst_block_stack_:
            0.	block<invalid>	{inst+0, inst+1, inst+6, inst+7, inst+8, inst+9, inst+10, inst+11, inst+12}
            1.	global_init	{}
          pattern_block_stack_:
            0.	block<invalid>	{}
          param_and_arg_refs_stack:
            0.	block<invalid>	{}
          args_type_info_stack_:
            0.	block<invalid>	{}
5.	alias_of_alias.carbon:15:12: checking StructLiteral
          let d: c = {};
                     ^~
```

Fixes #4145
This commit is contained in:
Jon Ross-Perkins
2024-11-07 16:22:36 +00:00
committed by GitHub
parent be56ff87c6
commit 138ecf108f
9 changed files with 32 additions and 77 deletions
+5 -8
View File
@@ -8,19 +8,15 @@
namespace Carbon::Check {
auto NodeStack::PrintForStackDump(SemIR::Formatter& formatter, int indent,
llvm::raw_ostream& output) const -> void {
auto NodeStack::PrintForStackDump(int indent, llvm::raw_ostream& output) const
-> void {
auto print_id = [&]<Id::Kind Kind>(Id id) {
if constexpr (Kind == Id::Kind::None) {
output << "no value\n";
output << "no value";
} else if constexpr (Kind == Id::Kind::Invalid) {
CARBON_FATAL("Should not be in node stack");
} else if constexpr (Kind == Id::KindFor<SemIR::InstId>()) {
output << "\n";
formatter.PrintInst(id.As<Id::KindFor<SemIR::InstId>()>(), indent + 4,
output);
} else {
output << id.As<Kind>() << "\n";
output << id.As<Kind>();
}
};
@@ -37,6 +33,7 @@ auto NodeStack::PrintForStackDump(SemIR::Formatter& formatter, int indent,
break;
#include "toolchain/parse/node_kind.def"
}
output << "\n";
}
}