Skip to content

Rollup of 8 pull requests #70034

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

Merged
merged 23 commits into from
Mar 16, 2020
Merged
Show file tree
Hide file tree
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
Expand Up @@ -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>,
}

Expand All @@ -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 {
Expand Down
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
Expand Up @@ -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
Expand Down
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/
Expand Down
2 changes: 1 addition & 1 deletion src/doc/rustdoc/src/advanced-features.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions src/doc/rustdoc/src/command-line-arguments.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/doc/rustdoc/src/documentation-tests.md
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
6 changes: 3 additions & 3 deletions src/doc/rustdoc/src/what-is-rustdoc.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`.
Expand Down Expand Up @@ -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
Expand Up @@ -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"),
Expand Down Expand Up @@ -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
Expand Down
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:

Expand Down
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
Expand Down
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
Expand Up @@ -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)
Expand Down Expand Up @@ -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;

Expand All @@ -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();
});
}
}
Expand Down Expand Up @@ -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()
});
}
}
Expand Down Expand Up @@ -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();
});
}
}
Expand Down
26 changes: 3 additions & 23 deletions src/librustdoc/html/render.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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};
Expand Down Expand Up @@ -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,
Expand All @@ -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!(
Expand Down
4 changes: 4 additions & 0 deletions src/libstd/sys/windows/c.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion src/libstd/sys/windows/time.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
}
Expand Down
4 changes: 4 additions & 0 deletions src/test/rustdoc/attributes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Up @@ -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
Expand Up @@ -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
Expand Up @@ -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
Expand Up @@ -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
Expand Down
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
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions src/test/ui/lint/lint-type-limits2.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -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