Skip to content

Commit 730d27e

Browse files
committed
---
yaml --- r: 7786 b: refs/heads/snap-stage3 c: 2496dcc h: refs/heads/master v: v3
1 parent 48fd1a5 commit 730d27e

File tree

20 files changed

+194
-429
lines changed

20 files changed

+194
-429
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
refs/heads/master: 2898dcc5d97da9427ac367542382b6239d9c0bbf
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 61b5cc95d172acd69488c5df661e1fcf3b3cc190
4+
refs/heads/snap-stage3: 2496dccae4622cb5fea9ae8f54adb0b83eadaf07
55
refs/heads/try: 2898dcc5d97da9427ac367542382b6239d9c0bbf
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105

branches/snap-stage3/src/cargo/cargo.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,10 @@ fn load_link(mis: [@ast::meta_item]) -> (option::t<str>,
100100

101101
fn load_pkg(filename: str) -> option::t<pkg> {
102102
let cm = codemap::new_codemap();
103-
let handler = diagnostic::mk_handler(none);
104103
let sess = @{
105104
cm: cm,
106105
mutable next_id: 1,
107-
span_diagnostic: diagnostic::mk_span_handler(handler, cm),
106+
diagnostic: diagnostic::mk_handler(cm, none),
108107
mutable chpos: 0u,
109108
mutable byte_pos: 0u
110109
};

branches/snap-stage3/src/comp/driver/diagnostic.rs

Lines changed: 36 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -5,83 +5,51 @@ import codemap::span;
55

66
export emitter, emit;
77
export level, fatal, error, warning, note;
8-
export span_handler, handler, mk_span_handler, mk_handler;
9-
export codemap_span_handler, codemap_handler;
8+
export handler, mk_handler;
109
export ice_msg;
1110

1211
type emitter = fn@(cmsp: option<(codemap::codemap, span)>,
1312
msg: str, lvl: level);
1413

1514

16-
iface span_handler {
17-
fn span_fatal(sp: span, msg: str) -> !;
18-
fn span_err(sp: span, msg: str);
19-
fn span_warn(sp: span, msg: str);
20-
fn span_note(sp: span, msg: str);
21-
fn span_bug(sp: span, msg: str) -> !;
22-
fn span_unimpl(sp: span, msg: str) -> !;
23-
fn handler() -> handler;
24-
}
25-
2615
iface handler {
16+
fn span_fatal(sp: span, msg: str) -> !;
2717
fn fatal(msg: str) -> !;
18+
fn span_err(sp: span, msg: str);
2819
fn err(msg: str);
29-
fn bump_err_count();
3020
fn has_errors() -> bool;
3121
fn abort_if_errors();
22+
fn span_warn(sp: span, msg: str);
3223
fn warn(msg: str);
24+
fn span_note(sp: span, msg: str);
3325
fn note(msg: str);
26+
fn span_bug(sp: span, msg: str) -> !;
3427
fn bug(msg: str) -> !;
28+
fn span_unimpl(sp: span, msg: str) -> !;
3529
fn unimpl(msg: str) -> !;
36-
fn emit(cmsp: option<(codemap::codemap, span)>, msg: str, lvl: level);
3730
}
3831

39-
type handler_t = @{
40-
mutable err_count: uint,
41-
_emit: emitter
42-
};
43-
4432
type codemap_t = @{
45-
handler: handler,
46-
cm: codemap::codemap
33+
cm: codemap::codemap,
34+
mutable err_count: uint,
35+
emit: emitter
4736
};
4837

49-
impl codemap_span_handler of span_handler for codemap_t {
38+
impl codemap_handler of handler for codemap_t {
5039
fn span_fatal(sp: span, msg: str) -> ! {
51-
self.handler.emit(some((self.cm, sp)), msg, fatal);
40+
self.emit(some((self.cm, sp)), msg, fatal);
5241
fail;
5342
}
54-
fn span_err(sp: span, msg: str) {
55-
self.handler.emit(some((self.cm, sp)), msg, error);
56-
self.handler.bump_err_count();
57-
}
58-
fn span_warn(sp: span, msg: str) {
59-
self.handler.emit(some((self.cm, sp)), msg, warning);
60-
}
61-
fn span_note(sp: span, msg: str) {
62-
self.handler.emit(some((self.cm, sp)), msg, note);
63-
}
64-
fn span_bug(sp: span, msg: str) -> ! {
65-
self.span_fatal(sp, ice_msg(msg));
66-
}
67-
fn span_unimpl(sp: span, msg: str) -> ! {
68-
self.span_bug(sp, "unimplemented " + msg);
69-
}
70-
fn handler() -> handler {
71-
self.handler
72-
}
73-
}
74-
75-
impl codemap_handler of handler for handler_t {
7643
fn fatal(msg: str) -> ! {
77-
self._emit(none, msg, fatal);
44+
self.emit(none, msg, fatal);
7845
fail;
7946
}
80-
fn err(msg: str) {
81-
self._emit(none, msg, error);
82-
self.bump_err_count();
47+
fn span_err(sp: span, msg: str) {
48+
self.emit(some((self.cm, sp)), msg, error);
49+
self.err_count += 1u;
8350
}
84-
fn bump_err_count() {
51+
fn err(msg: str) {
52+
self.emit(none, msg, error);
8553
self.err_count += 1u;
8654
}
8755
fn has_errors() -> bool { self.err_count > 0u }
@@ -90,30 +58,36 @@ impl codemap_handler of handler for handler_t {
9058
self.fatal("aborting due to previous errors");
9159
}
9260
}
61+
fn span_warn(sp: span, msg: str) {
62+
self.emit(some((self.cm, sp)), msg, warning);
63+
}
9364
fn warn(msg: str) {
94-
self._emit(none, msg, warning);
65+
self.emit(none, msg, warning);
66+
}
67+
fn span_note(sp: span, msg: str) {
68+
self.emit(some((self.cm, sp)), msg, note);
9569
}
9670
fn note(msg: str) {
97-
self._emit(none, msg, note);
71+
self.emit(none, msg, note);
72+
}
73+
fn span_bug(sp: span, msg: str) -> ! {
74+
self.span_fatal(sp, ice_msg(msg));
9875
}
9976
fn bug(msg: str) -> ! {
10077
self.fatal(ice_msg(msg));
10178
}
102-
fn unimpl(msg: str) -> ! { self.bug("unimplemented " + msg); }
103-
fn emit(cmsp: option<(codemap::codemap, span)>, msg: str, lvl: level) {
104-
self._emit(cmsp, msg, lvl);
79+
fn span_unimpl(sp: span, msg: str) -> ! {
80+
self.span_bug(sp, "unimplemented " + msg);
10581
}
82+
fn unimpl(msg: str) -> ! { self.bug("unimplemented " + msg); }
10683
}
10784

10885
fn ice_msg(msg: str) -> str {
10986
#fmt["internal compiler error %s", msg]
11087
}
11188

112-
fn mk_span_handler(handler: handler, cm: codemap::codemap) -> span_handler {
113-
@{ handler: handler, cm: cm } as span_handler
114-
}
115-
116-
fn mk_handler(emitter: option<emitter>) -> handler {
89+
fn mk_handler(cm: codemap::codemap,
90+
emitter: option<emitter>) -> handler {
11791

11892
let emit = alt emitter {
11993
some(e) { e }
@@ -127,8 +101,9 @@ fn mk_handler(emitter: option<emitter>) -> handler {
127101
};
128102

129103
@{
104+
cm: cm,
130105
mutable err_count: 0u,
131-
_emit: emit
106+
emit: emit
132107
} as handler
133108
}
134109

branches/snap-stage3/src/comp/driver/driver.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ fn pretty_print_input(sess: session, cfg: ast::crate_cfg, input: str,
299299
}
300300
ppm_expanded | ppm_normal {}
301301
}
302-
pprust::print_crate(sess.codemap, sess.span_diagnostic, crate, input,
302+
pprust::print_crate(sess.codemap, sess.diagnostic, crate, input,
303303
io::string_reader(src), io::stdout(), ann);
304304
}
305305

@@ -481,23 +481,21 @@ fn build_session(sopts: @session::options, input: str,
481481
sopts.addl_lib_search_paths);
482482
let codemap = codemap::new_codemap();
483483
let diagnostic_handler =
484-
diagnostic::mk_handler(some(demitter));
485-
let span_diagnostic_handler =
486-
diagnostic::mk_span_handler(diagnostic_handler, codemap);
484+
diagnostic::mk_handler(codemap, some(demitter));
487485
@{targ_cfg: target_cfg,
488486
opts: sopts,
489487
cstore: cstore,
490488
parse_sess: @{
491489
cm: codemap,
492490
mutable next_id: 1,
493-
span_diagnostic: span_diagnostic_handler,
491+
diagnostic: diagnostic_handler,
494492
mutable chpos: 0u,
495493
mutable byte_pos: 0u
496494
},
497495
codemap: codemap,
498496
// For a library crate, this is always none
499497
mutable main_fn: none,
500-
span_diagnostic: span_diagnostic_handler,
498+
diagnostic: diagnostic_handler,
501499
filesearch: filesearch,
502500
mutable building_library: false,
503501
working_dir: fs::dirname(input)}

branches/snap-stage3/src/comp/driver/session.rs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -60,53 +60,53 @@ type session = @{targ_cfg: @config,
6060
codemap: codemap::codemap,
6161
// For a library crate, this is always none
6262
mutable main_fn: option::t<node_id>,
63-
span_diagnostic: diagnostic::span_handler,
63+
diagnostic: diagnostic::handler,
6464
filesearch: filesearch::filesearch,
6565
mutable building_library: bool,
6666
working_dir: str};
6767

6868
impl session for session {
6969
fn span_fatal(sp: span, msg: str) -> ! {
70-
self.span_diagnostic.span_fatal(sp, msg)
70+
self.diagnostic.span_fatal(sp, msg)
7171
}
7272
fn fatal(msg: str) -> ! {
73-
self.span_diagnostic.handler().fatal(msg)
73+
self.diagnostic.fatal(msg)
7474
}
7575
fn span_err(sp: span, msg: str) {
76-
self.span_diagnostic.span_err(sp, msg)
76+
self.diagnostic.span_err(sp, msg)
7777
}
7878
fn err(msg: str) {
79-
self.span_diagnostic.handler().err(msg)
79+
self.diagnostic.err(msg)
8080
}
8181
fn has_errors() -> bool {
82-
self.span_diagnostic.handler().has_errors()
82+
self.diagnostic.has_errors()
8383
}
8484
fn abort_if_errors() {
85-
self.span_diagnostic.handler().abort_if_errors()
85+
self.diagnostic.abort_if_errors()
8686
}
8787
fn span_warn(sp: span, msg: str) {
88-
self.span_diagnostic.span_warn(sp, msg)
88+
self.diagnostic.span_warn(sp, msg)
8989
}
9090
fn warn(msg: str) {
91-
self.span_diagnostic.handler().warn(msg)
91+
self.diagnostic.warn(msg)
9292
}
9393
fn span_note(sp: span, msg: str) {
94-
self.span_diagnostic.span_note(sp, msg)
94+
self.diagnostic.span_note(sp, msg)
9595
}
9696
fn note(msg: str) {
97-
self.span_diagnostic.handler().note(msg)
97+
self.diagnostic.note(msg)
9898
}
9999
fn span_bug(sp: span, msg: str) -> ! {
100-
self.span_diagnostic.span_bug(sp, msg)
100+
self.diagnostic.span_bug(sp, msg)
101101
}
102102
fn bug(msg: str) -> ! {
103-
self.span_diagnostic.handler().bug(msg)
103+
self.diagnostic.bug(msg)
104104
}
105105
fn span_unimpl(sp: span, msg: str) -> ! {
106-
self.span_diagnostic.span_unimpl(sp, msg)
106+
self.diagnostic.span_unimpl(sp, msg)
107107
}
108108
fn unimpl(msg: str) -> ! {
109-
self.span_diagnostic.handler().unimpl(msg)
109+
self.diagnostic.unimpl(msg)
110110
}
111111
fn next_node_id() -> ast::node_id {
112112
ret syntax::parse::parser::next_node_id(self.parse_sess);

branches/snap-stage3/src/comp/syntax/parse/lexer.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import driver::diagnostic;
1010

1111
type reader = @{
1212
cm: codemap::codemap,
13-
span_diagnostic: diagnostic::span_handler,
13+
diagnostic: diagnostic::handler,
1414
src: str,
1515
len: uint,
1616
mutable col: uint,
@@ -49,18 +49,17 @@ impl reader for reader {
4949
} else { self.curr = -1 as char; }
5050
}
5151
fn fatal(m: str) -> ! {
52-
self.span_diagnostic.span_fatal(
52+
self.diagnostic.span_fatal(
5353
ast_util::mk_sp(self.chpos, self.chpos),
5454
m)
5555
}
5656
}
5757

5858
fn new_reader(cm: codemap::codemap,
59-
span_diagnostic: diagnostic::span_handler,
59+
diagnostic: diagnostic::handler,
6060
src: str, filemap: codemap::filemap,
6161
itr: @interner::interner<str>) -> reader {
62-
let r = @{cm: cm,
63-
span_diagnostic: span_diagnostic,
62+
let r = @{cm: cm, diagnostic: diagnostic,
6463
src: src, len: str::byte_len(src),
6564
mutable col: 0u, mutable pos: 0u, mutable curr: -1 as char,
6665
mutable chpos: filemap.start_pos.ch, mutable strs: [],
@@ -668,13 +667,13 @@ fn is_lit(t: token::token) -> bool {
668667
type lit = {lit: str, pos: uint};
669668

670669
fn gather_comments_and_literals(cm: codemap::codemap,
671-
span_diagnostic: diagnostic::span_handler,
670+
diagnostic: diagnostic::handler,
672671
path: str,
673672
srdr: io::reader) ->
674673
{cmnts: [cmnt], lits: [lit]} {
675674
let src = str::unsafe_from_bytes(srdr.read_whole_stream());
676675
let itr = @interner::mk::<str>(str::hash, str::eq);
677-
let rdr = new_reader(cm, span_diagnostic, src,
676+
let rdr = new_reader(cm, diagnostic, src,
678677
codemap::new_filemap(path, 0u, 0u), itr);
679678
let comments: [cmnt] = [];
680679
let literals: [lit] = [];

branches/snap-stage3/src/comp/syntax/parse/parser.rs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ enum file_type { CRATE_FILE, SOURCE_FILE, }
2424
type parse_sess = @{
2525
cm: codemap::codemap,
2626
mutable next_id: node_id,
27-
span_diagnostic: diagnostic::span_handler,
27+
diagnostic: diagnostic::handler,
2828
// these two must be kept up to date
2929
mutable chpos: uint,
3030
mutable byte_pos: uint
@@ -78,13 +78,13 @@ impl parser for parser {
7878
ret self.buffer[distance - 1u].tok;
7979
}
8080
fn fatal(m: str) -> ! {
81-
self.sess.span_diagnostic.span_fatal(self.span, m)
81+
self.sess.diagnostic.span_fatal(self.span, m)
8282
}
8383
fn span_fatal(sp: span, m: str) -> ! {
84-
self.sess.span_diagnostic.span_fatal(sp, m)
84+
self.sess.diagnostic.span_fatal(sp, m)
8585
}
8686
fn warn(m: str) {
87-
self.sess.span_diagnostic.span_warn(self.span, m)
87+
self.sess.diagnostic.span_warn(self.span, m)
8888
}
8989
fn get_str(i: token::str_num) -> str {
9090
interner::get(*self.reader.interner, i)
@@ -101,14 +101,14 @@ fn new_parser_from_file(sess: parse_sess, cfg: ast::crate_cfg, path: str,
101101
src
102102
}
103103
result::err(e) {
104-
sess.span_diagnostic.handler().fatal(e)
104+
sess.diagnostic.fatal(e)
105105
}
106106
};
107107
let filemap = codemap::new_filemap(path, sess.chpos, sess.byte_pos);
108108
sess.cm.files += [filemap];
109109
let itr = @interner::mk(str::hash, str::eq);
110-
let rdr = lexer::new_reader(sess.cm, sess.span_diagnostic, src, filemap,
111-
itr);
110+
let rdr = lexer::new_reader(sess.cm, sess.diagnostic,
111+
src, filemap, itr);
112112
ret new_parser(sess, cfg, rdr, ftype);
113113
}
114114

@@ -118,8 +118,8 @@ fn new_parser_from_source_str(sess: parse_sess, cfg: ast::crate_cfg,
118118
let filemap = codemap::new_filemap(name, sess.chpos, sess.byte_pos);
119119
sess.cm.files += [filemap];
120120
let itr = @interner::mk(str::hash, str::eq);
121-
let rdr = lexer::new_reader(sess.cm, sess.span_diagnostic, source,
122-
filemap, itr);
121+
let rdr = lexer::new_reader(sess.cm, sess.diagnostic,
122+
source, filemap, itr);
123123
ret new_parser(sess, cfg, rdr, ftype);
124124
}
125125

@@ -2628,8 +2628,7 @@ fn parse_crate_from_file(input: str, cfg: ast::crate_cfg, sess: parse_sess) ->
26282628
} else if str::ends_with(input, ".rs") {
26292629
parse_crate_from_source_file(input, cfg, sess)
26302630
} else {
2631-
sess.span_diagnostic.handler().fatal("unknown input file type: " +
2632-
input)
2631+
sess.diagnostic.fatal("unknown input file type: " + input)
26332632
}
26342633
}
26352634

0 commit comments

Comments
 (0)