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