mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-30 22:02:41 +01:00
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:
@@ -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: {
|
||||
|
||||
Reference in New Issue
Block a user