mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-21 17:52:12 +03:00
Auto merge of #70034 - Dylan-DPC:rollup-5yg771j, r=Dylan-DPC
Rollup of 8 pull requests Successful merges: - #69686 (Use `pprust` to print attributes in rustdoc) - #69858 (std: on Windows, use GetSystemTimePreciseAsFileTime if it is available) - #69917 (Cleanup E0412 and E0422) - #69964 (Add Node.js to PR CI image) - #69992 (Block version-specific docs from search engines) - #69995 (Add more context to the literal overflow message) - #69998 (Add long error explanation for E0634) - #70014 (Small fixes in rustdoc book) Failed merges: r? @ghost
This commit is contained in:
@@ -607,7 +607,6 @@ fn run(self, builder: &Builder<'_>) {
|
||||
|
||||
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
|
||||
pub struct RustdocJSStd {
|
||||
pub host: Interned<String>,
|
||||
pub target: Interned<String>,
|
||||
}
|
||||
|
||||
@@ -621,13 +620,16 @@ fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
|
||||
}
|
||||
|
||||
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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
+2
-17
@@ -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/
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -351,6 +351,7 @@
|
||||
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 @@
|
||||
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
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
The type name used is not in scope.
|
||||
A used type name is not in scope.
|
||||
|
||||
Erroneous code examples:
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
```
|
||||
@@ -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();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,6 @@
|
||||
|
||||
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!(
|
||||
|
||||
@@ -1045,6 +1045,10 @@ pub fn SetFileInformationByHandle(_hFile: HANDLE,
|
||||
_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,
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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`.
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@ note: the lint level is defined here
|
||||
|
|
||||
LL | #![warn(overflowing_literals)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
= note: the literal `200` does not fit into the type `i8` whose range is `-128..=127`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
||||
@@ -9,108 +9,143 @@ note: the lint level is defined here
|
||||
|
|
||||
LL | #![deny(overflowing_literals)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
= 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-type-overflow.rs:13:14
|
||||
|
|
||||
LL | let x1 = 256_u8;
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: the literal `256_u8` does not fit into the type `u8` whose range is `0..=255`
|
||||
|
||||
error: literal out of range for `i8`
|
||||
--> $DIR/lint-type-overflow.rs:16:18
|
||||
|
|
||||
LL | let x1: i8 = 128;
|
||||
| ^^^
|
||||
|
|
||||
= note: the literal `128` does not fit into the type `i8` whose range is `-128..=127`
|
||||
|
||||
error: literal out of range for `i8`
|
||||
--> $DIR/lint-type-overflow.rs:18:19
|
||||
|
|
||||
LL | let x3: i8 = -129;
|
||||
| ^^^
|
||||
|
|
||||
= note: the literal `129` does not fit into the type `i8` whose range is `-128..=127`
|
||||
|
||||
error: literal out of range for `i8`
|
||||
--> $DIR/lint-type-overflow.rs:19:19
|
||||
|
|
||||
LL | let x3: i8 = -(129);
|
||||
| ^^^^^
|
||||
|
|
||||
= note: the literal `129` does not fit into the type `i8` whose range is `-128..=127`
|
||||
|
||||
error: literal out of range for `i8`
|
||||
--> $DIR/lint-type-overflow.rs:20:20
|
||||
|
|
||||
LL | let x3: i8 = -{129};
|
||||
| ^^^
|
||||
|
|
||||
= note: the literal `129` does not fit into the type `i8` whose range is `-128..=127`
|
||||
|
||||
error: literal out of range for `i8`
|
||||
--> $DIR/lint-type-overflow.rs:22:10
|
||||
|
|
||||
LL | test(1000);
|
||||
| ^^^^
|
||||
|
|
||||
= note: the literal `1000` does not fit into the type `i8` whose range is `-128..=127`
|
||||
|
||||
error: literal out of range for `i8`
|
||||
--> $DIR/lint-type-overflow.rs:24:13
|
||||
|
|
||||
LL | let x = 128_i8;
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: the literal `128_i8` does not fit into the type `i8` whose range is `-128..=127`
|
||||
|
||||
error: literal out of range for `i8`
|
||||
--> $DIR/lint-type-overflow.rs:28:14
|
||||
|
|
||||
LL | let x = -129_i8;
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: the literal `129_i8` does not fit into the type `i8` whose range is `-128..=127`
|
||||
|
||||
error: literal out of range for `i32`
|
||||
--> $DIR/lint-type-overflow.rs:32:18
|
||||
|
|
||||
LL | let x: i32 = 2147483648;
|
||||
| ^^^^^^^^^^
|
||||
|
|
||||
= note: the literal `2147483648` does not fit into the type `i32` whose range is `-2147483648..=2147483647`
|
||||
|
||||
error: literal out of range for `i32`
|
||||
--> $DIR/lint-type-overflow.rs:33:13
|
||||
|
|
||||
LL | let x = 2147483648_i32;
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the literal `2147483648_i32` does not fit into the type `i32` whose range is `-2147483648..=2147483647`
|
||||
|
||||
error: literal out of range for `i32`
|
||||
--> $DIR/lint-type-overflow.rs:36:19
|
||||
|
|
||||
LL | let x: i32 = -2147483649;
|
||||
| ^^^^^^^^^^
|
||||
|
|
||||
= note: the literal `2147483649` does not fit into the type `i32` whose range is `-2147483648..=2147483647`
|
||||
|
||||
error: literal out of range for `i32`
|
||||
--> $DIR/lint-type-overflow.rs:37:14
|
||||
|
|
||||
LL | let x = -2147483649_i32;
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the literal `2147483649_i32` does not fit into the type `i32` whose range is `-2147483648..=2147483647`
|
||||
|
||||
error: literal out of range for `i32`
|
||||
--> $DIR/lint-type-overflow.rs:38:13
|
||||
|
|
||||
LL | let x = 2147483648;
|
||||
| ^^^^^^^^^^
|
||||
|
|
||||
= note: the literal `2147483648` does not fit into the type `i32` whose range is `-2147483648..=2147483647`
|
||||
|
||||
error: literal out of range for `i64`
|
||||
--> $DIR/lint-type-overflow.rs:40:13
|
||||
|
|
||||
LL | let x = 9223372036854775808_i64;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the literal `9223372036854775808_i64` does not fit into the type `i64` whose range is `-9223372036854775808..=9223372036854775807`
|
||||
|
||||
error: literal out of range for `i64`
|
||||
--> $DIR/lint-type-overflow.rs:42:13
|
||||
|
|
||||
LL | let x = 18446744073709551615_i64;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the literal `18446744073709551615_i64` does not fit into the type `i64` whose range is `-9223372036854775808..=9223372036854775807`
|
||||
|
||||
error: literal out of range for `i64`
|
||||
--> $DIR/lint-type-overflow.rs:43:19
|
||||
|
|
||||
LL | let x: i64 = -9223372036854775809;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the literal `9223372036854775809` does not fit into the type `i64` whose range is `-9223372036854775808..=9223372036854775807`
|
||||
|
||||
error: literal out of range for `i64`
|
||||
--> $DIR/lint-type-overflow.rs:44:14
|
||||
|
|
||||
LL | let x = -9223372036854775809_i64;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the literal `9223372036854775809_i64` does not fit into the type `i64` whose range is `-9223372036854775808..=9223372036854775807`
|
||||
|
||||
error: aborting due to 18 previous errors
|
||||
|
||||
|
||||
@@ -9,30 +9,39 @@ note: the lint level is defined here
|
||||
|
|
||||
LL | #![deny(overflowing_literals)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
= note: the literal `128` does not fit into the type `i8` whose range is `-128..=127`
|
||||
|
||||
error: literal out of range for `f32`
|
||||
--> $DIR/lint-type-overflow2.rs:9:14
|
||||
|
|
||||
LL | let x = -3.40282357e+38_f32;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the literal `3.40282357e+38_f32` does not fit into the type `f32` and will be converted to `std::f32::INFINITY`
|
||||
|
||||
error: literal out of range for `f32`
|
||||
--> $DIR/lint-type-overflow2.rs:10:14
|
||||
|
|
||||
LL | let x = 3.40282357e+38_f32;
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the literal `3.40282357e+38_f32` does not fit into the type `f32` and will be converted to `std::f32::INFINITY`
|
||||
|
||||
error: literal out of range for `f64`
|
||||
--> $DIR/lint-type-overflow2.rs:11:14
|
||||
|
|
||||
LL | let x = -1.7976931348623159e+308_f64;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the literal `1.7976931348623159e+308_f64` does not fit into the type `f64` and will be converted to `std::f64::INFINITY`
|
||||
|
||||
error: literal out of range for `f64`
|
||||
--> $DIR/lint-type-overflow2.rs:12:14
|
||||
|
|
||||
LL | let x = 1.7976931348623159e+308_f64;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the literal `1.7976931348623159e+308_f64` does not fit into the type `f64` and will be converted to `std::f64::INFINITY`
|
||||
|
||||
error: aborting due to 5 previous errors
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ note: the lint level is defined here
|
||||
|
|
||||
LL | #![warn(overflowing_literals)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
= note: the literal `255i8` does not fit into the type `i8` whose range is `-128..=127`
|
||||
|
||||
warning: literal out of range for i8
|
||||
--> $DIR/type-overflow.rs:10:16
|
||||
@@ -16,7 +17,7 @@ warning: literal out of range for i8
|
||||
LL | let fail = 0b1000_0001i8;
|
||||
| ^^^^^^^^^^^^^ help: consider using `u8` instead: `0b1000_0001u8`
|
||||
|
|
||||
= note: the literal `0b1000_0001i8` (decimal `129`) does not fit into an `i8` and will become `-127i8`
|
||||
= note: the literal `0b1000_0001i8` (decimal `129`) does not fit into the type `i8` and will become `-127i8`
|
||||
|
||||
warning: literal out of range for i64
|
||||
--> $DIR/type-overflow.rs:12:16
|
||||
@@ -24,7 +25,7 @@ warning: literal out of range for i64
|
||||
LL | let fail = 0x8000_0000_0000_0000i64;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `u64` instead: `0x8000_0000_0000_0000u64`
|
||||
|
|
||||
= note: the literal `0x8000_0000_0000_0000i64` (decimal `9223372036854775808`) does not fit into an `i64` and will become `-9223372036854775808i64`
|
||||
= note: the literal `0x8000_0000_0000_0000i64` (decimal `9223372036854775808`) does not fit into the type `i64` and will become `-9223372036854775808i64`
|
||||
|
||||
warning: literal out of range for u32
|
||||
--> $DIR/type-overflow.rs:14:16
|
||||
@@ -32,7 +33,7 @@ warning: literal out of range for u32
|
||||
LL | let fail = 0x1_FFFF_FFFFu32;
|
||||
| ^^^^^^^^^^^^^^^^ help: consider using `u64` instead: `0x1_FFFF_FFFFu64`
|
||||
|
|
||||
= note: the literal `0x1_FFFF_FFFFu32` (decimal `8589934591`) does not fit into an `u32` and will become `4294967295u32`
|
||||
= note: the literal `0x1_FFFF_FFFFu32` (decimal `8589934591`) does not fit into the type `u32` and will become `4294967295u32`
|
||||
|
||||
warning: literal out of range for i128
|
||||
--> $DIR/type-overflow.rs:16:22
|
||||
@@ -40,7 +41,7 @@ warning: literal out of range for i128
|
||||
LL | let fail: i128 = 0x8000_0000_0000_0000_0000_0000_0000_0000;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the literal `0x8000_0000_0000_0000_0000_0000_0000_0000` (decimal `170141183460469231731687303715884105728`) does not fit into an `i128` and will become `-170141183460469231731687303715884105728i128`
|
||||
= note: the literal `0x8000_0000_0000_0000_0000_0000_0000_0000` (decimal `170141183460469231731687303715884105728`) does not fit into the type `i128` and will become `-170141183460469231731687303715884105728i128`
|
||||
= help: consider using `u128` instead
|
||||
|
||||
warning: literal out of range for i32
|
||||
@@ -49,7 +50,7 @@ warning: literal out of range for i32
|
||||
LL | let fail = 0x8FFF_FFFF_FFFF_FFFE;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: the literal `0x8FFF_FFFF_FFFF_FFFE` (decimal `10376293541461622782`) does not fit into an `i32` and will become `-2i32`
|
||||
= note: the literal `0x8FFF_FFFF_FFFF_FFFE` (decimal `10376293541461622782`) does not fit into the type `i32` and will become `-2i32`
|
||||
= help: consider using `i128` instead
|
||||
|
||||
warning: literal out of range for i8
|
||||
@@ -58,5 +59,5 @@ warning: literal out of range for i8
|
||||
LL | let fail = -0b1111_1111i8;
|
||||
| ^^^^^^^^^^^^^ help: consider using `i16` instead: `0b1111_1111i16`
|
||||
|
|
||||
= note: the literal `0b1111_1111i8` (decimal `255`) does not fit into an `i8` and will become `-1i8`
|
||||
= note: the literal `0b1111_1111i8` (decimal `255`) does not fit into the type `i8` and will become `-1i8`
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"message": "cannot find type `Iter` in this scope",
|
||||
"code": {
|
||||
"code": "E0412",
|
||||
"explanation": "The type name used is not in scope.
|
||||
"explanation": "A used type name is not in scope.
|
||||
|
||||
Erroneous code examples:
|
||||
|
||||
|
||||
@@ -2779,7 +2779,7 @@ fn run_js_doc_test(&self) {
|
||||
Command::new(&nodejs)
|
||||
.arg(root.join("src/tools/rustdoc-js/tester.js"))
|
||||
.arg(out_dir.parent().expect("no parent"))
|
||||
.arg(&self.testpaths.file.file_stem().expect("couldn't get file stem")),
|
||||
.arg(self.testpaths.file.with_extension("js")),
|
||||
);
|
||||
if !res.status.success() {
|
||||
self.fatal_proc_rec("rustdoc-js test failed!", &res);
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
const fs = require('fs');
|
||||
|
||||
const TEST_FOLDER = 'src/test/rustdoc-js-std/';
|
||||
const path = require('path');
|
||||
|
||||
function getNextStep(content, pos, stop) {
|
||||
while (pos < content.length && content[pos] !== stop &&
|
||||
@@ -246,17 +245,16 @@ function readFileMatching(dir, name, extension) {
|
||||
}
|
||||
|
||||
function main(argv) {
|
||||
if (argv.length !== 3) {
|
||||
console.error("Expected toolchain to check as argument (for example \
|
||||
'x86_64-apple-darwin')");
|
||||
if (argv.length !== 4) {
|
||||
console.error("USAGE: node tester.js STD_DOCS TEST_FOLDER");
|
||||
return 1;
|
||||
}
|
||||
var toolchain = argv[2];
|
||||
var std_docs = argv[2];
|
||||
var test_folder = argv[3];
|
||||
|
||||
var mainJs = readFileMatching("build/" + toolchain + "/doc/", "main", ".js");
|
||||
var ALIASES = readFileMatching("build/" + toolchain + "/doc/", "aliases", ".js");
|
||||
var searchIndex = readFileMatching("build/" + toolchain + "/doc/",
|
||||
"search-index", ".js").split("\n");
|
||||
var mainJs = readFileMatching(std_docs, "main", ".js");
|
||||
var ALIASES = readFileMatching(std_docs, "aliases", ".js");
|
||||
var searchIndex = readFileMatching(std_docs, "search-index", ".js").split("\n");
|
||||
if (searchIndex[searchIndex.length - 1].length === 0) {
|
||||
searchIndex.pop();
|
||||
}
|
||||
@@ -287,8 +285,8 @@ function main(argv) {
|
||||
|
||||
var errors = 0;
|
||||
|
||||
fs.readdirSync(TEST_FOLDER).forEach(function(file) {
|
||||
var loadedFile = loadContent(readFile(TEST_FOLDER + file) +
|
||||
fs.readdirSync(test_folder).forEach(function(file) {
|
||||
var loadedFile = loadContent(readFile(path.join(test_folder, file)) +
|
||||
'exports.QUERY = QUERY;exports.EXPECTED = EXPECTED;');
|
||||
const expected = loadedFile.EXPECTED;
|
||||
const query = loadedFile.QUERY;
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const { spawnSync } = require('child_process');
|
||||
|
||||
const TEST_FOLDER = 'src/test/rustdoc-js/';
|
||||
|
||||
function getNextStep(content, pos, stop) {
|
||||
while (pos < content.length && content[pos] !== stop &&
|
||||
(content[pos] === ' ' || content[pos] === '\t' || content[pos] === '\n')) {
|
||||
@@ -266,10 +265,11 @@ function main(argv) {
|
||||
var errors = 0;
|
||||
|
||||
for (var j = 3; j < argv.length; ++j) {
|
||||
const test_name = argv[j];
|
||||
const test_file = argv[j];
|
||||
const test_name = path.basename(test_file, ".js");
|
||||
|
||||
process.stdout.write('Checking "' + test_name + '" ... ');
|
||||
if (!fs.existsSync(TEST_FOLDER + test_name + ".js")) {
|
||||
if (!fs.existsSync(test_file)) {
|
||||
errors += 1;
|
||||
console.error("FAILED");
|
||||
console.error("==> Missing '" + test_name + ".js' file...");
|
||||
@@ -279,7 +279,7 @@ function main(argv) {
|
||||
const test_out_folder = out_folder + test_name;
|
||||
|
||||
var [loaded, index] = load_files(test_out_folder, test_name);
|
||||
var loadedFile = loadContent(readFile(TEST_FOLDER + test_name + ".js") +
|
||||
var loadedFile = loadContent(readFile(test_file) +
|
||||
'exports.QUERY = QUERY;exports.EXPECTED = EXPECTED;');
|
||||
const expected = loadedFile.EXPECTED;
|
||||
const query = loadedFile.QUERY;
|
||||
|
||||
Reference in New Issue
Block a user