Skip to content

Commit 87a44de

Browse files
committed
---
yaml --- r: 73253 b: refs/heads/dist-snap c: b1e8056 h: refs/heads/master i: 73251: 5196c50 v: v3
1 parent 4ab3a3f commit 87a44de

File tree

5 files changed

+34
-82
lines changed

5 files changed

+34
-82
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c
99
refs/heads/incoming: b50030718cf28f2a5a81857a26b57442734fe854
10-
refs/heads/dist-snap: 9283dfe0b4dfbad176821ed93df6d519ad58423a
10+
refs/heads/dist-snap: b1e805694b914613ec30619764bec961e78bbbac
1111
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1212
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1313
refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0

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

Lines changed: 31 additions & 55 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 simplest amount 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+
amount 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
@@ -1571,57 +1591,13 @@ pub fn buffered_file_writer(path: &Path) -> Result<@Writer, ~str> {
15711591
// FIXME (#2004) it would be great if this could be a const
15721592
// FIXME (#2004) why are these different from the way stdin() is
15731593
// implemented?
1574-
1575-
1576-
/**
1577-
* Gives a `Writer` which allows you to write to the standard output.
1578-
*
1579-
* # Examples
1580-
* ~~~
1581-
* let stdout = core::io::stdout();
1582-
* stdout.write_str("hello\n");
1583-
* ~~~
1584-
*/
15851594
pub fn stdout() -> @Writer { fd_writer(libc::STDOUT_FILENO as c_int, false) }
1586-
1587-
/**
1588-
* Gives a `Writer` which allows you to write to standard error.
1589-
*
1590-
* # Examples
1591-
* ~~~
1592-
* let stderr = core::io::stderr();
1593-
* stderr.write_str("hello\n");
1594-
* ~~~
1595-
*/
15961595
pub fn stderr() -> @Writer { fd_writer(libc::STDERR_FILENO as c_int, false) }
15971596
1598-
/**
1599-
* Prints a string to standard output.
1600-
*
1601-
* This string will not have an implicit newline at the end. If you want
1602-
* an implicit newline, please see `println`.
1603-
*
1604-
* # Examples
1605-
* ~~~
1606-
* // print is imported into the prelude, and so is always available.
1607-
* print("hello");
1608-
* ~~~
1609-
*/
16101597
pub fn print(s: &str) {
16111598
stdout().write_str(s);
16121599
}
16131600
1614-
/**
1615-
* Prints a string to standard output, followed by a newline.
1616-
*
1617-
* If you do not want an implicit newline, please see `print`.
1618-
*
1619-
* # Examples
1620-
* ~~~
1621-
* // println is imported into the prelude, and so is always available.
1622-
* println("hello");
1623-
* ~~~
1624-
*/
16251601
pub fn println(s: &str) {
16261602
stdout().write_line(s);
16271603
}

branches/dist-snap/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/dist-snap/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/dist-snap/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)