Migrate remaining exits to FATAL_*_ERROR calls (#704)

Adds FATAL for things that are most likely programming errors in executable_semantics.
This commit is contained in:
Jon Meow
2021-08-06 13:06:25 -07:00
committed by GitHub
parent 5749413b28
commit 2e9e4f4cb3
23 changed files with 99 additions and 150 deletions
@@ -99,8 +99,7 @@ auto EvalPrim(Operator op, const std::vector<const Value*>& args, int line_num)
case Operator::Ptr:
return global_arena->New<PointerType>(args[0]);
case Operator::Deref:
llvm::errs() << line_num << ": dereference not implemented yet\n";
exit(-1);
FATAL() << "dereference not implemented yet";
}
}
@@ -298,10 +297,7 @@ auto PatternMatch(const Value* p, const Value* v, Env values,
return values;
}
default:
llvm::errs()
<< "internal error, expected a tuple value in pattern, not " << *v
<< "\n";
exit(-1);
FATAL() << "expected a tuple value in pattern, not " << *v;
}
case Value::Kind::AlternativeValue:
switch (v->Tag()) {
@@ -320,11 +316,7 @@ auto PatternMatch(const Value* p, const Value* v, Env values,
return *matches;
}
default:
llvm::errs()
<< "internal error, expected a choice alternative in pattern, "
"not "
<< *v << "\n";
exit(-1);
FATAL() << "expected a choice alternative in pattern, not " << *v;
}
case Value::Kind::FunctionType:
switch (v->Tag()) {
@@ -377,11 +369,7 @@ void PatternAssignment(const Value* pat, const Value* val, int line_num) {
break;
}
default:
llvm::errs()
<< "internal error, expected a tuple value on right-hand-side, "
"not "
<< *val << "\n";
exit(-1);
FATAL() << "expected a tuple value on right-hand-side, not " << *val;
}
break;
}
@@ -397,11 +385,7 @@ void PatternAssignment(const Value* pat, const Value* val, int line_num) {
break;
}
default:
llvm::errs()
<< "internal error, expected an alternative in left-hand-side, "
"not "
<< *val << "\n";
exit(-1);
FATAL() << "expected an alternative in left-hand-side, not " << *val;
}
break;
}
@@ -428,8 +412,7 @@ void StepLvalue() {
CurrentEnv(state).Get(exp->GetIdentifierExpression().name);
if (!pointer) {
FATAL_RUNTIME_ERROR(exp->line_num)
<< ": could not find `" << exp->GetIdentifierExpression().name
<< "`";
<< "could not find `" << exp->GetIdentifierExpression().name << "`";
}
const Value* v = global_arena->New<PointerValue>(*pointer);
frame->todo.Pop();
@@ -610,8 +593,7 @@ void StepExp() {
CurrentEnv(state).Get(exp->GetIdentifierExpression().name);
if (!pointer) {
FATAL_RUNTIME_ERROR(exp->line_num)
<< ": could not find `" << exp->GetIdentifierExpression().name
<< "`";
<< "could not find `" << exp->GetIdentifierExpression().name << "`";
}
const Value* pointee = state->heap.Read(*pointer, exp->line_num);
frame->todo.Pop(1);
@@ -670,8 +652,7 @@ void StepExp() {
frame->todo.Pop(1);
CallFunction(exp->line_num, act->results, state);
} else {
llvm::errs() << "internal error in handle_value with Call\n";
exit(-1);
FATAL() << "in handle_value with Call pos " << act->pos;
}
break;
case ExpressionKind::IntTypeLiteral: {