Skip to content

Commit fe9d07d

Browse files
committed
rustc: "as Trait" can now be written "as @trait".
There is also code for ~Trait and &Trait, but these are currently (incorrectly) synonyms for "as @trait" and "as &Trait".
1 parent fd0f616 commit fe9d07d

27 files changed

+125
-83
lines changed

src/fuzzer/fuzzer.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ fn check_variants_T<T: copy>(
264264
@as_str(|a|pprust::print_crate(
265265
codemap,
266266
// Assuming we're not generating any token_trees
267-
@syntax::util::interner::mk::<@~str>(
267+
syntax::util::interner::mk::<@~str>(
268268
|x| str::hash(*x), |x,y| str::eq(*x,*y)),
269269
diagnostic::mk_span_handler(handler, codemap),
270270
crate2,
@@ -427,7 +427,7 @@ fn parse_and_print(code: @~str) -> ~str {
427427
pprust::print_crate(
428428
sess.cm,
429429
// Assuming there are no token_trees
430-
@syntax::util::interner::mk::<@~str>(
430+
syntax::util::interner::mk::<@~str>(
431431
|x| str::hash(*x), |x,y| str::eq(*x,*y)),
432432
sess.span_diagnostic,
433433
crate,
@@ -576,7 +576,7 @@ fn check_variants(files: ~[~str], cx: context) {
576576
as_str(|a| pprust::print_crate(
577577
sess.cm,
578578
// Assuming no token_trees
579-
@syntax::util::interner::mk::<@~str>(
579+
syntax::util::interner::mk::<@~str>(
580580
|x| str::hash(*x), |x,y| str::eq(*x,*y)),
581581
sess.span_diagnostic,
582582
crate,

src/libsyntax/ext/tt/earley_parser.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ fn parse(sess: parse_sess, cfg: ast::crate_cfg, rdr: reader, ms: ~[matcher])
284284
nts, next_eis.len()});
285285
} else if (bb_eis.len() == 0u && next_eis.len() == 0u) {
286286
return failure(sp, ~"No rules expected the token "
287-
+ to_str(*rdr.interner(), tok));
287+
+ to_str(rdr.interner(), tok));
288288
} else if (next_eis.len() > 0u) {
289289
/* Now process the next token */
290290
while(next_eis.len() > 0u) {
@@ -334,7 +334,7 @@ fn parse_nt(p: parser, name: ~str) -> nonterminal {
334334
~"ident" => match copy p.token {
335335
token::IDENT(sn,b) => { p.bump(); token::nt_ident(sn,b) }
336336
_ => p.fatal(~"expected ident, found "
337-
+ token::to_str(*p.reader.interner(), copy p.token))
337+
+ token::to_str(p.reader.interner(), copy p.token))
338338
},
339339
~"path" => token::nt_path(p.parse_path_with_tps(false)),
340340
~"tt" => {

src/libsyntax/ext/tt/transcribe.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ type tt_frame = @{
2525

2626
type tt_reader = @{
2727
sp_diag: span_handler,
28-
interner: @interner<@~str>,
28+
interner: interner<@~str>,
2929
mut cur: tt_frame,
3030
/* for MBE-style macro transcription */
3131
interpolations: std::map::hashmap<ident, @named_match>,
@@ -39,7 +39,7 @@ type tt_reader = @{
3939
/** This can do Macro-By-Example transcription. On the other hand, if
4040
* `src` contains no `tt_seq`s and `tt_nonterminal`s, `interp` can (and
4141
* should) be none. */
42-
fn new_tt_reader(sp_diag: span_handler, itr: @interner<@~str>,
42+
fn new_tt_reader(sp_diag: span_handler, itr: interner<@~str>,
4343
interp: option<std::map::hashmap<ident,@named_match>>,
4444
src: ~[ast::token_tree])
4545
-> tt_reader {
@@ -237,4 +237,4 @@ fn tt_next_token(&&r: tt_reader) -> {tok: token, sp: span} {
237237
}
238238
}
239239

240-
}
240+
}

src/libsyntax/parse.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ type parse_sess = @{
2424
cm: codemap::codemap,
2525
mut next_id: node_id,
2626
span_diagnostic: span_handler,
27-
interner: @interner::interner<@~str>,
27+
interner: interner::interner<@~str>,
2828
// these two must be kept up to date
2929
mut chpos: uint,
3030
mut byte_pos: uint
@@ -35,7 +35,7 @@ fn new_parse_sess(demitter: option<emitter>) -> parse_sess {
3535
return @{cm: cm,
3636
mut next_id: 1,
3737
span_diagnostic: mk_span_handler(mk_handler(demitter), cm),
38-
interner: @interner::mk::<@~str>(|x| str::hash(*x),
38+
interner: interner::mk::<@~str>(|x| str::hash(*x),
3939
|x,y| str::eq(*x, *y)),
4040
mut chpos: 0u, mut byte_pos: 0u};
4141
}
@@ -45,7 +45,7 @@ fn new_parse_sess_special_handler(sh: span_handler, cm: codemap::codemap)
4545
return @{cm: cm,
4646
mut next_id: 1,
4747
span_diagnostic: sh,
48-
interner: @interner::mk::<@~str>(|x| str::hash(*x),
48+
interner: interner::mk::<@~str>(|x| str::hash(*x),
4949
|x,y| str::eq(*x, *y)),
5050
mut chpos: 0u, mut byte_pos: 0u};
5151
}

src/libsyntax/parse/comments.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ fn gather_comments_and_literals(span_diagnostic: diagnostic::span_handler,
276276
srdr: io::Reader) ->
277277
{cmnts: ~[cmnt], lits: ~[lit]} {
278278
let src = @str::from_bytes(srdr.read_whole_stream());
279-
let itr = @interner::mk::<@~str>(
279+
let itr = interner::mk::<@~str>(
280280
|x| str::hash(*x),
281281
|x,y| str::eq(*x, *y)
282282
);
@@ -311,7 +311,7 @@ fn gather_comments_and_literals(span_diagnostic: diagnostic::span_handler,
311311
vec::push(literals, {lit: s, pos: sp.lo});
312312
log(debug, ~"tok lit: " + s);
313313
} else {
314-
log(debug, ~"tok: " + token::to_str(*rdr.interner, tok));
314+
log(debug, ~"tok: " + token::to_str(rdr.interner, tok));
315315
}
316316
first_read = false;
317317
}

src/libsyntax/parse/common.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ fn seq_sep_none() -> seq_sep {
1919
}
2020

2121
fn token_to_str(reader: reader, ++token: token::token) -> ~str {
22-
token::to_str(*reader.interner(), token)
22+
token::to_str(reader.interner(), token)
2323
}
2424

2525
trait parser_common {

src/libsyntax/parse/lexer.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ trait reader {
1414
fn next_token() -> {tok: token::token, sp: span};
1515
fn fatal(~str) -> !;
1616
fn span_diag() -> span_handler;
17-
pure fn interner() -> @interner<@~str>;
17+
pure fn interner() -> interner<@~str>;
1818
fn peek() -> {tok: token::token, sp: span};
1919
fn dup() -> reader;
2020
}
@@ -27,15 +27,15 @@ type string_reader = @{
2727
mut curr: char,
2828
mut chpos: uint,
2929
filemap: codemap::filemap,
30-
interner: @interner<@~str>,
30+
interner: interner<@~str>,
3131
/* cached: */
3232
mut peek_tok: token::token,
3333
mut peek_span: span
3434
};
3535

3636
fn new_string_reader(span_diagnostic: span_handler,
3737
filemap: codemap::filemap,
38-
itr: @interner<@~str>) -> string_reader {
38+
itr: interner<@~str>) -> string_reader {
3939
let r = new_low_level_string_reader(span_diagnostic, filemap, itr);
4040
string_advance_token(r); /* fill in peek_* */
4141
return r;
@@ -44,7 +44,7 @@ fn new_string_reader(span_diagnostic: span_handler,
4444
/* For comments.rs, which hackily pokes into 'pos' and 'curr' */
4545
fn new_low_level_string_reader(span_diagnostic: span_handler,
4646
filemap: codemap::filemap,
47-
itr: @interner<@~str>)
47+
itr: interner<@~str>)
4848
-> string_reader {
4949
let r = @{span_diagnostic: span_diagnostic, src: filemap.src,
5050
mut col: 0u, mut pos: 0u, mut curr: -1 as char,
@@ -79,7 +79,7 @@ impl string_reader: reader {
7979
self.span_diagnostic.span_fatal(copy self.peek_span, m)
8080
}
8181
fn span_diag() -> span_handler { self.span_diagnostic }
82-
pure fn interner() -> @interner<@~str> { self.interner }
82+
pure fn interner() -> interner<@~str> { self.interner }
8383
fn peek() -> {tok: token::token, sp: span} {
8484
{tok: self.peek_tok, sp: self.peek_span}
8585
}
@@ -101,7 +101,7 @@ impl tt_reader: reader {
101101
self.sp_diag.span_fatal(copy self.cur_span, m);
102102
}
103103
fn span_diag() -> span_handler { self.sp_diag }
104-
pure fn interner() -> @interner<@~str> { self.interner }
104+
pure fn interner() -> interner<@~str> { self.interner }
105105
fn peek() -> {tok: token::token, sp: span} {
106106
{ tok: self.cur_tok, sp: self.cur_span }
107107
}
@@ -219,7 +219,7 @@ fn consume_any_line_comment(rdr: string_reader)
219219
bump(rdr);
220220
}
221221
return some({
222-
tok: token::DOC_COMMENT((*rdr.interner).intern(@acc)),
222+
tok: token::DOC_COMMENT(rdr.interner.intern(@acc)),
223223
sp: ast_util::mk_sp(start_chpos, rdr.chpos)
224224
});
225225
} else {
@@ -264,7 +264,7 @@ fn consume_block_comment(rdr: string_reader)
264264
bump(rdr);
265265
bump(rdr);
266266
return some({
267-
tok: token::DOC_COMMENT((*rdr.interner).intern(@acc)),
267+
tok: token::DOC_COMMENT(rdr.interner.intern(@acc)),
268268
sp: ast_util::mk_sp(start_chpos, rdr.chpos)
269269
});
270270
}
@@ -398,12 +398,12 @@ fn scan_number(c: char, rdr: string_reader) -> token::token {
398398
if c == '3' && n == '2' {
399399
bump(rdr);
400400
bump(rdr);
401-
return token::LIT_FLOAT((*rdr.interner).intern(@num_str),
401+
return token::LIT_FLOAT(rdr.interner.intern(@num_str),
402402
ast::ty_f32);
403403
} else if c == '6' && n == '4' {
404404
bump(rdr);
405405
bump(rdr);
406-
return token::LIT_FLOAT((*rdr.interner).intern(@num_str),
406+
return token::LIT_FLOAT(rdr.interner.intern(@num_str),
407407
ast::ty_f64);
408408
/* FIXME (#2252): if this is out of range for either a
409409
32-bit or 64-bit float, it won't be noticed till the
@@ -413,7 +413,7 @@ fn scan_number(c: char, rdr: string_reader) -> token::token {
413413
}
414414
}
415415
if is_float {
416-
return token::LIT_FLOAT((*rdr.interner).intern(@num_str), ast::ty_f);
416+
return token::LIT_FLOAT(rdr.interner.intern(@num_str), ast::ty_f);
417417
} else {
418418
if str::len(num_str) == 0u {
419419
rdr.fatal(~"no valid digits found for number");
@@ -461,7 +461,7 @@ fn next_token_inner(rdr: string_reader) -> token::token {
461461
let is_mod_name = c == ':' && nextch(rdr) == ':';
462462

463463
// FIXME: perform NFKC normalization here. (Issue #2253)
464-
return token::IDENT((*rdr.interner).intern(@accum_str), is_mod_name);
464+
return token::IDENT(rdr.interner.intern(@accum_str), is_mod_name);
465465
}
466466
if is_dec_digit(c) {
467467
return scan_number(c, rdr);
@@ -630,7 +630,7 @@ fn next_token_inner(rdr: string_reader) -> token::token {
630630
}
631631
}
632632
bump(rdr);
633-
return token::LIT_STR((*rdr.interner).intern(@accum_str));
633+
return token::LIT_STR(rdr.interner.intern(@accum_str));
634634
}
635635
'-' => {
636636
if nextch(rdr) == '>' {

src/libsyntax/parse/parser.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ class parser {
263263
self.sess.span_diagnostic.span_warn(copy self.span, m)
264264
}
265265
pure fn get_str(i: token::str_num) -> @~str {
266-
(*self.reader.interner()).get(i)
266+
self.reader.interner().get(i)
267267
}
268268
fn get_id() -> node_id { next_node_id(self.sess) }
269269

src/libsyntax/print/pprust.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import dvec::{DVec, dvec};
1111
import parse::classify::*;
1212
import util::interner;
1313

14-
type ident_interner = @interner::interner<@~str>;
14+
type ident_interner = interner::interner<@~str>;
1515

1616
// The ps is stored here to prevent recursive type.
1717
enum ann_node {
@@ -30,7 +30,7 @@ fn no_ann() -> pp_ann {
3030
type ps =
3131
@{s: pp::printer,
3232
cm: option<codemap>,
33-
intr: @interner::interner<@~str>,
33+
intr: interner::interner<@~str>,
3434
comments: option<~[comments::cmnt]>,
3535
literals: option<~[comments::lit]>,
3636
mut cur_cmnt: uint,
@@ -51,8 +51,8 @@ fn end(s: ps) {
5151
fn rust_printer(writer: io::Writer) -> ps {
5252
return @{s: pp::mk_printer(writer, default_columns),
5353
cm: none::<codemap>,
54-
intr: @interner::mk::<@~str>(|x| str::hash(*x),
55-
|x,y| str::eq(*x, *y)),
54+
intr: interner::mk::<@~str>(|x| str::hash(*x),
55+
|x,y| str::eq(*x, *y)),
5656
comments: none::<~[comments::cmnt]>,
5757
literals: none::<~[comments::lit]>,
5858
mut cur_cmnt: 0u,
@@ -81,7 +81,7 @@ const default_columns: uint = 78u;
8181
// Requires you to pass an input filename and reader so that
8282
// it can scan the input text for comments and literals to
8383
// copy forward.
84-
fn print_crate(cm: codemap, intr: @interner::interner<@~str>,
84+
fn print_crate(cm: codemap, intr: interner::interner<@~str>,
8585
span_diagnostic: diagnostic::span_handler,
8686
crate: @ast::crate, filename: ~str, in: io::Reader,
8787
out: io::Writer, ann: pp_ann, is_expanded: bool) {
@@ -690,14 +690,14 @@ fn print_tt(s: ps, tt: ast::token_tree) {
690690
}
691691
_ => { s.s.token_tree_last_was_ident = false; }
692692
}
693-
word(s.s, parse::token::to_str(*s.intr, tk));
693+
word(s.s, parse::token::to_str(s.intr, tk));
694694
}
695695
ast::tt_seq(_, tts, sep, zerok) => {
696696
word(s.s, ~"$(");
697697
for tts.each() |tt_elt| { print_tt(s, tt_elt); }
698698
word(s.s, ~")");
699699
match sep {
700-
some(tk) => word(s.s, parse::token::to_str(*s.intr, tk)),
700+
some(tk) => word(s.s, parse::token::to_str(s.intr, tk)),
701701
none => ()
702702
}
703703
word(s.s, if zerok { ~"*" } else { ~"+" });

src/rustc/metadata/tydecode.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,9 @@ fn parse_ty(st: @pstate, conv: conv_did) -> ty::t {
212212
assert next(st) == '[';
213213
let def = parse_def(st, conv);
214214
let substs = parse_substs(st, conv);
215+
let vstore = parse_vstore(st);
215216
assert next(st) == ']';
216-
return ty::mk_trait(st.tcx, def, substs);
217+
return ty::mk_trait(st.tcx, def, substs, vstore);
217218
}
218219
'p' => {
219220
let did = parse_def(st, conv);

0 commit comments

Comments
 (0)