Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 8 pull requests #70034

Merged
merged 23 commits into from
Mar 16, 2020
Merged
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
0605abe
Use GetSystemTimePreciseAsFileTime if it is available
da-x Mar 9, 2020
965888a
Add Node.js to PR CI image
ollie27 Mar 12, 2020
3f58ab6
Allow `rustdoc-js` and `rustdoc-js-std` to use none default build dir…
ollie27 Mar 13, 2020
a5a786d
Block version-specific docs from search engines
kornelski Mar 14, 2020
4bd6ebc
Add long error explanation for E0634 #61137
Mar 14, 2020
68dc24f
Clean up path separator in rustdoc book
TimotheeGerber Mar 14, 2020
ecb84c9
Clean up E0412 and E0422 explanations
GuillaumeGomez Mar 11, 2020
131433a
Change fenced code block type in rustdoc book
TimotheeGerber Mar 14, 2020
6d521ec
Fix punctuation in rustdoc book
TimotheeGerber Mar 14, 2020
138d29d
Update ui tests
GuillaumeGomez Mar 14, 2020
5760db1
Update src/librustc_error_codes/error_codes/E0634.md
ayushmishra2005 Mar 15, 2020
2974685
Update src/librustc_error_codes/error_codes/E0634.md
ayushmishra2005 Mar 15, 2020
a4ffbaa
Add more context to the literal overflow message
contrun Mar 14, 2020
621c42c
Render full attributes in rustdoc
varkor Mar 3, 2020
c599ec4
Add FIXME note
varkor Mar 3, 2020
e5de0b1
Rollup merge of #69686 - varkor:rustdoc-attributes, r=GuillaumeGomez
Dylan-DPC Mar 16, 2020
957241f
Rollup merge of #69858 - da-x:windows-precise-time, r=Dylan-DPC
Dylan-DPC Mar 16, 2020
bbdc871
Rollup merge of #69917 - GuillaumeGomez:cleanup-e0412, r=Dylan-DPC
Dylan-DPC Mar 16, 2020
fdb5df0
Rollup merge of #69964 - ollie27:ci_nodejs, r=Mark-Simulacrum,Guillau…
Dylan-DPC Mar 16, 2020
d34ec33
Rollup merge of #69992 - kornelski:robots, r=steveklabnik
Dylan-DPC Mar 16, 2020
56c60f2
Rollup merge of #69995 - contrun:add-context-to-literal-overflow, r=e…
Dylan-DPC Mar 16, 2020
9296d77
Rollup merge of #69998 - ayushmishra2005:doc/61137-add-long-error-cod…
Dylan-DPC Mar 16, 2020
6b50a4c
Rollup merge of #70014 - TimotheeGerber:small-fix-rustdoc-book, r=Dyl…
Dylan-DPC Mar 16, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions src/bootstrap/test.rs
Original file line number Diff line number Diff line change
@@ -607,7 +607,6 @@ impl Step for RustdocTheme {

#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub struct RustdocJSStd {
pub host: Interned<String>,
pub target: Interned<String>,
}

@@ -621,13 +620,16 @@ impl Step for RustdocJSStd {
}

fn make_run(run: RunConfig<'_>) {
run.builder.ensure(RustdocJSStd { host: run.host, target: run.target });
run.builder.ensure(RustdocJSStd { target: run.target });
}

