Skip to content

Commit 427d874

Browse files
committed
---
yaml --- r: 206494 b: refs/heads/beta c: 1d31839 h: refs/heads/master v: v3
1 parent 6c108f9 commit 427d874

Some content is hidden

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

71 files changed

+1050
-349
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ refs/tags/0.12.0: f0c419429ef30723ceaf6b42f9b5a2aeb5d2e2d1
2929
refs/heads/automation-fail: 1bf06495443584539b958873e04cc2f864ab10e4
3030
refs/heads/batch: b7fd822592a4fb577552d93010c4a4e14f314346
3131
refs/heads/building: 126db549b038c84269a1e4fe46f051b2c15d6970
32-
refs/heads/beta: 085e1f489b1cc830cdcf3d43cb80754647dceabf
32+
refs/heads/beta: 1d3183929a1455a7f7329ca23c1fb1b5271c60d1
3333
refs/heads/windistfix: 7608dbad651f02e837ed05eef3d74a6662a6e928
3434
refs/tags/1.0.0-alpha: e42bd6d93a1d3433c486200587f8f9e12590a4d7
3535
refs/heads/tmp: 579e31929feff51dcaf8d444648eff8de735f91a

branches/beta/mk/crates.mk

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ RUSTC_CRATES := rustc rustc_typeck rustc_borrowck rustc_resolve rustc_driver \
5858
rustc_data_structures
5959
HOST_CRATES := syntax $(RUSTC_CRATES) rustdoc fmt_macros
6060
CRATES := $(TARGET_CRATES) $(HOST_CRATES)
61-
TOOLS := compiletest rustdoc rustc rustbook
61+
TOOLS := compiletest rustdoc rustc rustbook error-index-generator
6262

6363
DEPS_core :=
6464
DEPS_libc := core
@@ -107,10 +107,12 @@ TOOL_DEPS_compiletest := test getopts
107107
TOOL_DEPS_rustdoc := rustdoc
108108
TOOL_DEPS_rustc := rustc_driver
109109
TOOL_DEPS_rustbook := std rustdoc
110+
TOOL_DEPS_error-index-generator := rustdoc syntax serialize
110111
TOOL_SOURCE_compiletest := $(S)src/compiletest/compiletest.rs
111112
TOOL_SOURCE_rustdoc := $(S)src/driver/driver.rs
112113
TOOL_SOURCE_rustc := $(S)src/driver/driver.rs
113114
TOOL_SOURCE_rustbook := $(S)src/rustbook/main.rs
115+
TOOL_SOURCE_error-index-generator := $(S)src/error-index-generator/main.rs
114116

115117
ONLY_RLIB_core := 1
116118
ONLY_RLIB_libc := 1

