Skip to content

Commit 7555e57

Browse files
committed
---
yaml --- r: 140744 b: refs/heads/try2 c: 2a9a4a8 h: refs/heads/master v: v3
1 parent 6efd1da commit 7555e57

File tree

9 files changed

+72
-89
lines changed

9 files changed

+72
-89
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
55
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: 8291e36f184b2a72eaae8fa745759a09c17c8db8
8+
refs/heads/try2: 2a9a4a81e15fbd8146ce8fe5842c46ad615cbcf6
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/src/driver/driver.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,6 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
#[no_core];
12-
extern mod core(vers = "0.7-pre");
13-
1411
#[cfg(rustpkg)]
1512
extern mod this(name = "rustpkg", vers = "0.7-pre");
1613

branches/try2/src/libcore/num/f32.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -578,7 +578,10 @@ impl Float for f32 {
578578
/// Returns `true` if the number is neither zero, infinite, subnormal or NaN
579579
#[inline(always)]
580580
fn is_normal(&self) -> bool {
581-
self.classify() == FPNormal
581+
match self.classify() {
582+
FPNormal => true,
583+
_ => false,
584+
}
582585
}
583586

584587
/// Returns the floating point category of the number. If only one property is going to
@@ -588,14 +591,14 @@ impl Float for f32 {
588591
static MAN_MASK: u32 = 0x007fffff;
589592

590593
match (
591-
unsafe { ::cast::transmute::<f32,u32>(*self) } & MAN_MASK,
592594
unsafe { ::cast::transmute::<f32,u32>(*self) } & EXP_MASK,
595+
unsafe { ::cast::transmute::<f32,u32>(*self) } & MAN_MASK
593596
) {
594-
(0, 0) => FPZero,
595-
(_, 0) => FPSubnormal,
596-
(0, EXP_MASK) => FPInfinite,
597-
(_, EXP_MASK) => FPNaN,
598-
_ => FPNormal,
597+
(EXP_MASK, 0) => FPInfinite,
598+
(EXP_MASK, _) => FPNaN,
599+
(exp, _) if exp != 0 => FPNormal,
600+
_ if self.is_zero() => FPZero,
601+
_ => FPSubnormal,
599602
}
600603
}
601604

branches/try2/src/libcore/num/f64.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -621,7 +621,10 @@ impl Float for f64 {
621621
/// Returns `true` if the number is neither zero, infinite, subnormal or NaN
622622
#[inline(always)]
623623
fn is_normal(&self) -> bool {
624-
self.classify() == FPNormal
624+
match self.classify() {
625+
FPNormal => true,
626+
_ => false,
627+
}
625628
}
626629

627630
/// Returns the floating point category of the number. If only one property is going to
@@ -631,14 +634,14 @@ impl Float for f64 {
631634
static MAN_MASK: u64 = 0x000fffffffffffff;
632635

633636
match (
634-
unsafe { ::cast::transmute::<f64,u64>(*self) } & MAN_MASK,
635637
unsafe { ::cast::transmute::<f64,u64>(*self) } & EXP_MASK,
638+
unsafe { ::cast::transmute::<f64,u64>(*self) } & MAN_MASK
636639
) {
637-
(0, 0) => FPZero,
638-
(_, 0) => FPSubnormal,
639-
(0, EXP_MASK) => FPInfinite,
640-
(_, EXP_MASK) => FPNaN,
641-
_ => FPNormal,
640+
(EXP_MASK, 0) => FPInfinite,
641+
(EXP_MASK, _) => FPNaN,
642+
(exp, _) if exp != 0 => FPNormal,
643+
_ if self.is_zero() => FPZero,
644+
_ => FPSubnormal,
642645
}
643646
}
644647

branches/try2/src/libcore/util.rs

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright 2012-2013 The Rust Project Developers. See the COPYRIGHT
1+
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
22
// file at the top-level directory of this distribution and at
33
// http://rust-lang.org/COPYRIGHT.
44
//
@@ -132,20 +132,6 @@ impl Drop for NonCopyable {
132132

133133
pub fn NonCopyable() -> NonCopyable { NonCopyable { i: () } }
134134

135-
136-
/// A type with no inhabitants
137-
pub enum Void { }
138-
139-
pub impl Void {
140-
/// A utility function for ignoring this uninhabited type
141-
fn uninhabited(&self) -> ! {
142-
match *self {
143-
// Nothing to match on
144-
}
145-
}
146-
}
147-
148-
149135
/**
150136
A utility function for indicating unreachable code. It will fail if
151137
executed. This is occasionally useful to put after loops that never

branches/try2/src/librust/rust.rc

Lines changed: 45 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@
2020
#[license = "MIT/ASL2"];
2121
#[crate_type = "lib"];
2222

23+
extern mod rustpkg(vers = "0.7-pre");
24+
extern mod rustdoc(vers = "0.7-pre");
25+
extern mod rusti(vers = "0.7-pre");
26+
extern mod rustc(vers = "0.7-pre");
27+
2328
use core::run;
2429

2530
enum ValidUsage {
@@ -36,13 +41,13 @@ impl ValidUsage {
3641
}
3742

3843
enum Action<'self> {
39-
Exec(&'self str),
40-
Call(&'self fn(args: &[~str]) -> ValidUsage)
44+
Call(&'self fn(args: &[~str]) -> ValidUsage),
45+
CallMain(&'static str, &'self fn()),
4146
}
4247

4348
enum UsageSource<'self> {
44-
UsgExec(&'self str),
45-
UsgStr(&'self str)
49+
UsgStr(&'self str),
50+
UsgCall(&'self fn()),
4651
}
4752

4853
struct Command<'self> {
@@ -55,9 +60,9 @@ struct Command<'self> {
5560
static commands: &'static [Command<'static>] = &[
5661
Command{
5762
cmd: "build",
58-
action: Exec("rustc"),
63+
action: CallMain("rustc", rustc::main),
5964
usage_line: "compile rust source files",
60-
usage_full: UsgExec("rustc --help")
65+
usage_full: UsgCall(rustc_help),
6166
},
6267
Command{
6368
cmd: "run",
@@ -81,21 +86,21 @@ static commands: &'static [Command<'static>] = &[
8186
},
8287
Command{
8388
cmd: "doc",
84-
action: Exec("rustdoc"),
89+
action: CallMain("rustdoc", rustdoc::main),
8590
usage_line: "generate documentation from doc comments",
86-
usage_full: UsgExec("rustdoc --help")
91+
usage_full: UsgCall(rustdoc::config::usage),
8792
},
8893
Command{
8994
cmd: "pkg",
90-
action: Exec("rustpkg"),
95+
action: CallMain("rustpkg", rustpkg::main),
9196
usage_line: "download, build, install rust packages",
92-
usage_full: UsgExec("rustpkg --help")
97+
usage_full: UsgCall(rustpkg::usage::general),
9398
},
9499
Command{
95100
cmd: "sketch",
96-
action: Exec("rusti"),
101+
action: CallMain("rusti", rusti::main),
97102
usage_line: "run a rust interpreter",
98-
usage_full: UsgStr("\nUsage:\trusti")
103+
usage_full: UsgStr("\nUsage:\trusti"),
99104
},
100105
Command{
101106
cmd: "help",
@@ -109,6 +114,10 @@ static commands: &'static [Command<'static>] = &[
109114
}
110115
];
111116

117+
fn rustc_help() {
118+
rustc::usage(copy os::args()[0])
119+
}
120+
112121
fn find_cmd(command_string: &str) -> Option<Command> {
113122
do commands.find |command| {
114123
command.cmd == command_string
@@ -120,20 +129,14 @@ fn cmd_help(args: &[~str]) -> ValidUsage {
120129
match find_cmd(command_string) {
121130
Some(command) => {
122131
match command.action {
123-
Exec(s) => io::println(fmt!(
132+
CallMain(prog, _) => io::println(fmt!(
124133
"The %s command is an alias for the %s program.",
125-
command.cmd, s)),
134+
command.cmd, prog)),
126135
_ => ()
127136
}
128137
match command.usage_full {
129-
UsgStr(msg) => io::println(fmt!("%s\n", msg)),
130-
UsgExec(commandline) => {
131-
let mut words = ~[];
132-
for str::each_word(commandline) |word| { words.push(word.to_owned()) }
133-
let words = words;
134-
let (prog, args) = (words.head(), words.tail());
135-
run::run_program(*prog, args);
136-
}
138+
UsgStr(msg) => io::println(fmt!("%s\n", msg)),
139+
UsgCall(f) => f(),
137140
}
138141
Valid
139142
},
@@ -151,50 +154,40 @@ fn cmd_test(args: &[~str]) -> ValidUsage {
151154
match args {
152155
[filename] => {
153156
let test_exec = Path(filename).filestem().unwrap() + "test~";
154-
if run::run_program("rustc", [
155-
~"--test",
156-
filename.to_owned(),
157-
~"-o",
158-
test_exec.to_owned()
159-
]) == 0 {
160-
run::run_program(~"./" + test_exec, []);
161-
}
157+
invoke("rustc", &[~"--test", filename.to_owned(),
158+
~"-o", test_exec.to_owned()], rustc::main);
159+
run::run_program(~"./" + test_exec, []);
162160
Valid
163161
}
164-
_ => Invalid
162+
_ => Invalid
165163
}
166164
}
167165

168166
fn cmd_run(args: &[~str]) -> ValidUsage {
169167
match args {
170168
[filename, ..prog_args] => {
171169
let exec = Path(filename).filestem().unwrap() + "~";
172-
if run::run_program("rustc", [
173-
filename.to_owned(),
174-
~"-o",
175-
exec.to_owned()
176-
]) == 0 {
177-
run::run_program(~"./"+exec, prog_args);
178-
}
170+
invoke("rustc", &[filename.to_owned(), ~"-o", exec.to_owned()],
171+
rustc::main);
172+
run::run_program(~"./"+exec, prog_args);
179173
Valid
180174
}
181-
_ => Invalid
175+
_ => Invalid
182176
}
183177
}
184178

179+
fn invoke(prog: &str, args: &[~str], f: &fn()) {
180+
let mut osargs = ~[prog.to_owned()];
181+
osargs.push_all_move(args.to_owned());
182+
os::set_args(osargs);
183+
f();
184+
}
185+
185186
fn do_command(command: &Command, args: &[~str]) -> ValidUsage {
186187
match command.action {
187188
Call(f) => f(args),
188-
Exec(commandline) => {
189-
let mut words = ~[];
190-
for str::each_word(commandline) |word| { words.push(word.to_owned()) }
191-
let words = words;
192-
let (prog, prog_args) = (words.head(), words.tail());
193-
let exitstatus = run::run_program(
194-
*prog,
195-
vec::append(vec::to_owned(prog_args), args)
196-
);
197-
os::set_exit_status(exitstatus);
189+
CallMain(prog, f) => {
190+
invoke(prog, args, f);
198191
Valid
199192
}
200193
}
@@ -232,11 +225,9 @@ pub fn main() {
232225
let args = os_args.tail();
233226

234227
if !args.is_empty() {
235-
for commands.each |command| {
236-
if command.cmd == *args.head() {
237-
let result = do_command(command, args.tail());
238-
if result.is_valid() { return; }
239-
}
228+
for find_cmd(*args.head()).each |command| {
229+
let result = do_command(command, args.tail());
230+
if result.is_valid() { return; }
240231
}
241232
}
242233

branches/try2/src/librustc/middle/resolve.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1909,6 +1909,7 @@ pub impl Resolver {
19091909
}
19101910

19111911
if self.unresolved_imports == prev_unresolved_imports {
1912+
self.session.err(~"failed to resolve imports");
19121913
self.report_unresolved_imports(module_root);
19131914
break;
19141915
}

branches/try2/src/librustpkg/rustpkg.rc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,13 @@ use context::Ctx;
4242

4343
mod conditions;
4444
mod context;
45-
mod usage;
4645
mod path_util;
4746
mod tests;
4847
mod util;
4948
mod workspace;
5049

50+
pub mod usage;
51+
5152
/// A PkgScript represents user-supplied custom logic for
5253
/// special build hooks. This only exists for packages with
5354
/// an explicit package script.

branches/try2/src/test/compile-fail/issue-2937.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
// option. This file may not be copied, modified, or distributed
99
// except according to those terms.
1010

11-
use x = m::f; //~ ERROR failed to resolve import
11+
// error-pattern:failed to resolve imports
12+
use x = m::f;
1213

1314
mod m {
1415
}

0 commit comments

Comments
 (0)