fn run(self, builder: &Builder<'_>) {
if let Some(ref nodejs) = builder.config.nodejs {
let mut command = Command::new(nodejs);
command.args(&["src/tools/rustdoc-js-std/tester.js", &*self.host]);
command
.arg(builder.src.join("src/tools/rustdoc-js-std/tester.js"))
.arg(builder.doc_out(self.target))
.arg(builder.src.join("src/test/rustdoc-js-std"));
builder.ensure(crate::doc::Std { target: self.target, stage: builder.top_stage });
builder.run(&mut command);
} else {
3 changes: 2 additions & 1 deletion src/ci/docker/x86_64-gnu-llvm-7/Dockerfile
Original file line number Diff line number Diff line change
@@ -16,7 +16,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
libssl-dev \
pkg-config \
zlib1g-dev \
xz-utils
xz-utils \
nodejs

COPY scripts/sccache.sh /scripts/
RUN sh /scripts/sccache.sh
19 changes: 2 additions & 17 deletions src/doc/robots.txt
Original file line number Diff line number Diff line change
@@ -1,21 +1,6 @@
User-agent: *
Disallow: /0.3/
Disallow: /0.4/
Disallow: /0.5/
Disallow: /0.6/
Disallow: /0.7/
Disallow: /0.8/
Disallow: /0.9/
Disallow: /0.10/
Disallow: /0.11.0/
Disallow: /0.12.0/
Disallow: /1.0.0-alpha/
Disallow: /1.0.0-alpha.2/
Disallow: /1.0.0-beta/
Disallow: /1.0.0-beta.2/
Disallow: /1.0.0-beta.3/
Disallow: /1.0.0-beta.4/
Disallow: /1.0.0-beta.5/
Disallow: /1.
Disallow: /0.
Disallow: /book/first-edition/
Disallow: /book/second-edition/
Disallow: /stable/book/first-edition/
2 changes: 1 addition & 1 deletion src/doc/rustdoc/src/advanced-features.md
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ The features listed on this page fall outside the rest of the main categories.

## `#[cfg(doc)]`: Documenting platform-/feature-specific information

For conditional compilation, Rustdoc treats your crate the same way the compiler does: Only things
For conditional compilation, Rustdoc treats your crate the same way the compiler does. Only things
from the host target are available (or from the given `--target` if present), and everything else is
"filtered out" from the crate. This can cause problems if your crate is providing different things
on different targets and you want your documentation to reflect all the available items you
4 changes: 2 additions & 2 deletions src/doc/rustdoc/src/command-line-arguments.md
Original file line number Diff line number Diff line change
@@ -79,8 +79,8 @@ Rustdoc only supports HTML output, and so this flag is redundant today.
Using this flag looks like this:

```bash
$ rustdoc src/lib.rs -o target\\doc
$ rustdoc src/lib.rs --output target\\doc
$ rustdoc src/lib.rs -o target/doc
$ rustdoc src/lib.rs --output target/doc
```

By default, `rustdoc`'s output appears in a directory named `doc` in
2 changes: 1 addition & 1 deletion src/doc/rustdoc/src/documentation-tests.md
Original file line number Diff line number Diff line change
@@ -314,7 +314,7 @@ only shows the part you care about.
`should_panic` tells `rustdoc` that the code should compile correctly, but
not actually pass as a test.

```text
```rust
/// ```no_run
/// loop {
/// println!("Hello, world");
6 changes: 3 additions & 3 deletions src/doc/rustdoc/src/what-is-rustdoc.md
Original file line number Diff line number Diff line change
@@ -78,8 +78,8 @@ $ cargo doc
Internally, this calls out to `rustdoc` like this:

```bash
$ rustdoc --crate-name docs srclib.rs -o <path>\docs\target\doc -L
dependency=<path>docs\target\debug\deps
$ rustdoc --crate-name docs src/lib.rs -o <path>/docs/target/doc -L
dependency=<path>/docs/target/debug/deps
```

You can see this with `cargo doc --verbose`.
@@ -128,4 +128,4 @@ Cargo currently does not understand standalone Markdown files, unfortunately.
## Summary

This covers the simplest use-cases of `rustdoc`. The rest of this book will
explain all of the options that `rustdoc` has, and how to use them.
explain all of the options that `rustdoc` has, and how to use them.
2 changes: 1 addition & 1 deletion src/librustc_error_codes/error_codes.rs
Original file line number Diff line number Diff line change
@@ -351,6 +351,7 @@ E0626: include_str!("./error_codes/E0626.md"),
E0627: include_str!("./error_codes/E0627.md"),
E0631: include_str!("./error_codes/E0631.md"),
E0633: include_str!("./error_codes/E0633.md"),
E0634: include_str!("./error_codes/E0634.md"),
E0635: include_str!("./error_codes/E0635.md"),
E0636: include_str!("./error_codes/E0636.md"),
E0637: include_str!("./error_codes/E0637.md"),
@@ -589,7 +590,6 @@ E0748: include_str!("./error_codes/E0748.md"),
E0630,
E0632, // cannot provide explicit generic arguments when `impl Trait` is
// used in argument position
E0634, // type has conflicting packed representaton hints
E0640, // infer outlives requirements
// E0645, // trait aliases not finished
E0657, // `impl Trait` can only capture lifetimes bound at the fn level
2 changes: 1 addition & 1 deletion src/librustc_error_codes/error_codes/E0412.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
The type name used is not in scope.
A used type name is not in scope.

Erroneous code examples:

3 changes: 2 additions & 1 deletion src/librustc_error_codes/error_codes/E0422.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
You are trying to use an identifier that is either undefined or not a struct.
An identifier that is neither defined nor a struct was used.

Erroneous code example:

```compile_fail,E0422
20 changes: 20 additions & 0 deletions src/librustc_error_codes/error_codes/E0634.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
A type has conflicting `packed` representation hints.

Erroneous code examples:

```compile_fail,E0634
#[repr(packed, packed(2))] // error!
struct Company(i32);

#[repr(packed(2))] // error!
#[repr(packed)]
struct Company(i32);
```

You cannot use conflicting `packed` hints on a same type. If you want to pack a
type to a given size, you should provide a size to packed:

```
#[repr(packed)] // ok!
struct Company(i32);
```
44 changes: 39 additions & 5 deletions src/librustc_lint/types.rs
Original file line number Diff line number Diff line change
@@ -165,7 +165,7 @@ fn report_bin_hex_error(
let mut err = lint.build(&format!("literal out of range for {}", t));
err.note(&format!(
"the literal `{}` (decimal `{}`) does not fit into \
an `{}` and will become `{}{}`",
the type `{}` and will become `{}{}`",
repr_str, val, t, actually, t
));
if let Some(sugg_ty) = get_type_suggestion(&cx.tables.node_type(expr.hir_id), val, negative)
@@ -242,7 +242,7 @@ fn lint_int_literal<'a, 'tcx>(
v: u128,
) {
let int_type = t.normalize(cx.sess().target.ptr_width);
let (_, max) = int_ty_range(int_type);
let (min, max) = int_ty_range(int_type);
let max = max as u128;
let negative = type_limits.negated_expr_id == e.hir_id;

@@ -267,7 +267,19 @@ fn lint_int_literal<'a, 'tcx>(
}

cx.struct_span_lint(OVERFLOWING_LITERALS, e.span, |lint| {
lint.build(&format!("literal out of range for `{}`", t.name_str())).emit()
lint.build(&format!("literal out of range for `{}`", t.name_str()))
.note(&format!(
"the literal `{}` does not fit into the type `{}` whose range is `{}..={}`",
cx.sess()
.source_map()
.span_to_snippet(lit.span)
.ok()
.expect("must get snippet from literal"),
t.name_str(),
min,
max,
))
.emit();
});
}
}
@@ -320,7 +332,19 @@ fn lint_uint_literal<'a, 'tcx>(
return;
}
cx.struct_span_lint(OVERFLOWING_LITERALS, e.span, |lint| {
lint.build(&format!("literal out of range for `{}`", t.name_str())).emit()
lint.build(&format!("literal out of range for `{}`", t.name_str()))
.note(&format!(
"the literal `{}` does not fit into the type `{}` whose range is `{}..={}`",
cx.sess()
.source_map()
.span_to_snippet(lit.span)
.ok()
.expect("must get snippet from literal"),
t.name_str(),
min,
max,
))
.emit()
});
}
}
@@ -352,7 +376,17 @@ fn lint_literal<'a, 'tcx>(
};
if is_infinite == Ok(true) {
cx.struct_span_lint(OVERFLOWING_LITERALS, e.span, |lint| {
lint.build(&format!("literal out of range for `{}`", t.name_str())).emit()
lint.build(&format!("literal out of range for `{}`", t.name_str()))
.note(&format!(
"the literal `{}` does not fit into the type `{}` and will be converted to `std::{}::INFINITY`",
cx.sess()
.source_map()
.span_to_snippet(lit.span)
.expect("must get snippet from literal"),
t.name_str(),
t.name_str(),
))
.emit();
});
}
}
26 changes: 3 additions & 23 deletions src/librustdoc/html/render.rs
Original file line number Diff line number Diff line change
@@ -44,7 +44,6 @@ use std::sync::Arc;

use rustc::middle::privacy::AccessLevels;
use rustc::middle::stability;
use rustc_ast::ast;
use rustc_ast_pretty::pprust;
use rustc_data_structures::flock;
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
@@ -3126,25 +3125,6 @@ fn item_enum(w: &mut Buffer, cx: &Context, it: &clean::Item, e: &clean::Enum) {
render_assoc_items(w, cx, it, it.def_id, AssocItemRender::All)
}

fn render_attribute(attr: &ast::MetaItem) -> Option<String> {
let path = pprust::path_to_string(&attr.path);

if attr.is_word() {
Some(path)
} else if let Some(v) = attr.value_str() {
Some(format!("{} = {:?}", path, v))
} else if let Some(values) = attr.meta_item_list() {
let display: Vec<_> = values
.iter()
.filter_map(|attr| attr.meta_item().and_then(|mi| render_attribute(mi)))
.collect();

if !display.is_empty() { Some(format!("{}({})", path, display.join(", "))) } else { None }
} else {
None
}
}

const ATTRIBUTE_WHITELIST: &[Symbol] = &[
sym::export_name,
sym::lang,
@@ -3170,9 +3150,9 @@ fn render_attributes(w: &mut Buffer, it: &clean::Item, top: bool) {
if !ATTRIBUTE_WHITELIST.contains(&attr.name_or_empty()) {
continue;
}
if let Some(s) = render_attribute(&attr.meta().unwrap()) {
attrs.push_str(&format!("#[{}]\n", s));
}

// FIXME: this currently renders too many spaces as in: `#[repr(C, align (8))]`.
attrs.push_str(&pprust::attribute_to_string(&attr));
}
if !attrs.is_empty() {
write!(
4 changes: 4 additions & 0 deletions src/libstd/sys/windows/c.rs
Original file line number Diff line number Diff line change
@@ -1045,6 +1045,10 @@ compat_fn! {
_dwBufferSize: DWORD) -> BOOL {
SetLastError(ERROR_CALL_NOT_IMPLEMENTED as DWORD); 0
}
pub fn GetSystemTimePreciseAsFileTime(lpSystemTimeAsFileTime: LPFILETIME)
-> () {
GetSystemTimeAsFileTime(lpSystemTimeAsFileTime)
}
pub fn SleepConditionVariableSRW(ConditionVariable: PCONDITION_VARIABLE,
SRWLock: PSRWLOCK,
dwMilliseconds: DWORD,
2 changes: 1 addition & 1 deletion src/libstd/sys/windows/time.rs
Original file line number Diff line number Diff line change
@@ -74,7 +74,7 @@ impl SystemTime {
pub fn now() -> SystemTime {
unsafe {
let mut t: SystemTime = mem::zeroed();
c::GetSystemTimeAsFileTime(&mut t.t);
c::GetSystemTimePreciseAsFileTime(&mut t.t);
t
}
}
4 changes: 4 additions & 0 deletions src/test/rustdoc/attributes.rs
Original file line number Diff line number Diff line change
@@ -15,3 +15,7 @@ pub extern "C" fn g() {}
pub enum Foo {
Bar,
}

// @has foo/struct.Repr.html '//*[@class="docblock attributes top-attr"]' '#[repr(C, align (8))]'
#[repr(C, align(8))]
pub struct Repr;
2 changes: 1 addition & 1 deletion src/test/ui/conflicting-repr-hints.stderr
Original file line number Diff line number Diff line change
@@ -76,5 +76,5 @@ LL | | }

error: aborting due to 10 previous errors

Some errors have detailed explanations: E0566, E0587.
Some errors have detailed explanations: E0566, E0587, E0634.
For more information about an error, try `rustc --explain E0566`.
7 changes: 7 additions & 0 deletions src/test/ui/enum/enum-discrim-too-small2.stderr
Original file line number Diff line number Diff line change
@@ -9,24 +9,31 @@ note: the lint level is defined here
|
LL | #![deny(overflowing_literals)]
| ^^^^^^^^^^^^^^^^^^^^
= note: the literal `223` does not fit into the type `i8` whose range is `-128..=127`

error: literal out of range for `i16`
--> $DIR/enum-discrim-too-small2.rs:15:12
|
LL | Ci16 = 55555,
| ^^^^^
|
= note: the literal `55555` does not fit into the type `i16` whose range is `-32768..=32767`

error: literal out of range for `i32`
--> $DIR/enum-discrim-too-small2.rs:22:12
|
LL | Ci32 = 3_000_000_000,
| ^^^^^^^^^^^^^
|
= note: the literal `3_000_000_000` does not fit into the type `i32` whose range is `-2147483648..=2147483647`

error: literal out of range for `i64`
--> $DIR/enum-discrim-too-small2.rs:29:12
|
LL | Ci64 = 9223372036854775809,
| ^^^^^^^^^^^^^^^^^^^
|
= note: the literal `9223372036854775809` does not fit into the type `i64` whose range is `-9223372036854775808..=9223372036854775807`

error: aborting due to 4 previous errors

1 change: 1 addition & 0 deletions src/test/ui/issues/issue-63364.stderr
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@ LL | for n in 100_000.. {
| ^^^^^^^
|
= note: `#[deny(overflowing_literals)]` on by default
= note: the literal `100_000` does not fit into the type `u16` whose range is `0..=65535`

error: aborting due to previous error

1 change: 1 addition & 0 deletions src/test/ui/lint/deny-overflowing-literals.stderr
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@ LL | let x: u8 = 256;
| ^^^
|
= note: `#[deny(overflowing_literals)]` on by default
= note: the literal `256` does not fit into the type `u8` whose range is `0..=255`

error: range endpoint is out of range for `u8`
--> $DIR/deny-overflowing-literals.rs:5:14
6 changes: 6 additions & 0 deletions src/test/ui/lint/lint-range-endpoint-overflow.stderr
Original file line number Diff line number Diff line change
@@ -15,18 +15,24 @@ error: literal out of range for `u8`
|
LL | let range_c = 0..=256;
| ^^^
|
= note: the literal `256` does not fit into the type `u8` whose range is `0..=255`

error: literal out of range for `u8`
--> $DIR/lint-range-endpoint-overflow.rs:7:19
|
LL | let range_d = 256..5;
| ^^^
|
= note: the literal `256` does not fit into the type `u8` whose range is `0..=255`

error: literal out of range for `u8`
--> $DIR/lint-range-endpoint-overflow.rs:8:22
|
LL | let range_e = 0..257;
| ^^^
|
= note: the literal `257` does not fit into the type `u8` whose range is `0..=255`

error: range endpoint is out of range for `u8`
--> $DIR/lint-range-endpoint-overflow.rs:9:20
1 change: 1 addition & 0 deletions src/test/ui/lint/lint-type-limits2.stderr
Original file line number Diff line number Diff line change
@@ -17,6 +17,7 @@ note: the lint level is defined here
|
LL | #![warn(overflowing_literals)]
| ^^^^^^^^^^^^^^^^^^^^
= note: the literal `128` does not fit into the type `i8` whose range is `-128..=127`

error: aborting due to previous error

Loading