Skip to content

Commit f093d37

Browse files
committed
rustc: Implement a new resolve pass behind a compile flag
1 parent 0b1edb7 commit f093d37

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+4336
-163
lines changed

src/libcore/comm.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ io::println(comm::recv(p));
2727
import either::either;
2828
import libc::size_t;
2929

30-
export port::{};
31-
export chan::{};
30+
export port;
31+
export chan;
3232
export send;
3333
export recv;
3434
export peek;

src/libcore/dvec.rs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ impl extensions<A:copy> for dvec<A> {
200200
}
201201
}
202202

203+
/*
203204
#[doc = "
204205
Append all elements of an iterable.
205206
@@ -222,6 +223,7 @@ impl extensions<A:copy> for dvec<A> {
222223
v
223224
}
224225
}
226+
*/
225227

226228
#[doc = "
227229
Gets a copy of the current contents.
@@ -267,7 +269,28 @@ impl extensions<A:copy> for dvec<A> {
267269
}
268270

269271
#[doc = "Returns the last element, failing if the vector is empty"]
272+
#[inline(always)]
270273
fn last() -> A {
271-
self.get_elt(self.len() - 1u)
274+
self.check_not_borrowed();
275+
276+
let length = self.len();
277+
if length == 0u {
278+
fail "attempt to retrieve the last element of an empty vector";
279+
}
280+
281+
ret self.data[length - 1u];
282+
}
283+
284+
#[doc="Iterates over the elements in reverse order"]
285+
#[inline(always)]
286+
fn reach(f: fn(A) -> bool) {
287+
let length = self.len();
288+
let mut i = 0u;
289+
while i < length {
290+
if !f(self.get_elt(i)) {
291+
break;
292+
}
293+
i += 1u;
294+
}
272295
}
273296
}

src/libcore/future.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ io::println(#fmt(\"fib(5000) = %?\", delayed_fib.get()))
1414
import either::either;
1515

1616
export future;
17-
export future::{};
1817
export from_value;
1918
export from_port;
2019
export from_fn;

src/libcore/newcomm.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ avoid needing a single global lock."]
66
import arc::methods;
77
import dvec::dvec;
88
import dvec::{extensions};
9+
import sys::methods;
910

1011
export port;
1112
export chan;

src/libcore/task.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,15 @@ spawn {||
2424

2525
import result::result;
2626
import dvec::extensions;
27+
import dvec_iter::extensions;
2728

2829
export task;
2930
export task_result;
3031
export notification;
3132
export sched_mode;
3233
export sched_opts;
3334
export task_opts;
34-
export builder::{};
35+
export builder;
3536

3637
export default_task_opts;
3738
export get_opts;

src/libstd/json.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import io;
88
import io::{reader_util, writer_util};
99
import map;
1010
import map::hashmap;
11+
import core::vec::extensions;
1112

1213
export json;
1314
export error;

src/libstd/list.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,11 @@ pure fn append<T: copy>(l: @list<T>, m: @list<T>) -> @list<T> {
102102
}
103103
}
104104

105+
#[doc = "Push an element to the front of a list"]
106+
fn push<T: copy>(&l: list<T>, v: T) {
107+
l = cons(v, @l);
108+
}
109+
105110
#[doc = "Iterate over a list"]
106111
fn iter<T>(l: @list<T>, f: fn(T)) {
107112
let mut cur = l;

src/libstd/par.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import comm::send;
44
import comm::recv;
55
import future_spawn = future::spawn;
66
import future::future;
7+
import core::vec::extensions;
78

89
export map, mapi, alli, any, mapi_factory;
910

src/libstd/tempfile.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import core::option;
44
import option::{none, some};
55
import rand;
6+
import core::rand::extensions;
67

78
fn mkdtemp(prefix: str, suffix: str) -> option<str> {
89
let r = rand::rng();

src/libstd/uv_iotask.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ The I/O task runs in its own single-threaded scheduler. By using the
77
88
"];
99

10-
export iotask::{};
10+
export iotask;
1111
export spawn_iotask;
1212
export interact;
1313
export exit;

src/libsyntax/ast_util.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -572,6 +572,13 @@ fn walk_pat(pat: @pat, it: fn(@pat)) {
572572
}
573573
}
574574

575+
fn view_path_id(p: @view_path) -> node_id {
576+
alt p.node {
577+
view_path_simple(_, _, id) | view_path_glob(_, id) |
578+
view_path_list(_, _, id) { id }
579+
}
580+
}
581+
575582
// Local Variables:
576583
// mode: rust
577584
// fill-column: 78;

src/libsyntax/codemap.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ export filename;
44
export filemap;
55
export span;
66
export file_substr;
7+
export fss_none;
8+
export fss_internal;
9+
export fss_external;
710
export codemap;
811
export expn_info;
912
export expn_info_;

src/libsyntax/parse.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ import common::parser_common;
1818
import ast::node_id;
1919
import util::interner;
2020
// FIXME (#1935): resolve badness
21-
import lexer::*;//{string_reader_as_reader, tt_reader_as_reader,
22-
//reader, string_reader, tt_reader};
21+
import lexer::{string_reader_as_reader, tt_reader_as_reader, reader,
22+
string_reader, tt_reader};
2323
import diagnostic::{span_handler, mk_span_handler, mk_handler, emitter};
2424

2525
type parse_sess = @{

src/libsyntax/parse/classify.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
/*
22
Predicates on exprs and stmts that the pretty-printer and parser use
33
*/
4-
import ast_util::*;
4+
5+
import ast_util::operator_prec;
56

67
fn expr_requires_semi_to_be_stmt(e: @ast::expr) -> bool {
78
alt e.node {

src/libsyntax/parse/parser.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,21 @@ import token::{can_begin_expr, is_ident, is_plain_ident};
55
import codemap::{span,fss_none};
66
import util::interner;
77
import ast_util::{spanned, respan, mk_sp, ident_to_path, operator_prec};
8-
import ast::*;
98
import lexer::reader;
109
import prec::{as_prec, token_to_binop};
1110
import attr::parser_attr;
1211
import common::{seq_sep_trailing_disallowed, seq_sep_trailing_allowed,
13-
seq_sep_none, token_to_str};
14-
import common::*;//{parser_common};
12+
seq_sep_none, token_to_str, parser_common};
1513
import dvec::{dvec, extensions};
1614
import vec::{push};
15+
import ast::*;
1716

1817
export file_type;
1918
export parser;
19+
export parse_expr;
20+
export parse_pat;
21+
export CRATE_FILE;
22+
export SOURCE_FILE;
2023

2124
// FIXME (#1893): #ast expects to find this here but it's actually
2225
// defined in `parse` Fixing this will be easier when we have export

src/libsyntax/print/pprust.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import parse::classify::*;
21
import parse::comments;
32
import parse::lexer;
43
import codemap::codemap;
@@ -8,6 +7,7 @@ import pp::{break_offset, word, printer,
87
import diagnostic;
98
import ast_util::operator_prec;
109
import dvec::{dvec, extensions};
10+
import parse::classify::*;
1111

1212
// The ps is stored here to prevent recursive type.
1313
enum ann_node {

0 commit comments

Comments
 (0)