branches/beta/mk/docs.mk

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,13 @@ RUSTBOOK_EXE = $(HBIN2_H_$(CFG_BUILD))/rustbook$(X_$(CFG_BUILD))
7171
# ./configure
7272
RUSTBOOK = $(RPATH_VAR2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $(RUSTBOOK_EXE)
7373

74+
# The error-index-generator executable...
75+
ERR_IDX_GEN_EXE = $(HBIN2_H_$(CFG_BUILD))/error-index-generator$(X_$(CFG_BUILD))
76+
ERR_IDX_GEN = $(RPATH_VAR2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $(ERR_IDX_GEN_EXE)
77+
7478
D := $(S)src/doc
7579

76-
DOC_TARGETS := trpl style
80+
DOC_TARGETS := trpl style error-index
7781
COMPILER_DOC_TARGETS :=
7882
DOC_L10N_TARGETS :=
7983

@@ -288,3 +292,9 @@ doc/style/index.html: $(RUSTBOOK_EXE) $(wildcard $(S)/src/doc/style/*.md) | doc/
288292
@$(call E, rustbook: $@)
289293
$(Q)rm -rf doc/style
290294
$(Q)$(RUSTBOOK) build $(S)src/doc/style doc/style
295+
296+
error-index: doc/error-index.html
297+
298+
doc/error-index.html: $(ERR_IDX_GEN_EXE) | doc/
299+
$(Q)$(call E, error-index-generator: $@)
300+
$(Q)$(ERR_IDX_GEN)

branches/beta/mk/prepare.mk

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ define PREPARE_MAN
7070
$(Q)$(PREPARE_MAN_CMD) $(PREPARE_SOURCE_MAN_DIR)/$(1) $(PREPARE_DEST_MAN_DIR)/$(1)
7171
endef
7272

73-
PREPARE_TOOLS = $(filter-out compiletest rustbook, $(TOOLS))
73+
PREPARE_TOOLS = $(filter-out compiletest rustbook error-index-generator, $(TOOLS))
7474

7575

7676
# $(1) is tool

branches/beta/src/doc/reference.md

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1867,13 +1867,12 @@ macro scope.
18671867
lower to the target's SIMD instructions, if any; the `simd` feature gate
18681868
is necessary to use this attribute.
18691869
- `static_assert` - on statics whose type is `bool`, terminates compilation
1870-
with an error if it is not initialized to `true`.
1871-
- `unsafe_destructor` - allow implementations of the "drop" language item
1872-
where the type it is implemented for does not implement the "send" language
1873-
item; the `unsafe_destructor` feature gate is needed to use this attribute
1870+
with an error if it is not initialized to `true`. To use this, the `static_assert`
1871+
feature gate must be enabled.
18741872
- `unsafe_no_drop_flag` - on structs, remove the flag that prevents
18751873
destructors from being run twice. Destructors might be run multiple times on
1876-
the same object with this attribute.
1874+
the same object with this attribute. To use this, the `unsafe_no_drop_flag` feature
1875+
gate must be enabled.
18771876
- `doc` - Doc comments such as `/// foo` are equivalent to `#[doc = "foo"]`.
18781877
- `rustc_on_unimplemented` - Write a custom note to be shown along with the error
18791878
when the trait is found to be unimplemented on a type.

branches/beta/src/doc/trpl/guessing-game.md

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -410,24 +410,29 @@ $ cargo build
410410
Compiling guessing_game v0.1.0 (file:///home/you/projects/guessing_game)
411411
```
412412

413-
So, we told Cargo we wanted any version of `rand`, and so it fetched the
414-
latest version at the time this was written, `v0.3.8`. But what happens
415-
when next week, version `v0.4.0` comes out, which changes something with
416-
`rand`, and it includes a breaking change? After all, a `v0.y.z` version
417-
in SemVer can change every release.
413+
So, we told Cargo we wanted any version of `rand`, and so it fetched the latest
414+
version at the time this was written, `v0.3.8`. But what happens when next
415+
week, version `v0.3.9` comes out, with an important bugfix? While getting
416+
bugfixes is important, what if `0.3.9` contains a regression that breaks our
417+
code?
418418

419419
The answer to this problem is the `Cargo.lock` file you’ll now find in your
420420
project directory. When you build your project for the first time, Cargo
421421
figures out all of the versions that fit your criteria, and then writes them
422422
to the `Cargo.lock` file. When you build your project in the future, Cargo
423423
will see that the `Cargo.lock` file exists, and then use that specific version
424424
rather than do all the work of figuring out versions again. This lets you
425-
have a repeatable build automatically.
425+
have a repeatable build automatically. In other words, we’ll stay at `0.3.8`
426+
until we explicitly upgrade, and so will anyone who we share our code with,
427+
thanks to the lock file.
426428

427-
What about when we _do_ want to use `v0.4.0`? Cargo has another command,
429+
What about when we _do_ want to use `v0.3.9`? Cargo has another command,
428430
`update`, which says ‘ignore the lock, figure out all the latest versions that
429431
fit what we’ve specified. If that works, write those versions out to the lock
430-
file’.
432+
file’. But, by default, Cargo will only look for versions larger than `0.3.0`
433+
and smaller than `0.4.0`. If we want to move to `0.4.x`, we’d have to update
434+
the `Cargo.toml` directly. When we do, the next time we `cargo build`, Cargo
435+
will update the index and re-evaluate our `rand` requirements.
431436

432437
There’s a lot more to say about [Cargo][doccargo] and [its
433438
ecosystem][doccratesio], but for now, that’s all we need to know. Cargo makes

branches/beta/src/doc/trpl/strings.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,13 @@ individual bytes, or as codepoints:
7373
let hachiko = "忠犬ハチ公";
7474

7575
for b in hachiko.as_bytes() {
76-
print!("{}, ", b);
76+
print!("{}, ", b);
7777
}
7878

7979
println!("");
8080

8181
for c in hachiko.chars() {
82-
print!("{}, ", c);
82+
print!("{}, ", c);
8383
}
8484

8585
println!("");
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
#![feature(rustc_private, rustdoc)]
12+
13+
extern crate syntax;
14+
extern crate rustdoc;
15+
extern crate serialize as rustc_serialize;
16+
17+
use std::collections::BTreeMap;
18+
use std::fs::{read_dir, File};
19+
use std::io::{Read, Write};
20+
use std::path::Path;
21+
use std::error::Error;
22+
23+
use syntax::diagnostics::metadata::{get_metadata_dir, ErrorMetadataMap};
24+
25+
use rustdoc::html::markdown::Markdown;
26+
use rustc_serialize::json;
27+
28+
/// Load all the metadata files from `metadata_dir` into an in-memory map.
29+
fn load_all_errors(metadata_dir: &Path) -> Result<ErrorMetadataMap, Box<Error>> {
30+
let mut all_errors = BTreeMap::new();
31+
32+
for entry in try!(read_dir(metadata_dir)) {
33+
let path = try!(entry).path();
34+
35+
let mut metadata_str = String::new();
36+
try!(
37+
File::open(&path).and_then(|mut f|
38+
f.read_to_string(&mut metadata_str))
39+
);
40+
41+
let some_errors: ErrorMetadataMap = try!(json::decode(&metadata_str));
42+
43+
for (err_code, info) in some_errors {
44+
all_errors.insert(err_code, info);
45+
}
46+
}
47+
48+
Ok(all_errors)
49+
}
50+
51+
/// Output an HTML page for the errors in `err_map` to `output_path`.
52+
fn render_error_page(err_map: &ErrorMetadataMap, output_path: &Path) -> Result<(), Box<Error>> {
53+
let mut output_file = try!(File::create(output_path));
54+
55+
try!(write!(&mut output_file,
56+
r##"<!DOCTYPE html>
57+
<html>
58+
<head>
59+
<title>Rust Compiler Error Index</title>
60+
<meta charset="utf-8">
61+
<!-- Include rust.css after main.css so its rules take priority. -->
62+
<link rel="stylesheet" type="text/css" href="main.css"/>
63+
<link rel="stylesheet" type="text/css" href="rust.css"/>
64+
<style>
65+
.error-undescribed {{
66+
display: none;
67+
}}
68+
</style>
69+
</head>
70+
<body>
71+
"##
72+
));
73+
74+
try!(write!(&mut output_file, "<h1>Rust Compiler Error Index</h1>\n"));
75+
76+
for (err_code, info) in err_map.iter() {
77+
// Enclose each error in a div so they can be shown/hidden en masse.
78+
let desc_desc = match info.description {
79+
Some(_) => "error-described",
80+
None => "error-undescribed"
81+
};
82+
let use_desc = match info.use_site {
83+
Some(_) => "error-used",
84+
None => "error-unused"
85+
};
86+
try!(write!(&mut output_file, "<div class=\"{} {}\">", desc_desc, use_desc));
87+
88+
// Error title (with self-link).
89+
try!(write!(&mut output_file,
90+
"<h2 id=\"{0}\" class=\"section-header\"><a href=\"#{0}\">{0}</a></h2>\n",
91+
err_code
92+
));
93+
94+
// Description rendered as markdown.
95+
match info.description {
96+
Some(ref desc) => try!(write!(&mut output_file, "{}", Markdown(desc))),
97+
None => try!(write!(&mut output_file, "<p>No description.</p>\n"))
98+
}
99+
100+
try!(write!(&mut output_file, "</div>\n"));
101+
}
102+
103+
try!(write!(&mut output_file, "</body>\n</html>"));
104+
105+
Ok(())
106+
}
107+
108+
fn main_with_result() -> Result<(), Box<Error>> {
109+
let metadata_dir = get_metadata_dir();
110+
let err_map = try!(load_all_errors(&metadata_dir));
111+
try!(render_error_page(&err_map, Path::new("doc/error-index.html")));
112+
Ok(())
113+
}
114+
115+
fn main() {
116+
if let Err(e) = main_with_result() {
117+
panic!("{}", e.description());
118+
}
119+
}

branches/beta/src/grammar/RustLexer.g4

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@ lexer grammar RustLexer;
88

99

1010
tokens {
11-
EQ, LT, LE, EQEQ, NE, GE, GT, ANDAND, OROR, NOT, TILDE, PLUT,
11+
EQ, LT, LE, EQEQ, NE, GE, GT, ANDAND, OROR, NOT, TILDE, PLUS,
1212
MINUS, STAR, SLASH, PERCENT, CARET, AND, OR, SHL, SHR, BINOP,
1313
BINOPEQ, AT, DOT, DOTDOT, DOTDOTDOT, COMMA, SEMI, COLON,
1414
MOD_SEP, RARROW, FAT_ARROW, LPAREN, RPAREN, LBRACKET, RBRACKET,
15-
LBRACE, RBRACE, POUND, DOLLAR, UNDERSCORE, LIT_CHAR,
15+
LBRACE, RBRACE, POUND, DOLLAR, UNDERSCORE, LIT_CHAR, LIT_BYTE,
1616
LIT_INTEGER, LIT_FLOAT, LIT_STR, LIT_STR_RAW, LIT_BINARY,
17-
LIT_BINARY_RAW, IDENT, LIFETIME, WHITESPACE, DOC_COMMENT,
18-
COMMENT, SHEBANG
17+
LIT_BINARY_RAW, QUESTION, IDENT, LIFETIME, WHITESPACE, DOC_COMMENT,
18+
COMMENT, SHEBANG, UTF8_BOM
1919
}
2020

2121
import xidstart , xidcontinue;

branches/beta/src/grammar/verify.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ fn parse_token_list(file: &str) -> HashMap<String, token::Token> {
111111
"LIT_BINARY_RAW" => token::Literal(token::BinaryRaw(Name(0), 0), None),
112112
"QUESTION" => token::Question,
113113
"SHEBANG" => token::Shebang(Name(0)),
114-
_ => continue,
114+
_ => panic!("Bad token str `{}`", val),
115115
};
116116

117117
res.insert(num.to_string(), tok);

branches/beta/src/liballoc/boxed.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
//! }
3838
//! ```
3939
//!
40-
//! This will print `Cons(1, Box(Cons(2, Box(Nil))))`.
40+
//! This will print `Cons(1, Cons(2, Nil))`.
4141
//!
4242
//! Recursive structures must be boxed, because if the definition of `Cons` looked like this:
4343
//!

0 commit comments

Comments
 (0)