Skip to content

Commit 48c7372

Browse files
committed
---
yaml --- r: 62513 b: refs/heads/snap-stage3 c: 91d3e7f h: refs/heads/master i: 62511: b9afd50 v: v3
1 parent 1dcb8e6 commit 48c7372

File tree

8 files changed

+48
-215
lines changed

8 files changed

+48
-215
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: 2d28d645422c1617be58c8ca7ad9a457264ca850
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 808c5b8d4e479b5e0fd336f8290fda2f0c429257
4+
refs/heads/snap-stage3: 91d3e7f1a0757bf314ab3a4c4be8f910e2355d35
55
refs/heads/try: 7b78b52e602bb3ea8174f9b2006bff3315f03ef9
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/src/libcore/io.rs

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,37 @@
1010

1111
/*!
1212
13-
Basic input/output
13+
The `io` module contains basic input and output routines.
14+
15+
A quick summary:
16+
17+
## `Reader` and `Writer` traits
18+
19+
These traits define the minimal set of methods that anything that can do
20+
input and output should implement.
21+
22+
## `ReaderUtil` and `WriterUtil` traits
23+
24+
Richer methods that allow you to do more. `Reader` only lets you read a certain
25+
number of bytes into a buffer, while `ReaderUtil` allows you to read a whole
26+
line, for example.
27+
28+
Generally, these richer methods are probably the ones you want to actually
29+
use in day-to-day Rust.
30+
31+
Furthermore, because there is an implementation of `ReaderUtil` for
32+
`<T: Reader>`, when your input or output code implements `Reader`, you get
33+
all of these methods for free.
34+
35+
## `print` and `println`
36+
37+
These very useful functions are defined here. You generally don't need to
38+
import them, though, as the prelude already does.
39+
40+
## `stdin`, `stdout`, and `stderr`
41+
42+
These functions return references to the classic three file descriptors. They
43+
implement `Reader` and `Writer`, where appropriate.
1444
1545
*/
1646

