rustc: Extract the logic for generating an ICE message

This commit is contained in:
Brian Anderson 2012-01-14 00:35:16 -08:00
parent 8f57be5bff
commit d9d3be7acc

View File

@ -6,6 +6,7 @@ import codemap::span;
export emitter, emit;
export level, fatal, error, warning, note;
export handler, mk_handler;
export ice_msg;
type emitter = fn@(cmsp: option<(codemap::codemap, span)>,
msg: str, lvl: level);
@ -70,10 +71,10 @@ impl codemap_handler of handler for codemap_t {
self.emit(none, msg, note);
}
fn span_bug(sp: span, msg: str) -> ! {
self.span_fatal(sp, #fmt["internal compiler error %s", msg]);
self.span_fatal(sp, ice_msg(msg));
}
fn bug(msg: str) -> ! {
self.fatal(#fmt["internal compiler error %s", msg]);
self.fatal(ice_msg(msg));
}
fn span_unimpl(sp: span, msg: str) -> ! {
self.span_bug(sp, "unimplemented " + msg);
@ -81,6 +82,10 @@ impl codemap_handler of handler for codemap_t {
fn unimpl(msg: str) -> ! { self.bug("unimplemented " + msg); }
}
fn ice_msg(msg: str) -> str {
#fmt["internal compiler error %s", msg]
}
fn mk_handler(cm: codemap::codemap,
emitter: option<emitter>) -> handler {