@@ -26,95 +26,67 @@ pub trait Emitter {
2626 lvl : level ) ;
2727}
2828
29- // a handler deals with errors; certain errors
30- // (fatal, bug, unimpl) may cause immediate exit,
31- // others log errors for later reporting.
32- pub trait handler {
33- fn fatal ( @mut self , msg : & str ) -> !;
34- fn err ( @mut self , msg : & str ) ;
35- fn bump_err_count ( @mut self ) ;
36- fn err_count ( @mut self ) -> uint ;
37- fn has_errors ( @mut self ) -> bool ;
38- fn abort_if_errors ( @mut self ) ;
39- fn warn ( @mut self , msg : & str ) ;
40- fn note ( @mut self , msg : & str ) ;
41- // used to indicate a bug in the compiler:
42- fn bug ( @mut self , msg : & str ) -> !;
43- fn unimpl ( @mut self , msg : & str ) -> !;
44- fn emit ( @mut self ,
45- cmsp : Option < ( @codemap:: CodeMap , Span ) > ,
46- msg : & str ,
47- lvl : level ) ;
48- }
49-
5029// a span-handler is like a handler but also
5130// accepts span information for source-location
5231// reporting.
53- pub trait span_handler {
54- fn span_fatal ( @mut self , sp : Span , msg : & str ) -> !;
55- fn span_err ( @mut self , sp : Span , msg : & str ) ;
56- fn span_warn ( @mut self , sp : Span , msg : & str ) ;
57- fn span_note ( @mut self , sp : Span , msg : & str ) ;
58- fn span_bug ( @mut self , sp : Span , msg : & str ) -> !;
59- fn span_unimpl ( @mut self , sp : Span , msg : & str ) -> !;
60- fn handler ( @mut self ) -> @mut handler ;
61- }
62-
63- struct HandlerT {
64- err_count : uint ,
65- emit : @Emitter ,
66- }
67-
68- struct CodemapT {
69- handler : @mut handler ,
32+ pub struct SpanHandler {
33+ handler : @mut Handler ,
7034 cm : @codemap:: CodeMap ,
7135}
7236
73- impl span_handler for CodemapT {
74- fn span_fatal ( @mut self , sp : Span , msg : & str ) -> ! {
37+ impl SpanHandler {
38+ pub fn span_fatal ( @mut self , sp : Span , msg : & str ) -> ! {
7539 self . handler . emit ( Some ( ( self . cm , sp) ) , msg, fatal) ;
7640 fail ! ( ) ;
7741 }
78- fn span_err ( @mut self , sp : Span , msg : & str ) {
42+ pub fn span_err ( @mut self , sp : Span , msg : & str ) {
7943 self . handler . emit ( Some ( ( self . cm , sp) ) , msg, error) ;
8044 self . handler . bump_err_count ( ) ;
8145 }
82- fn span_warn ( @mut self , sp : Span , msg : & str ) {
46+ pub fn span_warn ( @mut self , sp : Span , msg : & str ) {
8347 self . handler . emit ( Some ( ( self . cm , sp) ) , msg, warning) ;
8448 }
85- fn span_note ( @mut self , sp : Span , msg : & str ) {
49+ pub fn span_note ( @mut self , sp : Span , msg : & str ) {
8650 self . handler . emit ( Some ( ( self . cm , sp) ) , msg, note) ;
8751 }
88- fn span_bug ( @mut self , sp : Span , msg : & str ) -> ! {
52+ pub fn span_bug ( @mut self , sp : Span , msg : & str ) -> ! {
8953 self . span_fatal ( sp, ice_msg ( msg) ) ;
9054 }
91- fn span_unimpl ( @mut self , sp : Span , msg : & str ) -> ! {
55+ pub fn span_unimpl ( @mut self , sp : Span , msg : & str ) -> ! {
9256 self . span_bug ( sp, ~"unimplemented " + msg);
9357 }
94- fn handler(@mut self) -> @mut handler {
58+ pub fn handler(@mut self) -> @mut Handler {
9559 self.handler
9660 }
9761}
9862
99- impl handler for HandlerT {
100- fn fatal(@mut self, msg: &str) -> ! {
63+ // a handler deals with errors; certain errors
64+ // (fatal, bug, unimpl) may cause immediate exit,
65+ // others log errors for later reporting.
66+ pub struct Handler {
67+ err_count: uint,
68+ emit: @Emitter,
69+ }
70+
71+ impl Handler {
72+ pub fn fatal(@mut self, msg: &str) -> ! {
10173 self.emit.emit(None, msg, fatal);
10274 fail!();
10375 }
104- fn err(@mut self, msg: &str) {
76+ pub fn err(@mut self, msg: &str) {
10577 self.emit.emit(None, msg, error);
10678 self.bump_err_count();
10779 }
108- fn bump_err_count(@mut self) {
80+ pub fn bump_err_count(@mut self) {
10981 self.err_count += 1u;
11082 }
111- fn err_count(@mut self) -> uint {
83+ pub fn err_count(@mut self) -> uint {
11284 self.err_count
11385 }
114- fn has_errors(@mut self) -> bool {
86+ pub fn has_errors(@mut self) -> bool {
11587 self.err_count > 0u
11688 }
117- fn abort_if_errors(@mut self) {
89+ pub fn abort_if_errors(@mut self) {
11890 let s;
11991 match self.err_count {
12092 0u => return,
@@ -126,19 +98,19 @@ impl handler for HandlerT {
12698 }
12799 self . fatal( s) ;
128100 }
129- fn warn ( @mut self , msg : & str ) {
101+ pub fn warn ( @mut self , msg : & str ) {
130102 self . emit . emit ( None , msg, warning) ;
131103 }
132- fn note ( @mut self , msg : & str ) {
104+ pub fn note ( @mut self , msg : & str ) {
133105 self . emit . emit ( None , msg, note) ;
134106 }
135- fn bug ( @mut self , msg : & str ) -> ! {
107+ pub fn bug ( @mut self , msg : & str ) -> ! {
136108 self . fatal ( ice_msg ( msg) ) ;
137109 }
138- fn unimpl ( @mut self , msg : & str ) -> ! {
110+ pub fn unimpl ( @mut self , msg : & str ) -> ! {
139111 self . bug ( ~"unimplemented " + msg);
140112 }
141- fn emit(@mut self,
113+ pub fn emit(@mut self,
142114 cmsp: Option<(@codemap::CodeMap, Span)>,
143115 msg: &str,
144116 lvl: level) {
@@ -151,24 +123,24 @@ pub fn ice_msg(msg: &str) -> ~str {
151123 \n We would appreciate a bug report: {}", msg, BUG_REPORT_URL )
152124}
153125
154- pub fn mk_span_handler ( handler : @mut handler , cm : @codemap:: CodeMap )
155- -> @mut span_handler {
156- @mut CodemapT {
126+ pub fn mk_span_handler ( handler : @mut Handler , cm : @codemap:: CodeMap )
127+ -> @mut SpanHandler {
128+ @mut SpanHandler {
157129 handler : handler,
158130 cm : cm,
159- } as @ mut span_handler
131+ }
160132}
161133
162- pub fn mk_handler ( emitter : Option < @Emitter > ) -> @mut handler {
134+ pub fn mk_handler ( emitter : Option < @Emitter > ) -> @mut Handler {
163135 let emit: @Emitter = match emitter {
164136 Some ( e) => e,
165137 None => @DefaultEmitter as @Emitter
166138 } ;
167139
168- @mut HandlerT {
140+ @mut Handler {
169141 err_count : 0 ,
170142 emit : emit,
171- } as @ mut handler
143+ }
172144}
173145
174146#[ deriving( Eq ) ]
@@ -356,7 +328,7 @@ fn print_macro_backtrace(cm: @codemap::CodeMap, sp: Span) {
356328}
357329
358330pub fn expect < T : Clone > (
359- diag : @mut span_handler ,
331+ diag : @mut SpanHandler ,
360332 opt : Option < T > ,
361333 msg: || -> ~str)
362334 -> T {
0 commit comments