@@ -1010,16 +1040,6 @@ pub fn FILE_reader(f: *libc::FILE, cleanup: bool) -> @Reader {
10101040
// top-level functions that take a reader, or a set of default methods on
10111041
// reader (which can then be called reader)
10121042

1013-
/**
1014-
* Gives a `Reader` that allows you to read values from standard input.
1015-
*
1016-
* # Examples
1017-
* ~~~
1018-
* let stdin = core::io::stdin();
1019-
* let line = stdin.read_line();
1020-
* core::io::print(line);
1021-
* ~~~
1022-
*/
10231043
pub fn stdin() -> @Reader {
10241044
unsafe {
10251045
@rustrt::rust_get_stdin() as @Reader

branches/snap-stage3/src/librustc/lib/llvm.rs

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// except according to those terms.
1010

1111
use core::hashmap::HashMap;
12-
use core::libc::{c_uint, c_ushort};
12+
use core::libc::c_uint;
1313

1414
pub type Opcode = u32;
1515
pub type Bool = c_uint;
@@ -221,7 +221,7 @@ pub mod llvm {
221221
use super::{SectionIteratorRef, TargetDataRef, TypeKind, TypeRef, UseRef};
222222
use super::{ValueRef};
223223

224-
use core::libc::{c_char, c_int, c_longlong, c_ushort, c_uint, c_ulonglong};
224+
use core::libc::{c_char, c_int, c_longlong, c_uint, c_ulonglong};
225225

226226
#[link_args = "-Lrustllvm -lrustllvm"]
227227
#[link_name = "rustllvm"]
@@ -451,10 +451,6 @@ pub mod llvm {
451451
/* all zeroes */
452452
#[fast_ffi]
453453
pub unsafe fn LLVMConstAllOnes(Ty: TypeRef) -> ValueRef;
454-
#[fast_ffi]
455-
pub unsafe fn LLVMConstICmp(Pred: c_ushort, V1: ValueRef, V2: ValueRef) -> ValueRef;
456-
#[fast_ffi]
457-
pub unsafe fn LLVMConstFCmp(Pred: c_ushort, V1: ValueRef, V2: ValueRef) -> ValueRef;
458454
/* only for int/vector */
459455
#[fast_ffi]
460456
pub unsafe fn LLVMGetUndef(Ty: TypeRef) -> ValueRef;
@@ -1918,16 +1914,6 @@ pub fn SetLinkage(Global: ValueRef, Link: Linkage) {
19181914
}
19191915
}
19201916

1921-
pub fn ConstICmp(Pred: IntPredicate, V1: ValueRef, V2: ValueRef) -> ValueRef {
1922-
unsafe {
1923-
llvm::LLVMConstICmp(Pred as c_ushort, V1, V2)
1924-
}
1925-
}
1926-
pub fn ConstFCmp(Pred: RealPredicate, V1: ValueRef, V2: ValueRef) -> ValueRef {
1927-
unsafe {
1928-
llvm::LLVMConstFCmp(Pred as c_ushort, V1, V2)
1929-
}
1930-
}
19311917
/* Memory-managed object interface to type handles. */
19321918

19331919
pub struct TypeNames {

branches/snap-stage3/src/librustc/metadata/encoder.rs

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -386,20 +386,8 @@ fn encode_reexported_static_methods(ecx: @EncodeContext,
386386
match ecx.tcx.trait_methods_cache.find(&exp.def_id) {
387387
Some(methods) => {
388388
match ecx.tcx.items.find(&exp.def_id.node) {
389-
Some(&ast_map::node_item(item, path)) => {
390-
let original_name = ecx.tcx.sess.str_of(item.ident);
391-
392-
//
393-
// We don't need to reexport static methods on traits
394-
// declared in the same module as our `pub use ...` since
395-
// that's done when we encode the trait item.
396-
//
397-
// The only exception is when the reexport *changes* the
398-
// name e.g. `pub use Foo = self::Bar` -- we have
399-
// encoded metadata for static methods relative to Bar,
400-
// but not yet for Foo.
401-
//
402-
if mod_path != *path || *exp.name != *original_name {
389+
Some(&ast_map::node_item(_, path)) => {
390+
if mod_path != *path {
403391
for methods.each |&m| {
404392
if m.explicit_self == ast::sty_static {
405393
encode_reexported_static_method(ecx,

branches/snap-stage3/src/librustc/middle/trans/consts.rs

Lines changed: 12 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,8 @@
99
// except according to those terms.
1010

1111
use back::abi;
12-
use lib::llvm::{llvm, ConstFCmp, ConstICmp, SetLinkage, PrivateLinkage, ValueRef, TypeRef, Bool,
13-
True, False};
14-
use lib::llvm::{IntEQ, IntNE, IntUGT, IntUGE, IntULT, IntULE, IntSGT, IntSGE, IntSLT, IntSLE,
15-
RealOEQ, RealOGT, RealOGE, RealOLT, RealOLE, RealONE};
16-
12+
use lib::llvm::{llvm, SetLinkage, PrivateLinkage,
13+
ValueRef, TypeRef, Bool, True, False};
1714
use metadata::csearch;
1815
use middle::const_eval;
1916
use middle::trans::adt;
@@ -283,8 +280,8 @@ fn const_expr_unadjusted(cx: @CrateContext, e: @ast::expr) -> ValueRef {
283280
else if signed { llvm::LLVMConstSRem(te1, te2) }
284281
else { llvm::LLVMConstURem(te1, te2) }
285282
}
286-
ast::and => llvm::LLVMConstAnd(te1, te2),
287-
ast::or => llvm::LLVMConstOr(te1, te2),
283+
ast::and |
284+
ast::or => cx.sess.span_unimpl(e.span, "binop logic"),
288285
ast::bitxor => llvm::LLVMConstXor(te1, te2),
289286
ast::bitand => llvm::LLVMConstAnd(te1, te2),
290287
ast::bitor => llvm::LLVMConstOr(te1, te2),
@@ -293,44 +290,14 @@ fn const_expr_unadjusted(cx: @CrateContext, e: @ast::expr) -> ValueRef {
293290
if signed { llvm::LLVMConstAShr(te1, te2) }
294291
else { llvm::LLVMConstLShr(te1, te2) }
295292
}
296-
ast::eq => {
297-
if is_float { ConstFCmp(RealOEQ, te1, te2) }
298-
else { ConstICmp(IntEQ, te1, te2) }
299-
},
300-
ast::lt => {
301-
if is_float { ConstFCmp(RealOLT, te1, te2) }
302-
else {
303-
if signed { ConstICmp(IntSLT, te1, te2) }
304-
else { ConstICmp(IntULT, te1, te2) }
305-
}
306-
},
307-
ast::le => {
308-
if is_float { ConstFCmp(RealOLE, te1, te2) }
309-
else {
310-
if signed { ConstICmp(IntSLE, te1, te2) }
311-
else { ConstICmp(IntULE, te1, te2) }
312-
}
313-
},
314-
ast::ne => {
315-
if is_float { ConstFCmp(RealONE, te1, te2) }
316-
else { ConstICmp(IntNE, te1, te2) }
317-
},
318-
ast::ge => {
319-
if is_float { ConstFCmp(RealOGE, te1, te2) }
320-
else {
321-
if signed { ConstICmp(IntSGE, te1, te2) }
322-
else { ConstICmp(IntUGE, te1, te2) }
323-
}
324-
},
325-
ast::gt => {
326-
if is_float { ConstFCmp(RealOGT, te1, te2) }
327-
else {
328-
if signed { ConstICmp(IntSGT, te1, te2) }
329-
else { ConstICmp(IntUGT, te1, te2) }
330-
}
331-
},
332-
};
333-
},
293+
ast::eq |
294+
ast::lt |
295+
ast::le |
296+
ast::ne |
297+
ast::ge |
298+
ast::gt => cx.sess.span_unimpl(e.span, "binop comparator")
299+
}
300+
}
334301
ast::expr_unary(u, e) => {
335302
let te = const_expr(cx, e);
336303
let ty = ty::expr_ty(cx.tcx, e);

branches/snap-stage3/src/test/auxiliary/mod_trait_with_static_methods_lib.rs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,6 @@
99
// except according to those terms.
1010

1111
pub use sub_foo::Foo;
12-
pub use Baz = self::Bar;
13-
14-
pub trait Bar {
15-
pub fn bar() -> Self;
16-
}
17-
18-
impl Bar for int {
19-
pub fn bar() -> int { 84 }
20-
}
2112

2213
pub mod sub_foo {
2314
pub trait Foo {
@@ -27,5 +18,4 @@ pub mod sub_foo {
2718
impl Foo for int {
2819
pub fn foo() -> int { 42 }
2920
}
30-
3121
}

branches/snap-stage3/src/test/run-pass/const-binops.rs

Lines changed: 0 additions & 116 deletions
This file was deleted.

branches/snap-stage3/src/test/run-pass/trait_with_static_methods_cross_crate.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@
1313
extern mod mod_trait_with_static_methods_lib;
1414

1515
use mod_trait_with_static_methods_lib::Foo;
16-
use mod_trait_with_static_methods_lib::Baz;
1716

1817
pub fn main() {
1918
assert_eq!(42, Foo::foo());
20-
assert_eq!(84, Baz::bar());
2119
}

0 commit comments

Comments
 (0)