Enhance 'but got x' output on parse error
This commit is contained in:
parent
91c4b75bc1
commit
bed5d3cbc4
1 changed files with 15 additions and 3 deletions
|
@ -112,6 +112,18 @@ namespace bolt {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static std::string describe(Token* T) {
|
||||||
|
switch (T->getKind()) {
|
||||||
|
case NodeKind::LineFoldEnd:
|
||||||
|
case NodeKind::BlockStart:
|
||||||
|
case NodeKind::BlockEnd:
|
||||||
|
case NodeKind::EndOfFile:
|
||||||
|
return describe(T->getKind());
|
||||||
|
default:
|
||||||
|
return "'" + T->getText() + "'";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
std::string describe(const Type* Ty) {
|
std::string describe(const Type* Ty) {
|
||||||
switch (Ty->getKind()) {
|
switch (Ty->getKind()) {
|
||||||
case TypeKind::Var:
|
case TypeKind::Var:
|
||||||
|
@ -480,9 +492,9 @@ namespace bolt {
|
||||||
write(describe(Prev));
|
write(describe(Prev));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
write(" but instead got '");
|
write(" but instead got ");
|
||||||
write(E.Actual->getText());
|
write(describe(E.Actual));
|
||||||
write("'\n\n");
|
write("\n\n");
|
||||||
writeExcerpt(E.File, E.Actual->getRange(), E.Actual->getRange(), Color::Red);
|
writeExcerpt(E.File, E.Actual->getRange(), E.Actual->getRange(), Color::Red);
|
||||||
write("\n");
|
write("\n");
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue